@globalpayments/vega 2.92.0 → 2.94.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 (556) hide show
  1. package/dist/cjs/{app-globals-2f326662.js → app-globals-d05c3410.js} +14 -9
  2. package/dist/cjs/{child-nodes-event-prevent-slimmer-b9a5b3e2.js → child-nodes-event-prevent-slimmer-e67ee84c.js} +1 -1
  3. package/dist/cjs/{code-block-6435d641.js → code-block-493c7ce7.js} +117 -31
  4. package/dist/cjs/{component-value-history-controller-slimmer.abstract-e4c9a5ba.js → component-value-history-controller-slimmer.abstract-ab21fcbf.js} +72 -39
  5. package/dist/cjs/{content-state-96ec9114.js → content-state-fc34a814.js} +61 -7
  6. package/dist/cjs/{date-required-rule-8c9e312b.js → date-required-rule-4ab06a82.js} +1 -1
  7. package/dist/cjs/{design-token-3548af29.js → design-token-d3d12fa0.js} +3 -3
  8. package/dist/cjs/{element-appender-slimmer-3bf69990.js → element-appender-slimmer-1d6323c2.js} +17 -8
  9. package/dist/cjs/{event-emit-slimmer-5bab10c2.js → event-emit-slimmer-d234a619.js} +1 -1
  10. package/dist/cjs/{form-field-controller-slimmer-e0efac05.js → form-field-controller-slimmer-d638ba12.js} +1 -1
  11. package/dist/cjs/{image-annotation-action-853f72c8.js → image-annotation-action-7c4cd316.js} +4 -4
  12. package/dist/cjs/image-extension-30a7c10f.js +56 -0
  13. package/dist/cjs/index.cjs.js +24 -19
  14. package/dist/cjs/{inject-keyboard-manager-0dccff1a.js → inject-keyboard-manager-5a105612.js} +1 -1
  15. package/dist/cjs/{internal-calendar-period-factory-6187ec4c.js → internal-calendar-period-factory-b76006f7.js} +1 -1
  16. package/dist/cjs/{internal-translation-controller-48ebfd0f.js → internal-translation-controller-eb02c3b1.js} +6 -0
  17. package/dist/cjs/{internal-vega-event-manager-7196a847.js → internal-vega-event-manager-13c4012b.js} +2 -1
  18. package/dist/cjs/{keyboard-manager-dfe8d924.js → keyboard-manager-ca76d4dc.js} +1 -1
  19. package/dist/cjs/{keyboard-manager-slimmer-4a2560a1.js → keyboard-manager-slimmer-a1223714.js} +1 -1
  20. package/dist/cjs/{link-extension-28d95849.js → link-extension-92a63cb7.js} +3 -3
  21. package/dist/cjs/loader.cjs.js +14 -14
  22. package/dist/cjs/{month-view-generator-2e59b188.js → month-view-generator-876c50d4.js} +1 -1
  23. package/dist/cjs/{public-rules-8727c42c.js → public-rules-9e1ea1d9.js} +7 -7
  24. package/dist/cjs/{range-5cb3d1e4.js → range-30219330.js} +1 -1
  25. package/dist/cjs/{responsive-format-facade-98b89142.js → responsive-format-facade-25e9f30d.js} +1 -1
  26. package/dist/cjs/{rich-text-editor-required-rule-8e4d577d.js → rich-text-editor-required-rule-23bf7485.js} +1 -1
  27. package/dist/cjs/{split-cell-operation-9e3ab88d.js → split-cell-operation-43752212.js} +3 -3
  28. package/dist/cjs/{state-border-formatter-626b0a14.js → state-border-formatter-f1ce0f3b.js} +1 -1
  29. package/dist/cjs/{string-format-strategy.abstract-981f43e1.js → string-format-strategy.abstract-b22f7754.js} +1 -1
  30. package/dist/cjs/{string-input-formatter-slimmer-fc4a0ba5.js → string-input-formatter-slimmer-d2c248f7.js} +1 -1
  31. package/dist/cjs/{string-mask-strategy-b47fa159.js → string-mask-strategy-fc01a500.js} +2 -2
  32. package/dist/cjs/{style-formatter-baf18624.js → style-formatter-73205450.js} +2 -2
  33. package/dist/cjs/{time-required-rule-e77d174f.js → time-required-rule-12d2f394.js} +1 -1
  34. package/dist/cjs/{token-extension-3aec039f.js → token-extension-ea891d54.js} +3318 -1742
  35. package/dist/cjs/{translation-slimmer-1e05769e.js → translation-slimmer-9099f56c.js} +1 -1
  36. package/dist/cjs/{type-guard-7ab48d6c.js → type-guard-f354af8b.js} +1 -1
  37. package/dist/cjs/{valid-credit-card-number-rule-52ba9c67.js → valid-credit-card-number-rule-8d370163.js} +1 -1
  38. package/dist/cjs/vega-accordion.cjs.entry.js +9 -9
  39. package/dist/cjs/vega-app-footer.cjs.entry.js +3 -3
  40. package/dist/cjs/vega-app-header-button.cjs.entry.js +9 -9
  41. package/dist/cjs/vega-banner.cjs.entry.js +3 -3
  42. package/dist/cjs/vega-box.cjs.entry.js +6 -6
  43. package/dist/cjs/vega-breadcrumb.cjs.entry.js +4 -4
  44. package/dist/cjs/vega-button-circle.cjs.entry.js +9 -9
  45. package/dist/cjs/vega-button-group_2.cjs.entry.js +4 -4
  46. package/dist/cjs/vega-button-link.cjs.entry.js +4 -4
  47. package/dist/cjs/vega-button.cjs.entry.js +12 -9
  48. package/dist/cjs/vega-calendar_5.cjs.entry.js +11 -11
  49. package/dist/cjs/vega-card.cjs.entry.js +5 -5
  50. package/dist/cjs/vega-carousel.cjs.entry.js +6 -6
  51. package/dist/cjs/vega-checkbox_2.cjs.entry.js +6 -6
  52. package/dist/cjs/vega-chip.cjs.entry.js +9 -9
  53. package/dist/cjs/vega-code-block.cjs.entry.js +12 -12
  54. package/dist/cjs/vega-color-picker.cjs.entry.js +5 -5
  55. package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +7 -7
  56. package/dist/cjs/vega-color-swatch.cjs.entry.js +5 -5
  57. package/dist/cjs/vega-combo-box.cjs.entry.js +19 -13
  58. package/dist/cjs/vega-date-picker_2.cjs.entry.js +17 -17
  59. package/dist/cjs/vega-dialog_2.cjs.entry.js +20 -9
  60. package/dist/cjs/vega-divider.cjs.entry.js +5 -5
  61. package/dist/cjs/vega-dropdown_5.cjs.entry.js +693 -195
  62. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  63. package/dist/cjs/{vega-event-id-df22d80e.js → vega-event-id-58afed7a.js} +2 -0
  64. package/dist/cjs/vega-field-label.cjs.entry.js +5 -5
  65. package/dist/cjs/vega-file-uploader.cjs.entry.js +6 -6
  66. package/dist/cjs/vega-flag-icon.cjs.entry.js +5 -5
  67. package/dist/cjs/vega-flex.cjs.entry.js +6 -6
  68. package/dist/cjs/vega-font.cjs.entry.js +5 -5
  69. package/dist/cjs/vega-form.cjs.entry.js +7 -7
  70. package/dist/cjs/vega-grid.cjs.entry.js +5 -5
  71. package/dist/cjs/vega-icon.cjs.entry.js +5 -5
  72. package/dist/cjs/vega-image-uploader.cjs.entry.js +9 -9
  73. package/dist/cjs/vega-input-credit-card.cjs.entry.js +10 -10
  74. package/dist/cjs/vega-input-numeric.cjs.entry.js +9 -9
  75. package/dist/cjs/vega-input-passcode.cjs.entry.js +9 -9
  76. package/dist/cjs/vega-input-phone-number.cjs.entry.js +8 -8
  77. package/dist/cjs/vega-input-range.cjs.entry.js +7 -7
  78. package/dist/cjs/vega-input-select.cjs.entry.js +9 -9
  79. package/dist/cjs/vega-input.cjs.entry.js +9 -9
  80. package/dist/cjs/vega-item-toggle.cjs.entry.js +3 -3
  81. package/dist/cjs/vega-left-nav_5.cjs.entry.js +316 -111
  82. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
  83. package/dist/cjs/vega-page-notification_2.cjs.entry.js +1 -1
  84. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +3 -3
  85. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +3 -3
  86. package/dist/cjs/vega-pagination.cjs.entry.js +8 -8
  87. package/dist/cjs/vega-popover_2.cjs.entry.js +11 -11
  88. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +6 -6
  89. package/dist/cjs/vega-radio_2.cjs.entry.js +9 -9
  90. package/dist/cjs/vega-rich-text-content.cjs.entry.js +7 -7
  91. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +510 -73
  92. package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +4 -4
  93. package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +8 -8
  94. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +15 -15
  95. package/dist/cjs/vega-segment-control.cjs.entry.js +3 -3
  96. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +8 -8
  97. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +6 -6
  98. package/dist/cjs/vega-sidenav_3.cjs.entry.js +6 -6
  99. package/dist/cjs/vega-signature-capture.cjs.entry.js +10 -10
  100. package/dist/cjs/vega-stepper.cjs.entry.js +6 -6
  101. package/dist/cjs/vega-tab-group_2.cjs.entry.js +4 -4
  102. package/dist/cjs/vega-table_11.cjs.entry.js +968 -425
  103. package/dist/cjs/vega-textarea.cjs.entry.js +7 -9
  104. package/dist/cjs/vega-time-picker_2.cjs.entry.js +34 -14
  105. package/dist/cjs/vega-toggle-switch.cjs.entry.js +5 -5
  106. package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
  107. package/dist/cjs/vega.cjs.js +14 -14
  108. package/dist/collection/components/vega-button/vega-button.css +4 -0
  109. package/dist/collection/components/vega-button/vega-button.js +4 -1
  110. package/dist/collection/components/vega-combo-box/slimmers/renderers/vega-combo-box-dropdown-renderer.js +4 -1
  111. package/dist/collection/components/vega-combo-box/vega-combo-box.js +7 -1
  112. package/dist/collection/components/vega-dialog/vega-dialog.js +1 -1
  113. package/dist/collection/components/vega-dropdown/constants.js +1 -0
  114. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.js +9 -0
  115. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.js +97 -4
  116. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-select-all-controller.js +219 -0
  117. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-selected-controller.js +78 -13
  118. package/dist/collection/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.js +13 -1
  119. package/dist/collection/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.js +7 -0
  120. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.js +52 -1
  121. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +4 -1
  122. package/dist/collection/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.js +5 -0
  123. package/dist/collection/components/vega-dropdown/vega-dropdown.js +126 -1
  124. package/dist/collection/components/vega-field-label/vega-field-label.js +1 -1
  125. package/dist/collection/components/vega-hint/vega-hint.js +1 -1
  126. package/dist/collection/components/vega-modal/slimmers/renderers/vega-modal-renderer.js +4 -1
  127. package/dist/collection/components/vega-modal/vega-modal.css +0 -1
  128. package/dist/collection/components/vega-modal/vega-modal.js +38 -0
  129. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-auto-collapse-controller.js +4 -6
  130. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-controller.js +23 -68
  131. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.js +74 -0
  132. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.js +16 -2
  133. package/dist/collection/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-zindex-controller.js +2 -2
  134. package/dist/collection/components/vega-nav/vega-left-nav/vega-left-nav.js +7 -2
  135. package/dist/collection/components/vega-rich-text-editor/assets/redo.js +1 -1
  136. package/dist/collection/components/vega-rich-text-editor/assets/undo.js +1 -1
  137. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-strategy.js +11 -5
  138. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-text-node-strategy.js +9 -4
  139. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/paste-content-strategy.js +61 -5
  140. package/dist/collection/components/vega-rich-text-editor/dto/actions/paste-content-action.js +1 -0
  141. package/dist/collection/components/vega-rich-text-editor/dto/annotations/custom-style-annotation.js +3 -2
  142. package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +2 -1
  143. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/code-block/code-node-filter-styles-strategy.js +1 -1
  144. package/dist/collection/components/vega-rich-text-editor/dto/nodes/node.abstract.js +2 -1
  145. package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +6 -1
  146. package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +1 -1
  147. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-interceptors/blockquote-exit-on-enter-interceptor.js +61 -0
  148. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/block-transform-to-blockquote-strategy.js +40 -0
  149. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/remove-blockquote-strategy.js +20 -0
  150. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/actions/remove-blockquote-action.js +17 -0
  151. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/actions/transform-to-blockquote-action.js +19 -0
  152. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/assets/quote-left.js +4 -0
  153. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/blockquote-extension.js +47 -0
  154. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/dto/blockquote-annotation.js +76 -0
  155. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/dto/rte-blockquote-block.js +70 -0
  156. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/element-to-dto-strategies/blockquote-to-blockquote-block-strategy.js +53 -0
  157. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/filter-styles-strategies/blockquote-block/blockquote-filter-styles-strategy.js +41 -0
  158. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-block-renderer.js +21 -0
  159. package/dist/collection/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.js +260 -0
  160. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.js +21 -7
  161. package/dist/collection/components/vega-rich-text-editor/extensions/find-replace/slimmer/renderers/find-replace-toolbar-button-renderer.js +12 -0
  162. package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-enter.js +3 -0
  163. package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-exit.js +3 -0
  164. package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/controller/fullscreen-controller.js +156 -0
  165. package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-extension.js +31 -0
  166. package/dist/collection/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.js +73 -0
  167. package/dist/collection/components/vega-rich-text-editor/extensions/image/image-extension.js +34 -0
  168. package/dist/collection/components/vega-rich-text-editor/extensions/image/type.js +1 -0
  169. package/dist/collection/components/vega-rich-text-editor/extensions/paste/assets/paste.js +3 -0
  170. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.js +145 -0
  171. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-constants.js +6 -0
  172. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-extension.js +442 -0
  173. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-renderer.js +1 -1
  174. package/dist/collection/components/vega-rich-text-editor/extensions/table/renderers/table-toolbar-popover-renderer.js +1 -0
  175. package/dist/collection/components/vega-rich-text-editor/extensions/table/table-extension.js +4 -3
  176. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-properties/slimmers/renderers/vega-rich-text-table-properties-basic-form-field-renderer.abstract.js +1 -1
  177. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/column-button-slimmer.js +1 -1
  178. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/merge-cells-button-slimmer.js +1 -1
  179. package/dist/collection/components/vega-rich-text-editor/extensions/table/vega-rich-text-table-setting/slimmers/renderers/row-button-slimmer.js +1 -1
  180. package/dist/collection/components/vega-rich-text-editor/helpers/utils.js +85 -15
  181. package/dist/collection/components/vega-rich-text-editor/public-api.js +5 -0
  182. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +2 -0
  183. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/base-handler.js +1 -1
  184. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-line-break-handler.js +1 -1
  185. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +385 -25
  186. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +69 -36
  187. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/bullets-numbers/bullets-numbers-toolbar-button-slimmer.js +1 -1
  188. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/horizontal-alignment/horizontal-alignment-toolbar-button-slimmer.js +1 -1
  189. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +59 -14
  190. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-color-toolbar-button-slimmer.js +1 -1
  191. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/text-styles-toolbar-button-slimmer.js +1 -1
  192. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.js +11 -1
  193. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.js +19 -1
  194. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.js +6 -1
  195. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.js +28 -1
  196. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +1 -1
  197. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-image-editor/vega-rich-text-image-editor.js +1 -1
  198. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/slimmers/renderers/vega-rich-text-link-editor-renderer.js +1 -1
  199. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.js +1 -1
  200. package/dist/collection/components/vega-table/slimmers/controllers/dto/column-render-input-model.js +32 -0
  201. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.js +77 -0
  202. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.js +121 -0
  203. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-cell-renderer.js +41 -14
  204. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.js +207 -7
  205. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-row-renderer.js +16 -3
  206. package/dist/collection/components/vega-table/vega-table-cell/vega-table-cell.js +113 -11
  207. package/dist/collection/components/vega-table/vega-table-expand-row/slimmers/controllers/vega-table-expand-row-col-span-controller.js +11 -2
  208. package/dist/collection/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.js +5 -1
  209. package/dist/collection/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.js +22 -1
  210. package/dist/collection/components/vega-table/vega-table.css +5 -0
  211. package/dist/collection/components/vega-table/vega-table.js +5 -0
  212. package/dist/collection/components/vega-text/vega-text.js +1 -1
  213. package/dist/collection/components/vega-textarea/vega-textarea.js +1 -3
  214. package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-range-dropdown-controller.js +4 -0
  215. package/dist/collection/components/vega-time-picker/slimmers/controllers/vega-time-picker-single-dropdown-controller.js +4 -0
  216. package/dist/collection/components/vega-time-picker/vega-time-picker.js +39 -0
  217. package/dist/collection/constants/ui.js +1 -0
  218. package/dist/collection/global/scripts/before-vega-load.js +8 -0
  219. package/dist/collection/helpers/backdrop/index.js +1 -0
  220. package/dist/collection/helpers/backdrop/shared-backdrop-manager.js +163 -0
  221. package/dist/collection/helpers/event-manager/event-id/component-event-id-map.js +2 -1
  222. package/dist/collection/helpers/event-manager/event-id/vega-event-id.js +1 -0
  223. package/dist/collection/helpers/slimmers/element-appender/element-appender-slimmer.js +11 -4
  224. package/dist/collection/helpers/translation/locales/en.js +6 -0
  225. package/dist/collection/helpers/ui/element-appender.js +5 -2
  226. package/dist/esm/{app-globals-5e0d319a.js → app-globals-f2336686.js} +14 -9
  227. package/dist/esm/{child-nodes-event-prevent-slimmer-f24618c5.js → child-nodes-event-prevent-slimmer-96c14f5a.js} +1 -1
  228. package/dist/esm/{code-block-b71b2aa4.js → code-block-e12588fe.js} +117 -32
  229. package/dist/esm/{component-value-history-controller-slimmer.abstract-282df6e5.js → component-value-history-controller-slimmer.abstract-4e8eb313.js} +72 -39
  230. package/dist/esm/{content-state-909099f8.js → content-state-8032467a.js} +61 -7
  231. package/dist/esm/{date-required-rule-15edb04a.js → date-required-rule-b88e1650.js} +1 -1
  232. package/dist/esm/{design-token-cb5ed6b9.js → design-token-76bd217c.js} +3 -3
  233. package/dist/esm/{element-appender-slimmer-e41120ee.js → element-appender-slimmer-7fcb944b.js} +17 -8
  234. package/dist/esm/{event-emit-slimmer-03deba18.js → event-emit-slimmer-db4a82e0.js} +1 -1
  235. package/dist/esm/{form-field-controller-slimmer-cfe1d8a7.js → form-field-controller-slimmer-395c23e3.js} +1 -1
  236. package/dist/esm/{image-annotation-action-98232dc4.js → image-annotation-action-b3b6c308.js} +4 -4
  237. package/dist/esm/image-extension-b6c7e4a7.js +53 -0
  238. package/dist/esm/index.js +19 -19
  239. package/dist/esm/{inject-keyboard-manager-13cc77ab.js → inject-keyboard-manager-86126b5b.js} +1 -1
  240. package/dist/esm/{internal-calendar-period-factory-c3d70f3b.js → internal-calendar-period-factory-3a07dba0.js} +1 -1
  241. package/dist/esm/{internal-translation-controller-8e8a514a.js → internal-translation-controller-16709132.js} +6 -0
  242. package/dist/esm/{internal-vega-event-manager-75e5e3bb.js → internal-vega-event-manager-48690e5b.js} +2 -1
  243. package/dist/esm/{keyboard-manager-fe885db1.js → keyboard-manager-a0c3e1cf.js} +1 -1
  244. package/dist/esm/{keyboard-manager-slimmer-61d4c79b.js → keyboard-manager-slimmer-f3f66c15.js} +1 -1
  245. package/dist/esm/{link-extension-f1a3bea7.js → link-extension-97fcb8fb.js} +3 -3
  246. package/dist/esm/loader.js +14 -14
  247. package/dist/esm/{month-view-generator-85eecb95.js → month-view-generator-fd0e1856.js} +1 -1
  248. package/dist/esm/{public-rules-323bea4b.js → public-rules-c06f0d2a.js} +7 -7
  249. package/dist/esm/{range-e63068d1.js → range-e999837f.js} +1 -1
  250. package/dist/esm/{responsive-format-facade-fb424f5b.js → responsive-format-facade-ced96b0b.js} +1 -1
  251. package/dist/esm/{rich-text-editor-required-rule-0edb8ba7.js → rich-text-editor-required-rule-71f8ee98.js} +1 -1
  252. package/dist/esm/{split-cell-operation-93b4d775.js → split-cell-operation-359f8082.js} +3 -3
  253. package/dist/esm/{state-border-formatter-1a528ca4.js → state-border-formatter-b680e922.js} +1 -1
  254. package/dist/esm/{string-format-strategy.abstract-72fc98aa.js → string-format-strategy.abstract-23faab71.js} +1 -1
  255. package/dist/esm/{string-input-formatter-slimmer-b0c480d8.js → string-input-formatter-slimmer-4b4866a6.js} +1 -1
  256. package/dist/esm/{string-mask-strategy-4e00c173.js → string-mask-strategy-66586cd8.js} +2 -2
  257. package/dist/esm/{style-formatter-5c1bea8d.js → style-formatter-f4e16af5.js} +2 -2
  258. package/dist/esm/{time-required-rule-df500b14.js → time-required-rule-6e80a9ab.js} +1 -1
  259. package/dist/esm/{token-extension-32d1fa56.js → token-extension-9896879b.js} +3314 -1742
  260. package/dist/esm/{translation-slimmer-60408f13.js → translation-slimmer-21748a0e.js} +1 -1
  261. package/dist/esm/{type-guard-91087018.js → type-guard-ec5e8628.js} +1 -1
  262. package/dist/esm/{valid-credit-card-number-rule-681ecb75.js → valid-credit-card-number-rule-ca5a47d6.js} +1 -1
  263. package/dist/esm/vega-accordion.entry.js +9 -9
  264. package/dist/esm/vega-app-footer.entry.js +3 -3
  265. package/dist/esm/vega-app-header-button.entry.js +9 -9
  266. package/dist/esm/vega-banner.entry.js +3 -3
  267. package/dist/esm/vega-box.entry.js +6 -6
  268. package/dist/esm/vega-breadcrumb.entry.js +4 -4
  269. package/dist/esm/vega-button-circle.entry.js +9 -9
  270. package/dist/esm/vega-button-group_2.entry.js +4 -4
  271. package/dist/esm/vega-button-link.entry.js +4 -4
  272. package/dist/esm/vega-button.entry.js +12 -9
  273. package/dist/esm/vega-calendar_5.entry.js +11 -11
  274. package/dist/esm/vega-card.entry.js +5 -5
  275. package/dist/esm/vega-carousel.entry.js +6 -6
  276. package/dist/esm/vega-checkbox_2.entry.js +6 -6
  277. package/dist/esm/vega-chip.entry.js +9 -9
  278. package/dist/esm/vega-code-block.entry.js +12 -12
  279. package/dist/esm/vega-color-picker.entry.js +5 -5
  280. package/dist/esm/vega-color-swatch-picker.entry.js +7 -7
  281. package/dist/esm/vega-color-swatch.entry.js +5 -5
  282. package/dist/esm/vega-combo-box.entry.js +19 -13
  283. package/dist/esm/vega-date-picker_2.entry.js +17 -17
  284. package/dist/esm/vega-dialog_2.entry.js +20 -9
  285. package/dist/esm/vega-divider.entry.js +5 -5
  286. package/dist/esm/vega-dropdown_5.entry.js +695 -197
  287. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  288. package/dist/esm/{vega-event-id-d3017041.js → vega-event-id-270fe47e.js} +2 -1
  289. package/dist/esm/vega-field-label.entry.js +5 -5
  290. package/dist/esm/vega-file-uploader.entry.js +6 -6
  291. package/dist/esm/vega-flag-icon.entry.js +5 -5
  292. package/dist/esm/vega-flex.entry.js +6 -6
  293. package/dist/esm/vega-font.entry.js +5 -5
  294. package/dist/esm/vega-form.entry.js +7 -7
  295. package/dist/esm/vega-grid.entry.js +5 -5
  296. package/dist/esm/vega-icon.entry.js +5 -5
  297. package/dist/esm/vega-image-uploader.entry.js +9 -9
  298. package/dist/esm/vega-input-credit-card.entry.js +10 -10
  299. package/dist/esm/vega-input-numeric.entry.js +9 -9
  300. package/dist/esm/vega-input-passcode.entry.js +9 -9
  301. package/dist/esm/vega-input-phone-number.entry.js +8 -8
  302. package/dist/esm/vega-input-range.entry.js +7 -7
  303. package/dist/esm/vega-input-select.entry.js +9 -9
  304. package/dist/esm/vega-input.entry.js +9 -9
  305. package/dist/esm/vega-item-toggle.entry.js +3 -3
  306. package/dist/esm/vega-left-nav_5.entry.js +316 -111
  307. package/dist/esm/vega-loader-wrapper_2.entry.js +3 -3
  308. package/dist/esm/vega-page-notification_2.entry.js +1 -1
  309. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +3 -3
  310. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +3 -3
  311. package/dist/esm/vega-pagination.entry.js +8 -8
  312. package/dist/esm/vega-popover_2.entry.js +11 -11
  313. package/dist/esm/vega-progress-tracker_2.entry.js +6 -6
  314. package/dist/esm/vega-radio_2.entry.js +9 -9
  315. package/dist/esm/vega-rich-text-content.entry.js +7 -7
  316. package/dist/esm/vega-rich-text-editor_4.entry.js +507 -70
  317. package/dist/esm/vega-rich-text-find-replace-panel.entry.js +4 -4
  318. package/dist/esm/vega-rich-text-special-characters-panel.entry.js +8 -8
  319. package/dist/esm/vega-rich-text-table-properties_3.entry.js +15 -15
  320. package/dist/esm/vega-segment-control.entry.js +3 -3
  321. package/dist/esm/vega-selection-chip_2.entry.js +8 -8
  322. package/dist/esm/vega-selection-tile_2.entry.js +6 -6
  323. package/dist/esm/vega-sidenav_3.entry.js +6 -6
  324. package/dist/esm/vega-signature-capture.entry.js +10 -10
  325. package/dist/esm/vega-stepper.entry.js +6 -6
  326. package/dist/esm/vega-tab-group_2.entry.js +4 -4
  327. package/dist/esm/vega-table_11.entry.js +968 -425
  328. package/dist/esm/vega-textarea.entry.js +7 -9
  329. package/dist/esm/vega-time-picker_2.entry.js +34 -14
  330. package/dist/esm/vega-toggle-switch.entry.js +5 -5
  331. package/dist/esm/vega-tooltip_2.entry.js +6 -6
  332. package/dist/esm/vega.js +14 -14
  333. package/dist/sri/vega-sri-manifest.json +356 -356
  334. package/dist/types/components/vega-combo-box/types.d.ts +6 -1
  335. package/dist/types/components/vega-combo-box/vega-combo-box.d.ts +1 -0
  336. package/dist/types/components/vega-dropdown/constants.d.ts +1 -0
  337. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-appender-controller.d.ts +2 -0
  338. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-children-controller.d.ts +36 -0
  339. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-select-all-controller.d.ts +107 -0
  340. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-selected-controller.d.ts +17 -0
  341. package/dist/types/components/vega-dropdown/slimmers/controllers/vega-dropdown-source-controller.d.ts +5 -0
  342. package/dist/types/components/vega-dropdown/slimmers/renderers/vega-dropdown-list-renderer.d.ts +2 -0
  343. package/dist/types/components/vega-dropdown/types.d.ts +8 -0
  344. package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/controllers/vega-dropdown-item-state-controller.d.ts +25 -0
  345. package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.d.ts +1 -0
  346. package/dist/types/components/vega-dropdown/vega-dropdown-item/vega-dropdown-item.d.ts +4 -0
  347. package/dist/types/components/vega-dropdown/vega-dropdown.d.ts +48 -0
  348. package/dist/types/components/vega-modal/slimmers/renderers/vega-modal-renderer.d.ts +2 -1
  349. package/dist/types/components/vega-modal/vega-modal.d.ts +9 -1
  350. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-auto-collapse-controller.d.ts +0 -1
  351. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-controller.d.ts +12 -19
  352. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-backdrop-manager.d.ts +41 -0
  353. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-open-state-controller.d.ts +4 -1
  354. package/dist/types/components/vega-nav/vega-left-nav/slimmers/controllers/vega-left-nav-zindex-controller.d.ts +1 -1
  355. package/dist/types/components/vega-nav/vega-left-nav/vega-left-nav.d.ts +2 -0
  356. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/paste-content-strategy.d.ts +14 -4
  357. package/dist/types/components/vega-rich-text-editor/dto/actions/paste-content-action.d.ts +7 -0
  358. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-interceptors/blockquote-exit-on-enter-interceptor.d.ts +34 -0
  359. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/block-transform-to-blockquote-strategy.d.ts +13 -0
  360. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/action-handler-strategies/remove-blockquote-strategy.d.ts +13 -0
  361. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/actions/remove-blockquote-action.d.ts +14 -0
  362. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/actions/transform-to-blockquote-action.d.ts +18 -0
  363. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/assets/quote-left.d.ts +3 -0
  364. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/blockquote-extension.d.ts +9 -0
  365. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/dto/blockquote-annotation.d.ts +48 -0
  366. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/dto/rte-blockquote-block.d.ts +56 -0
  367. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/element-to-dto-strategies/blockquote-to-blockquote-block-strategy.d.ts +35 -0
  368. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/filter-styles-strategies/blockquote-block/blockquote-filter-styles-strategy.d.ts +31 -0
  369. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-block-renderer.d.ts +18 -0
  370. package/dist/types/components/vega-rich-text-editor/extensions/blockquote/renderers/blockquote-toolbar-button-renderer.d.ts +113 -0
  371. package/dist/types/components/vega-rich-text-editor/extensions/find-replace/slimmer/controllers/helper/find-replace-highlight-manager.d.ts +15 -4
  372. package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-enter.d.ts +3 -0
  373. package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/assets/fullscreen-exit.d.ts +3 -0
  374. package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/controller/fullscreen-controller.d.ts +63 -0
  375. package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-extension.d.ts +20 -0
  376. package/dist/types/components/vega-rich-text-editor/extensions/fullscreen/fullscreen-toolbar-button-renderer.d.ts +40 -0
  377. package/dist/types/components/vega-rich-text-editor/extensions/image/image-extension.d.ts +27 -0
  378. package/dist/types/components/vega-rich-text-editor/extensions/image/type.d.ts +13 -0
  379. package/dist/types/components/vega-rich-text-editor/extensions/paste/assets/paste.d.ts +3 -0
  380. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.d.ts +58 -0
  381. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-constants.d.ts +6 -0
  382. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-extension.d.ts +150 -0
  383. package/dist/types/components/vega-rich-text-editor/helpers/utils.d.ts +26 -0
  384. package/dist/types/components/vega-rich-text-editor/interface.d.ts +20 -0
  385. package/dist/types/components/vega-rich-text-editor/public-api.d.ts +5 -0
  386. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.d.ts +114 -3
  387. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/selection-controller.d.ts +22 -13
  388. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.d.ts +10 -2
  389. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-renderer.d.ts +5 -0
  390. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.d.ts +8 -0
  391. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/slimmers/renderers/vega-rich-text-editor-toolbar-button-renderer.d.ts +1 -0
  392. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor-toolbar-button/vega-rich-text-editor-toolbar-button.d.ts +6 -0
  393. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +4 -4
  394. package/dist/types/components/vega-rich-text-editor/vega-rich-text-image-editor/vega-rich-text-image-editor.d.ts +1 -1
  395. package/dist/types/components/vega-rich-text-editor/vega-rich-text-link-editor/vega-rich-text-link-editor.d.ts +1 -1
  396. package/dist/types/components/vega-table/interface.d.ts +31 -0
  397. package/dist/types/components/vega-table/slimmers/controllers/dto/column-render-input-model.d.ts +13 -0
  398. package/dist/types/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.d.ts +43 -0
  399. package/dist/types/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.d.ts +38 -0
  400. package/dist/types/components/vega-table/slimmers/renderers/vega-table-cell-renderer.d.ts +11 -2
  401. package/dist/types/components/vega-table/slimmers/renderers/vega-table-pinned-renderer.d.ts +4 -0
  402. package/dist/types/components/vega-table/slimmers/renderers/vega-table-row-renderer.d.ts +1 -0
  403. package/dist/types/components/vega-table/vega-table-cell/slimmers/controllers/vega-table-row-state-subscriber.d.ts +1 -1
  404. package/dist/types/components/vega-table/vega-table-cell/vega-table-cell.d.ts +23 -0
  405. package/dist/types/components/vega-table/vega-table-foot-cell/slimmers/renderers/vega-table-foot-cell-renderer.d.ts +1 -0
  406. package/dist/types/components/vega-table/vega-table-foot-cell/vega-table-foot-cell.d.ts +9 -0
  407. package/dist/types/components/vega-table/vega-table.d.ts +2 -0
  408. package/dist/types/components/vega-time-picker/slimmers/controllers/vega-time-picker-range-dropdown-controller.d.ts +1 -0
  409. package/dist/types/components/vega-time-picker/slimmers/controllers/vega-time-picker-single-dropdown-controller.d.ts +1 -0
  410. package/dist/types/components/vega-time-picker/types.d.ts +7 -0
  411. package/dist/types/components/vega-time-picker/vega-time-picker.d.ts +11 -1
  412. package/dist/types/components.d.ts +90 -3
  413. package/dist/types/constants/ui.d.ts +1 -1
  414. package/dist/types/helpers/backdrop/index.d.ts +1 -0
  415. package/dist/types/helpers/backdrop/shared-backdrop-manager.d.ts +67 -0
  416. package/dist/types/helpers/event-manager/event-id/vega-event-id.d.ts +1 -0
  417. package/dist/types/helpers/translation/interface.d.ts +7 -0
  418. package/dist/types/helpers/ui/element-appender.d.ts +4 -1
  419. package/dist/types/types/components.type.d.ts +5 -1
  420. package/dist/vega/index.esm.js +1 -1
  421. package/dist/vega/{p-92823583.js → p-02355de8.js} +1 -1
  422. package/dist/vega/{p-481601c0.entry.js → p-0af32f31.entry.js} +1 -1
  423. package/dist/vega/{p-438b7404.entry.js → p-0b311599.entry.js} +1 -1
  424. package/dist/vega/{p-56cf1a65.entry.js → p-0b9c7c79.entry.js} +1 -1
  425. package/dist/vega/p-0be4df0a.js +1 -0
  426. package/dist/vega/p-0d18368b.js +1 -0
  427. package/dist/vega/{p-9fafc956.entry.js → p-1232b553.entry.js} +1 -1
  428. package/dist/vega/{p-70817cf5.js → p-140616fe.js} +1 -1
  429. package/dist/vega/{p-f365601c.entry.js → p-14559974.entry.js} +1 -1
  430. package/dist/vega/{p-aa32f2f3.js → p-14baa886.js} +1 -1
  431. package/dist/vega/p-2364be92.entry.js +1 -0
  432. package/dist/vega/{p-c0629528.entry.js → p-26c7fe8b.entry.js} +1 -1
  433. package/dist/vega/p-270697c0.entry.js +1 -0
  434. package/dist/vega/p-282b37cb.js +1 -0
  435. package/dist/vega/{p-06c2ce2c.entry.js → p-288d65ad.entry.js} +1 -1
  436. package/dist/vega/p-2bf17505.entry.js +1 -0
  437. package/dist/vega/{p-c78aeaf3.entry.js → p-2dc5edd0.entry.js} +1 -1
  438. package/dist/vega/{p-136226f8.js → p-320091b7.js} +1 -1
  439. package/dist/vega/{p-b799fc1f.entry.js → p-341a6b32.entry.js} +1 -1
  440. package/dist/vega/p-36949349.js +1 -0
  441. package/dist/vega/p-38c9d782.js +1 -0
  442. package/dist/vega/{p-a361456d.js → p-3c309a38.js} +1 -1
  443. package/dist/vega/{p-71e2a3ec.js → p-3dee1e55.js} +1 -1
  444. package/dist/vega/{p-ef2b9846.entry.js → p-3e8baeac.entry.js} +1 -1
  445. package/dist/vega/{p-8f078d0d.entry.js → p-44439ecc.entry.js} +1 -1
  446. package/dist/vega/{p-68e16c70.entry.js → p-45e8424a.entry.js} +1 -1
  447. package/dist/vega/{p-ce7e9515.entry.js → p-46fe3154.entry.js} +1 -1
  448. package/dist/vega/{p-c2e0f8b7.entry.js → p-48ee3e24.entry.js} +1 -1
  449. package/dist/vega/{p-e371738b.js → p-4fe40b76.js} +1 -1
  450. package/dist/vega/p-4ff48b84.js +1 -0
  451. package/dist/vega/{p-2e58d99e.entry.js → p-5107277d.entry.js} +1 -1
  452. package/dist/vega/{p-2def8e3e.js → p-51b68d25.js} +1 -1
  453. package/dist/vega/p-52c6a399.entry.js +1 -0
  454. package/dist/vega/p-579cdeae.js +1 -0
  455. package/dist/vega/{p-e9cee498.entry.js → p-595998d9.entry.js} +1 -1
  456. package/dist/vega/{p-7798254d.entry.js → p-5db61a12.entry.js} +1 -1
  457. package/dist/vega/{p-e41d9d0e.entry.js → p-5df2d6a1.entry.js} +1 -1
  458. package/dist/vega/p-5f377954.js +1 -1
  459. package/dist/vega/{p-d7369441.js → p-61ce8029.js} +1 -1
  460. package/dist/vega/{p-2da12975.entry.js → p-62d6e063.entry.js} +1 -1
  461. package/dist/vega/p-698fbd73.js +1 -0
  462. package/dist/vega/p-6ad7144a.entry.js +1 -0
  463. package/dist/vega/{p-f70f7ad8.entry.js → p-6c9c2f8c.entry.js} +1 -1
  464. package/dist/vega/{p-b730bf6e.js → p-6cde45fc.js} +1 -1
  465. package/dist/vega/p-6dfe2407.js +1 -0
  466. package/dist/vega/{p-d3c8b871.entry.js → p-6f01a71a.entry.js} +1 -1
  467. package/dist/vega/p-6f70a10f.entry.js +1 -0
  468. package/dist/vega/p-73f2c3c0.entry.js +1 -0
  469. package/dist/vega/{p-de885ef2.js → p-75e33859.js} +1 -1
  470. package/dist/vega/p-762ea523.entry.js +1 -0
  471. package/dist/vega/{p-f6bccb06.entry.js → p-782eb312.entry.js} +1 -1
  472. package/dist/vega/p-7a88a3d3.entry.js +1 -0
  473. package/dist/vega/{p-5038b6d7.entry.js → p-7b57a845.entry.js} +1 -1
  474. package/dist/vega/p-83a16285.entry.js +1 -0
  475. package/dist/vega/{p-8da860f6.js → p-8720816e.js} +1 -1
  476. package/dist/vega/{p-9219201a.entry.js → p-892edf88.entry.js} +1 -1
  477. package/dist/vega/{p-625351a3.entry.js → p-8c083255.entry.js} +1 -1
  478. package/dist/vega/{p-4d9061fb.js → p-8db904dc.js} +1 -1
  479. package/dist/vega/{p-22f73e6e.entry.js → p-91287214.entry.js} +1 -1
  480. package/dist/vega/{p-5946fadf.js → p-919cddc3.js} +1 -1
  481. package/dist/vega/{p-fc5dfb52.entry.js → p-95913e3c.entry.js} +1 -1
  482. package/dist/vega/p-97215133.js +1 -0
  483. package/dist/vega/{p-5829a66d.entry.js → p-9bdc6e11.entry.js} +1 -1
  484. package/dist/vega/{p-8b9a8603.entry.js → p-9d18ba7f.entry.js} +1 -1
  485. package/dist/vega/{p-f7739cbb.entry.js → p-9dca874d.entry.js} +1 -1
  486. package/dist/vega/{p-c67ce78c.entry.js → p-9f38448c.entry.js} +1 -1
  487. package/dist/vega/{p-e3803943.js → p-9f7154d2.js} +1 -1
  488. package/dist/vega/{p-2314494a.entry.js → p-a057285e.entry.js} +1 -1
  489. package/dist/vega/{p-f515d189.entry.js → p-a0a58295.entry.js} +1 -1
  490. package/dist/vega/p-a7209700.js +1 -0
  491. package/dist/vega/{p-40501057.entry.js → p-a890d60b.entry.js} +1 -1
  492. package/dist/vega/{p-450bf94d.entry.js → p-addbca58.entry.js} +1 -1
  493. package/dist/vega/{p-45ab490c.js → p-b1eb9ff0.js} +1 -1
  494. package/dist/vega/{p-5beec481.js → p-b1ff70bf.js} +1 -1
  495. package/dist/vega/{p-9cdedcfb.entry.js → p-b39d4a88.entry.js} +1 -1
  496. package/dist/vega/{p-ea22cba0.js → p-b4e7c967.js} +1 -1
  497. package/dist/vega/{p-228c5de8.js → p-b775e51f.js} +1 -1
  498. package/dist/vega/{p-43c3848f.entry.js → p-b8f8e480.entry.js} +1 -1
  499. package/dist/vega/{p-8d69b201.js → p-ba662fe5.js} +1 -1
  500. package/dist/vega/p-c66d2a1e.js +1 -0
  501. package/dist/vega/{p-a268a4fb.entry.js → p-c67b9aba.entry.js} +1 -1
  502. package/dist/vega/{p-2353b64f.entry.js → p-c9c6daa6.entry.js} +1 -1
  503. package/dist/vega/p-c9daabe1.entry.js +1 -0
  504. package/dist/vega/{p-37dffdf6.entry.js → p-cad5222a.entry.js} +1 -1
  505. package/dist/vega/{p-e160a727.entry.js → p-cb90163a.entry.js} +1 -1
  506. package/dist/vega/{p-5545a235.entry.js → p-d08ffdf1.entry.js} +1 -1
  507. package/dist/vega/{p-30561e1d.entry.js → p-d3a36d19.entry.js} +1 -1
  508. package/dist/vega/{p-cd1844ad.entry.js → p-e235020b.entry.js} +1 -1
  509. package/dist/vega/{p-9440a8a5.entry.js → p-e4266b45.entry.js} +1 -1
  510. package/dist/vega/{p-18413b62.entry.js → p-e48a870f.entry.js} +1 -1
  511. package/dist/vega/{p-590c8720.entry.js → p-e8ee70c5.entry.js} +1 -1
  512. package/dist/vega/p-ed103a1a.entry.js +1 -0
  513. package/dist/vega/p-f05a193e.entry.js +1 -0
  514. package/dist/vega/{p-7be548a7.js → p-f1974321.js} +1 -1
  515. package/dist/vega/{p-916dfa7e.entry.js → p-f246f125.entry.js} +1 -1
  516. package/dist/vega/p-f4da615a.js +3 -0
  517. package/dist/vega/{p-d0ce752f.entry.js → p-f5d7b89f.entry.js} +1 -1
  518. package/dist/vega/{p-c8eaf91c.entry.js → p-f651df3b.entry.js} +1 -1
  519. package/dist/vega/{p-93dfab05.js → p-f7e459cd.js} +1 -1
  520. package/dist/vega/{p-b6ebfd5c.entry.js → p-f8a29127.entry.js} +1 -1
  521. package/dist/vega/p-f906a7bc.entry.js +1 -0
  522. package/dist/vega/{p-d20587b4.entry.js → p-f96d0503.entry.js} +1 -1
  523. package/dist/vega/{p-cd9fb2ca.entry.js → p-fbd3be00.entry.js} +1 -1
  524. package/dist/vega/{p-f0bc2bbb.js → p-fe24b459.js} +1 -1
  525. package/dist/vega/vega.esm.js +1 -1
  526. package/package.json +2 -16
  527. package/readme.md +0 -5
  528. package/dist/cjs/replace-selected-text-action-a31563ed.js +0 -20
  529. package/dist/esm/replace-selected-text-action-c0817b2b.js +0 -18
  530. package/dist/vega/p-0179f55d.js +0 -1
  531. package/dist/vega/p-07b56f2b.entry.js +0 -1
  532. package/dist/vega/p-209e0166.js +0 -1
  533. package/dist/vega/p-35df0f0a.entry.js +0 -1
  534. package/dist/vega/p-3cf4339a.entry.js +0 -1
  535. package/dist/vega/p-4953bb1a.js +0 -1
  536. package/dist/vega/p-4e39adf5.entry.js +0 -1
  537. package/dist/vega/p-5319da71.entry.js +0 -1
  538. package/dist/vega/p-53c76d9d.entry.js +0 -1
  539. package/dist/vega/p-5de1acdb.js +0 -1
  540. package/dist/vega/p-5df9047c.js +0 -1
  541. package/dist/vega/p-683cfe24.js +0 -1
  542. package/dist/vega/p-802bf369.js +0 -1
  543. package/dist/vega/p-82279b03.entry.js +0 -1
  544. package/dist/vega/p-8509c140.entry.js +0 -1
  545. package/dist/vega/p-8aa07ed0.js +0 -1
  546. package/dist/vega/p-970115d6.js +0 -1
  547. package/dist/vega/p-9b1d718c.entry.js +0 -1
  548. package/dist/vega/p-c78e8081.entry.js +0 -1
  549. package/dist/vega/p-ca9852bb.js +0 -1
  550. package/dist/vega/p-dee38163.entry.js +0 -1
  551. package/dist/vega/p-e5502873.entry.js +0 -1
  552. package/dist/vega/p-ea54ce0a.js +0 -3
  553. package/dist/vega/p-ee3155bd.js +0 -1
  554. package/dist/vega/p-eee01ba7.entry.js +0 -1
  555. package/dist/vega/p-f4a01959.js +0 -1
  556. package/dist/vega/p-f5aefb2f.entry.js +0 -1
@@ -89,6 +89,6 @@ export class InsertLineBreakHandler extends BaseHandler {
89
89
  getNextRTENode(lineBreakNode) {
90
90
  const index = lineBreakNode.parent.children.indexOf(lineBreakNode);
91
91
  const nextNode = lineBreakNode.parent.children[index + 1];
92
- return nextNode || lineBreakNode;
92
+ return nextNode && nextNode.isContentEditable() ? nextNode : lineBreakNode;
93
93
  }
94
94
  }
@@ -3,6 +3,11 @@ import { AppendChildrenAction } from '../../../../dto/actions/append-child-nodes
3
3
  import ElementToDtoStrategyProcessor from '../element-to-dto-strategy/element-to-dto-strategy-processor';
4
4
  import { StylePreservator } from '../../../../../../helpers/csp/styles-preservator';
5
5
  import { PasteContentAction } from '../../../../dto/actions/paste-content-action';
6
+ import { RTETextBlock } from '../../../../dto/blocks/text-block';
7
+ import { RTETextNode } from '../../../../dto/nodes/text-node';
8
+ import { generateUUID } from '../../../../../../utils/misc';
9
+ import { escapeHtml } from '../../../../helpers/utils';
10
+ import { ReplaceSelectedTextAction } from '../../../../dto/actions/replace-selected-text-action';
6
11
  /**
7
12
  * Handle user paste
8
13
  */
@@ -13,19 +18,108 @@ export class InsertPasteHandler extends BaseHandler {
13
18
  * @param {InputEvent} event - Paste event.
14
19
  */
15
20
  handleEvent(event) {
21
+ const currentRange = this.selectionController.getCurrentRange();
22
+ const payload = this.getPastePayload(event);
23
+ if (this.insertPlainTextInline(payload, currentRange)) {
24
+ return;
25
+ }
16
26
  const blocks = this.parsePastedElements(event);
17
- const { startContainer } = this.selectionController.getCurrentRange();
18
- if (this.isRootContainer(startContainer)) {
27
+ const startContainer = (currentRange === null || currentRange === void 0 ? void 0 : currentRange.startContainer) || undefined;
28
+ if (!startContainer) {
29
+ // When the selection/range is unavailable (e.g. the caret was lost while
30
+ // the paste-mode chooser had focus), still append the pasted content to
31
+ // the root so the paste is never silently dropped.
32
+ this.insertBlocksToRoot(blocks);
33
+ }
34
+ else if (this.isRootContainer(startContainer)) {
19
35
  this.insertBlocksToRoot(blocks);
20
36
  // TODO: Need to check below logic, it seems not correct https://gethired.atlassian.net/browse/VD-7779
21
37
  }
22
38
  else if (this.isEmptyParagraph(startContainer)) {
23
- this.insertBlocksBeforeEmptyBlock(blocks);
39
+ this.insertBlocksBeforeEmptyBlock(blocks, currentRange);
24
40
  }
25
41
  else {
26
- this.insertBlocksToContent(blocks);
42
+ this.insertBlocksToContent(blocks, currentRange);
27
43
  }
28
44
  }
45
+ /**
46
+ * Inserts plain-text paste content into the current text node at caret position.
47
+ *
48
+ * @param {RTEPastePayload} payload - Clipboard payload.
49
+ * @param {RTERange} currentRange - Current selection range.
50
+ * @returns {boolean} True when inline insertion is handled.
51
+ */
52
+ insertPlainTextInline(payload, currentRange) {
53
+ var _a, _b;
54
+ const selectedNodes = ((_b = (_a = this.selectionController).getSelectedNodes) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
55
+ if (!this.shouldPasteAsInlinePlainText(payload, currentRange, selectedNodes)) {
56
+ return false;
57
+ }
58
+ const text = payload.text.replace(/\r\n?/g, '\n');
59
+ const cursorNode = selectedNodes.find((node) => node instanceof RTETextNode) || currentRange.startNode;
60
+ if (!(cursorNode instanceof RTETextNode)) {
61
+ return false;
62
+ }
63
+ cursorNode.apply(new ReplaceSelectedTextAction(text, currentRange));
64
+ this.selectionController.enqueueSelectionRangeFutureState(cursorNode, currentRange.startOffset + text.length);
65
+ return true;
66
+ }
67
+ /**
68
+ * Determines whether the payload should be inserted as inline plain text.
69
+ *
70
+ * @param {RTEPastePayload} payload - Clipboard payload.
71
+ * @param {RTERange} currentRange - Current selection range.
72
+ * @param {RTENode[]} selectedNodes - Currently selected nodes.
73
+ * @returns {boolean} True when inline plain-text insertion should be used.
74
+ */
75
+ shouldPasteAsInlinePlainText(payload, currentRange, selectedNodes = []) {
76
+ if (!currentRange || !currentRange.startContainer) {
77
+ return false;
78
+ }
79
+ if (this.isRootContainer(currentRange.startContainer)) {
80
+ return false;
81
+ }
82
+ const text = (payload.text || '').replace(/\r\n?/g, '\n');
83
+ if (!text) {
84
+ return false;
85
+ }
86
+ const html = payload.html || '';
87
+ if (!html) {
88
+ return true;
89
+ }
90
+ const hasTextNodeSelection = selectedNodes.some((node) => node instanceof RTETextNode) ||
91
+ currentRange.startNode instanceof RTETextNode;
92
+ if (!hasTextNodeSelection) {
93
+ return false;
94
+ }
95
+ // Use the inline plain‑text path only when HTML and plain text match exactly and no formatting exists;
96
+ // otherwise route through the block path to preserve styles.
97
+ const analysis = this.analyzeHtmlContent(html);
98
+ return analysis.plainText === text && !analysis.hasFormatting;
99
+ }
100
+ /**
101
+ * Analyzes HTML content to extract plain text and detect inline formatting,
102
+ * parsing the HTML once to avoid redundant StylePreservation and DOMParser calls.
103
+ *
104
+ * @param {string} html - Clipboard text/html payload.
105
+ * @returns {HtmlAnalysisResult} Analysis result with plainText and hasFormatting properties.
106
+ */
107
+ analyzeHtmlContent(html) {
108
+ const safeHtml = StylePreservator.preserve(html).getProcessedHtml();
109
+ const parsedDoc = new DOMParser().parseFromString(safeHtml, 'text/html');
110
+ const body = parsedDoc.body;
111
+ // Extract plain text from the parsed document
112
+ const plainText = (body.textContent || '').replace(/\r\n?/g, '\n');
113
+ // Check for rich inline formatting
114
+ let hasFormatting = Boolean(body.querySelector('b,strong,i,em,s,del,strike,u,mark'));
115
+ if (!hasFormatting) {
116
+ hasFormatting = Array.from(body.querySelectorAll('span')).some((span) => {
117
+ const style = span.getAttribute('style') || span.getAttribute('data-style') || '';
118
+ return this.styleContainsRichFormatting(style);
119
+ });
120
+ }
121
+ return { plainText, hasFormatting };
122
+ }
29
123
  /**
30
124
  * Insert the blocks to root
31
125
  *
@@ -35,37 +129,54 @@ export class InsertPasteHandler extends BaseHandler {
35
129
  this.currentState.apply(new AppendChildrenAction(blocks));
36
130
  }
37
131
  /**
38
- * Insert the blocks to content
132
+ * Insert the blocks into the current content block at the specified range.
39
133
  *
40
134
  * @param { RTEContentBlock[]} blocks - blocks
135
+ * @param { RTERange } rteRange - rteRange
41
136
  */
42
- insertBlocksToContent(blocks) {
43
- const cursorNode = this.removeSelectionRange();
137
+ insertBlocksToContent(blocks, rteRange) {
138
+ var _a;
139
+ const isCollapsedRange = rteRange.startNode === rteRange.endNode && rteRange.startOffset === rteRange.endOffset;
140
+ const cursorNode = isCollapsedRange
141
+ ? rteRange.startNode
142
+ : this.removeSelectionRange();
44
143
  if (cursorNode && cursorNode.parent) {
45
- const { startOffset } = this.selectionController.getCurrentRange();
46
- const pasteAction = new PasteContentAction(blocks, cursorNode, startOffset);
144
+ const pasteAction = new PasteContentAction(blocks, cursorNode, rteRange.startOffset, rteRange);
47
145
  cursorNode.parent.apply(pasteAction);
48
- if (pasteAction.futureFocusBlock) {
49
- this.switchCaretPositionToNextElement(pasteAction.futureFocusBlock);
146
+ if (pasteAction.futureFocusNode) {
147
+ this.selectionController.enqueueSelectionRangeFutureState(pasteAction.futureFocusNode, (_a = pasteAction.futureFocusNodeOffset) !== null && _a !== void 0 ? _a : 0);
50
148
  }
149
+ else if (pasteAction.futureFocusBlock) {
150
+ this.switchCaretPositionToNextElement(pasteAction.futureFocusBlock, pasteAction.futureFocusAtEnd);
151
+ }
152
+ }
153
+ else {
154
+ // No resolvable cursor position: fall back to appending at the root so
155
+ // the pasted content is preserved instead of being discarded.
156
+ this.insertBlocksToRoot(blocks);
51
157
  }
52
158
  }
53
159
  /**
54
160
  * Insert the blocks before to current block
55
161
  *
56
162
  * @param { RTEContentBlock[]} blocks - blocks
163
+ * @param { RTERange } rteRange - rteRange
57
164
  */
58
- insertBlocksBeforeEmptyBlock(blocks) {
165
+ insertBlocksBeforeEmptyBlock(blocks, rteRange) {
59
166
  const cursorNode = this.removeSelectionRange();
60
- /* istanbul ignore next */
61
167
  const currentBlock = cursorNode === null || cursorNode === void 0 ? void 0 : cursorNode.parent;
62
168
  if (currentBlock) {
63
- const pasteAction = new PasteContentAction(blocks, currentBlock.children[0], 0, this.selectionController.getCurrentRange());
169
+ const pasteAction = new PasteContentAction(blocks, cursorNode, 0, rteRange);
64
170
  currentBlock.apply(pasteAction);
65
171
  if (pasteAction.futureFocusBlock) {
66
- this.switchCaretPositionToNextElement(pasteAction.futureFocusBlock);
172
+ this.switchCaretPositionToNextElement(pasteAction.futureFocusBlock, pasteAction.futureFocusAtEnd);
67
173
  }
68
174
  }
175
+ else {
176
+ // No resolvable empty block: fall back to appending at the root so the
177
+ // pasted content is preserved instead of being discarded.
178
+ this.insertBlocksToRoot(blocks);
179
+ }
69
180
  }
70
181
  /**
71
182
  * Format and parse elements from user paste with simple style preservation.
@@ -74,30 +185,76 @@ export class InsertPasteHandler extends BaseHandler {
74
185
  * @returns {RTEContentBlock[]} - RTEContentBlock.
75
186
  */
76
187
  parsePastedElements(event) {
77
- let pastedHTML = event.dataTransfer.getData('text/html');
188
+ const payload = this.getPastePayload(event);
189
+ let pastedHTML = payload.html || '';
78
190
  if (!pastedHTML) {
79
- const pastedText = event.dataTransfer.getData('text/plain');
80
- pastedHTML = this.parsePlainText(pastedText);
191
+ pastedHTML = this.parsePlainText(payload.text || '');
192
+ }
193
+ else if (this.shouldTreatAsPlainTextPayload(pastedHTML)) {
194
+ const plainSource = payload.text || this.extractPlainTextFromHtml(pastedHTML);
195
+ pastedHTML = this.parsePlainText(plainSource);
81
196
  }
82
197
  const context = StylePreservator.preserve(pastedHTML);
83
198
  const safeHtml = context.getProcessedHtml();
84
199
  const parser = new DOMParser();
85
200
  const parsedDoc = parser.parseFromString(safeHtml, 'text/html');
201
+ const rootElements = Array.from(parsedDoc.body.childNodes);
202
+ context.restore(rootElements);
203
+ this.normalizeImportedHtmlArtifacts(parsedDoc.body);
86
204
  const htmlElements = Array.from(parsedDoc.body.childNodes);
87
- context.restore(htmlElements);
88
- return ElementToDtoStrategyProcessor.process(htmlElements)
205
+ const resultBlocks = ElementToDtoStrategyProcessor.process(htmlElements)
89
206
  .filter(Boolean)
90
207
  .map((output) => output.toDto())
91
208
  .filter(Boolean);
209
+ // Fallback for synthetic payloads: if strategy conversion yields no blocks
210
+ // but we still have plain text, create paragraph/text blocks directly.
211
+ if (resultBlocks.length === 0 && (payload.text || '').trim() !== '') {
212
+ return this.buildPlainTextFallbackBlocks(payload.text);
213
+ }
214
+ return resultBlocks;
215
+ }
216
+ /**
217
+ * Extracts readable plain text from clipboard HTML.
218
+ *
219
+ * @param {string} html - Clipboard text/html payload.
220
+ * @returns {string} - Plain text extracted from HTML.
221
+ */
222
+ extractPlainTextFromHtml(html) {
223
+ // Preserve inline styles before parsing to avoid style-src-attr CSP violations.
224
+ const safeHtml = StylePreservator.preserve(html).getProcessedHtml();
225
+ const parsedDoc = new DOMParser().parseFromString(safeHtml, 'text/html');
226
+ return (parsedDoc.body.textContent || '').replace(/\r\n?/g, '\n');
92
227
  }
93
228
  /**
94
- * Moves the caret to the next block element in a rich text editor.
229
+ * Builds plain-text paragraph blocks when element strategy parsing returns no output.
95
230
  *
96
- * @param {RTEBlock} newBlock - Represents a new create block element in a rich text editor.
231
+ * @param {string} text - Plain text clipboard content.
232
+ * @returns {RTEContentBlock[]} Fallback text blocks.
97
233
  */
98
- switchCaretPositionToNextElement(newBlock) {
234
+ buildPlainTextFallbackBlocks(text) {
235
+ return text.split('\n').map((line) => {
236
+ const paragraph = new RTETextBlock(generateUUID(), 'paragraph');
237
+ const textNode = new RTETextNode(`${paragraph.id}1`, line, paragraph);
238
+ paragraph.apply(new AppendChildrenAction([textNode]));
239
+ return paragraph;
240
+ });
241
+ }
242
+ /**
243
+ * Moves the caret to a block element in a rich text editor after paste.
244
+ *
245
+ * @param {RTEBlock} newBlock - Block element to move the caret to.
246
+ * @param {boolean} atEnd - When true, places the caret after the last character of the block's last node; otherwise at offset 0 of the first node.
247
+ */
248
+ switchCaretPositionToNextElement(newBlock, atEnd = false) {
249
+ var _a, _b;
99
250
  if (newBlock && newBlock.children) {
100
- this.selectionController.enqueueSelectionRangeFutureState(newBlock.children[0], 0);
251
+ if (atEnd) {
252
+ const lastNode = newBlock.children[newBlock.children.length - 1];
253
+ this.selectionController.enqueueSelectionRangeFutureState(lastNode, (_b = (_a = lastNode.text) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0);
254
+ }
255
+ else {
256
+ this.selectionController.enqueueSelectionRangeFutureState(newBlock.children[0], 0);
257
+ }
101
258
  }
102
259
  }
103
260
  /**
@@ -107,14 +264,217 @@ export class InsertPasteHandler extends BaseHandler {
107
264
  * @returns {string} - The formatted HTML string.
108
265
  */
109
266
  parsePlainText(content) {
267
+ if (this.shouldRenderAsCodeBlock(content)) {
268
+ return `<pre><code>${escapeHtml(content)}</code></pre>`;
269
+ }
110
270
  const lines = content.split('\n');
111
271
  return lines
112
272
  .map((line) => {
113
273
  if (line === '') {
114
274
  return '<p>\n</p>';
115
275
  }
116
- return `<p>${line}</p>`;
276
+ return `<p>${escapeHtml(line)}</p>`;
117
277
  })
118
278
  .join('');
119
279
  }
280
+ /**
281
+ * Detects whether plain text likely represents source code.
282
+ *
283
+ * @param {string} content - Clipboard plain text content.
284
+ * @returns {boolean} True when the content should render as a code block.
285
+ */
286
+ shouldRenderAsCodeBlock(content) {
287
+ const normalized = content.replace(/\r\n?/g, '\n').trim();
288
+ if (!normalized) {
289
+ return false;
290
+ }
291
+ const hasMultipleLines = normalized.includes('\n');
292
+ const hasHtmlLikeTag = /<\/?[a-z][\w:-]*[^>]*>/i.test(normalized);
293
+ const hasCodeFence = normalized.startsWith('```') && normalized.endsWith('```');
294
+ const hasProgrammingTokens = /[{};]|=>|\b(function|const|let|var|class|import|export|return)\b/.test(normalized);
295
+ if (hasCodeFence) {
296
+ return true;
297
+ }
298
+ return hasHtmlLikeTag || (hasMultipleLines && hasProgrammingTokens);
299
+ }
300
+ /**
301
+ * Removes pasted website artifacts that can cause visual regressions in the editor,
302
+ * such as heading anchor tooltips and empty wrappers.
303
+ *
304
+ * @param {HTMLElement} body - Parsed clipboard html body.
305
+ */
306
+ normalizeImportedHtmlArtifacts(body) {
307
+ this.removeHeadingArtifacts(body);
308
+ this.removeEmptyBlocks(body);
309
+ }
310
+ /**
311
+ * Removes heading copy-link/tooltip artifacts copied from documentation pages.
312
+ *
313
+ * @param {HTMLElement} body - Parsed clipboard html body.
314
+ */
315
+ removeHeadingArtifacts(body) {
316
+ const selectors = [
317
+ 'a.js-heading-link',
318
+ 'a.c-heading-link',
319
+ '.js-tooltip-popover',
320
+ '.c-tooltip-popover',
321
+ '[role="tooltip"]',
322
+ ];
323
+ body.querySelectorAll(selectors.join(',')).forEach((element) => element.remove());
324
+ }
325
+ /**
326
+ * Removes empty block wrappers introduced by web copy/paste.
327
+ *
328
+ * @param {HTMLElement} body - Parsed clipboard html body.
329
+ */
330
+ removeEmptyBlocks(body) {
331
+ const blockSelectors = ['p', 'div', 'section', 'article'];
332
+ body.querySelectorAll(blockSelectors.join(',')).forEach((element) => {
333
+ if (this.isEmptyVisualBlock(element)) {
334
+ element.remove();
335
+ }
336
+ });
337
+ }
338
+ /**
339
+ * Checks whether a block is visually empty and safe to remove.
340
+ *
341
+ * @param {HTMLElement} element - Block element to inspect.
342
+ * @returns {boolean} True when the block has no visible content.
343
+ */
344
+ isEmptyVisualBlock(element) {
345
+ if (element.tagName === 'DIV' && element.classList.contains('doc')) {
346
+ return false;
347
+ }
348
+ const hasVisualChild = Boolean(element.querySelector('img,video,audio,iframe,canvas,svg,table,hr,pre,code,blockquote'));
349
+ if (hasVisualChild) {
350
+ return false;
351
+ }
352
+ return (element.textContent || '').trim() === '';
353
+ }
354
+ /**
355
+ * Checks whether a text/html payload is effectively plain text.
356
+ *
357
+ * Some sources (e.g. terminals, code editors) place the copied text inside an
358
+ * off-screen / visually hidden wrapper such as
359
+ * `<pre><div style="position: absolute; left: -9999px;">text</div></pre>`.
360
+ * Preserving that markup as rich content would render the pasted text
361
+ * off-screen (appearing empty), so such payloads are treated as plain text.
362
+ *
363
+ * @param {string} html - Clipboard text/html payload.
364
+ * @returns {boolean} True when the payload has no visible rich content.
365
+ */
366
+ shouldTreatAsPlainTextPayload(html) {
367
+ // Preserve inline styles before parsing to avoid style-src-attr CSP violations
368
+ // triggered by DOMParser processing HTML with style= attributes.
369
+ const safeHtml = StylePreservator.preserve(html).getProcessedHtml();
370
+ const parsedDoc = new DOMParser().parseFromString(safeHtml, 'text/html');
371
+ const body = parsedDoc.body;
372
+ if (body.children.length === 0) {
373
+ return true;
374
+ }
375
+ const visibleClone = body.cloneNode(true);
376
+ visibleClone.querySelectorAll('[style],[data-style]').forEach((element) => {
377
+ if (this.isVisuallyHiddenElement(element)) {
378
+ element.remove();
379
+ }
380
+ });
381
+ if ((visibleClone.textContent || '').trim() !== '') {
382
+ return false;
383
+ }
384
+ const hasVisibleMedia = Boolean(visibleClone.querySelector('img,video,audio,iframe,table,svg,canvas,math,object,embed'));
385
+ if (hasVisibleMedia) {
386
+ return false;
387
+ }
388
+ // If no visible text/media remains but original HTML contained text, it was
389
+ // likely wrapped in hidden/off-screen containers and should be treated as plain text.
390
+ return (body.textContent || '').trim() !== '';
391
+ }
392
+ /**
393
+ * Returns true when a CSS style string contains bold, italic, underline,
394
+ * strikethrough, or color declarations.
395
+ *
396
+ * @param {string} style - Inline CSS style string.
397
+ * @returns {boolean} True when the style contains rich formatting.
398
+ */
399
+ styleContainsRichFormatting(style) {
400
+ if (!style.trim()) {
401
+ return false;
402
+ }
403
+ for (const declaration of style.split(';')) {
404
+ const colonIndex = declaration.indexOf(':');
405
+ if (colonIndex === -1) {
406
+ continue;
407
+ }
408
+ const prop = declaration.slice(0, colonIndex).trim().toLowerCase();
409
+ const value = declaration
410
+ .slice(colonIndex + 1)
411
+ .trim()
412
+ .toLowerCase();
413
+ switch (prop) {
414
+ case 'font-weight':
415
+ if (/bold|[5-9]\d{2}|1000/.test(value)) {
416
+ return true;
417
+ }
418
+ break;
419
+ case 'font-style':
420
+ if (/italic|oblique/.test(value)) {
421
+ return true;
422
+ }
423
+ break;
424
+ case 'text-decoration':
425
+ case 'text-decoration-line':
426
+ if (/underline|line-through/.test(value)) {
427
+ return true;
428
+ }
429
+ break;
430
+ case 'color':
431
+ case 'background-color':
432
+ return true;
433
+ default:
434
+ break;
435
+ }
436
+ }
437
+ return false;
438
+ }
439
+ /**
440
+ * Determines whether an element is visually hidden or rendered off-screen
441
+ * via its inline style, indicating a clipboard plain-text wrapper.
442
+ *
443
+ * @param {HTMLElement} element - Element to inspect.
444
+ * @returns {boolean} True when the element is hidden or off-screen.
445
+ */
446
+ isVisuallyHiddenElement(element) {
447
+ const style = (element.getAttribute('style') ||
448
+ element.getAttribute('data-style') ||
449
+ '').toLowerCase();
450
+ if (!style) {
451
+ return false;
452
+ }
453
+ if (/display\s*:\s*none/.test(style) || /visibility\s*:\s*hidden/.test(style)) {
454
+ return true;
455
+ }
456
+ if (/clip\s*:\s*rect\(\s*0/.test(style) || style.includes('clip-path')) {
457
+ return true;
458
+ }
459
+ const isPositioned = /position\s*:\s*(absolute|fixed)/.test(style);
460
+ const isOffScreen = /(left|top|right|bottom)\s*:\s*-\d{3,}px/.test(style);
461
+ return isPositioned && isOffScreen;
462
+ }
463
+ /**
464
+ * Resolves paste payload from DataTransfer and synthetic-event fallback payload.
465
+ *
466
+ * @param {InputEvent} event - Paste event.
467
+ * @returns {RTEPastePayload} - Paste payload.
468
+ */
469
+ getPastePayload(event) {
470
+ const eventPayload = event
471
+ .rtePastePayload || { html: '', text: '' };
472
+ if (!event.dataTransfer) {
473
+ return eventPayload;
474
+ }
475
+ return {
476
+ html: event.dataTransfer.getData('text/html') || eventPayload.html || '',
477
+ text: event.dataTransfer.getData('text/plain') || eventPayload.text || '',
478
+ };
479
+ }
120
480
  }
@@ -169,58 +169,67 @@ export class SelectionController extends AutoRunWhenReRenderTaskQueueSlimmer {
169
169
  return ShadowSelectionPolyfill.getSelection(richTextContentRef.shadowRoot);
170
170
  }
171
171
  /**
172
- * Scroll the editor's scrollable viewport so the caret stays visible.
173
- * Setting the selection range programmatically does not trigger the browser's
174
- * native auto-scroll, so when the cursor is moved (e.g. after inserting a
175
- * function block) it can land outside the visible area of a fixed-height
176
- * (rows) editor. This keeps the caret within view.
172
+ * Keep the caret visible after the range is restored.
177
173
  *
178
- * Note: This method performs getBoundingClientRect() reads and is called during
179
- * the re-render task path every time the saved selection is restored.
174
+ * Applying a range in code does not trigger browser auto-scroll. We first
175
+ * check whether the caret is already visible, and only then call
176
+ * scrollIntoView with center alignment. This works for both fixed-height
177
+ * content hosts (rows mode) and page scrolling (stretch mode), while avoiding
178
+ * unnecessary jumps during normal typing.
180
179
  *
181
180
  * @param {Range} range - The range that was applied to the selection.
182
181
  */
183
182
  scrollCaretIntoView(range) {
184
- const viewport = this.vegaRichTextEditorRenderer.getRichTextContentRef();
185
- const caretRect = this.getCaretRect(range);
186
- if (!viewport || !caretRect) {
183
+ const element = this.getCaretElement(range);
184
+ if (!element || typeof element.scrollIntoView !== 'function') {
187
185
  return;
188
186
  }
189
- const viewportRect = viewport.getBoundingClientRect();
190
- if (viewportRect.width === 0 ||
191
- viewportRect.height === 0 ||
192
- (caretRect.top === 0 && caretRect.bottom === 0 && caretRect.left === 0 && caretRect.right === 0)) {
187
+ if (this.isCaretWithinViewport(range, element)) {
193
188
  return;
194
189
  }
195
- if (caretRect.bottom > viewportRect.bottom) {
196
- viewport.scrollTop += caretRect.bottom - viewportRect.bottom;
197
- }
198
- else if (caretRect.top < viewportRect.top) {
199
- viewport.scrollTop -= viewportRect.top - caretRect.top;
200
- }
190
+ element.scrollIntoView({ block: 'center', inline: 'nearest' });
201
191
  }
202
192
  /**
203
- * Get the bounding rect of the caret for the given range.
204
- * A collapsed range inside an empty node can return an empty rect, so in that
205
- * case fall back to the nearest element's bounding rect.
193
+ * Resolve the nearest element for the caret start container.
206
194
  *
207
- * @param {Range} range - The range to measure.
208
- * @returns {Nullable<DOMRect>} The caret bounding rect, or null if it cannot be resolved.
195
+ * @param {Range} range - The range to inspect.
196
+ * @returns {Nullable<HTMLElement>} The caret's nearest element, or null.
209
197
  */
210
- getCaretRect(range) {
211
- // getBoundingClientRect is unavailable in non-DOM (test) environments.
212
- if (typeof range.getBoundingClientRect !== 'function') {
198
+ getCaretElement(range) {
199
+ const startContainer = range.startContainer;
200
+ if (!startContainer) {
213
201
  return null;
214
202
  }
215
- const rangeRect = range.getBoundingClientRect();
216
- if (rangeRect.height > 0) {
217
- return rangeRect;
218
- }
219
- const startContainer = range.startContainer;
220
- const element = startContainer.nodeType === Node.TEXT_NODE
203
+ return startContainer.nodeType === Node.TEXT_NODE
221
204
  ? startContainer.parentElement
222
205
  : startContainer;
223
- return element ? element.getBoundingClientRect() : null;
206
+ }
207
+ /**
208
+ * Determine whether the caret is currently visible within the viewport.
209
+ *
210
+ * The visible area is the intersection of the window and the content host,
211
+ * because in fixed-height (`rows`) mode the host clips its content while in
212
+ * the stretch mode the window is the binding constraint.
213
+ *
214
+ * @param {Range} range - The range that was applied to the selection.
215
+ * @param {HTMLElement} element - The caret's nearest element.
216
+ * @returns {boolean} True when the caret is fully inside the visible area.
217
+ */
218
+ isCaretWithinViewport(range, element) {
219
+ const caretRect = range.getBoundingClientRect();
220
+ // A collapsed range can report an empty rect; fall back to the element.
221
+ const rect = caretRect.width === 0 && caretRect.height === 0 && caretRect.top === 0
222
+ ? element.getBoundingClientRect()
223
+ : caretRect;
224
+ let top = 0;
225
+ let bottom = window.innerHeight;
226
+ const contentRef = this.vegaRichTextEditorRenderer.getRichTextContentRef();
227
+ if (contentRef) {
228
+ const contentRect = contentRef.getBoundingClientRect();
229
+ top = Math.max(top, contentRect.top);
230
+ bottom = Math.min(bottom, contentRect.bottom);
231
+ }
232
+ return rect.top >= top - 1 && rect.bottom <= bottom + 1;
224
233
  }
225
234
  /**
226
235
  * Save the current selection range detail
@@ -272,6 +281,28 @@ export class SelectionController extends AutoRunWhenReRenderTaskQueueSlimmer {
272
281
  const range = selection.getRangeAt(0);
273
282
  const commonAncestor = range.commonAncestorContainer;
274
283
  const selectedNodes = [];
284
+ if (range.collapsed) {
285
+ const { startContainer } = range;
286
+ if (startContainer.nodeType === Node.TEXT_NODE) {
287
+ const currentNode = startContainer.parentElement;
288
+ const nodeEntity = stateEntityRenderingRegistry.getEntityByDOM(currentNode);
289
+ if (nodeEntity instanceof RTENode) {
290
+ selectedNodes.push(nodeEntity);
291
+ }
292
+ }
293
+ else if (isHTMLElement(startContainer)) {
294
+ const entityElement = RTEDecoratorNode.isDecoratorNodeContainerElement(startContainer)
295
+ ? RTEDecoratorNode.getDecoratorNodeElement(startContainer)
296
+ : startContainer;
297
+ const nodeEntity = stateEntityRenderingRegistry.getEntityByDOM(entityElement);
298
+ if (nodeEntity instanceof RTENode) {
299
+ selectedNodes.push(nodeEntity);
300
+ }
301
+ else if (nodeEntity instanceof RTEBlock && range.collapsed) {
302
+ this.tryToFindTheNearestSelectedNode(range, selectedNodes);
303
+ }
304
+ }
305
+ }
275
306
  /**
276
307
  * Rich text node filter
277
308
  *
@@ -313,7 +344,9 @@ export class SelectionController extends AutoRunWhenReRenderTaskQueueSlimmer {
313
344
  }
314
345
  node.childNodes.forEach(filterNode);
315
346
  };
316
- filterNode(commonAncestor);
347
+ if (!range.collapsed || selectedNodes.length === 0) {
348
+ filterNode(commonAncestor);
349
+ }
317
350
  this.addNodesToSelectionMap(selectedNodes);
318
351
  this.getSelectedNodes().forEach((node) => node.apply(new SelectionChangeAction(range)));
319
352
  }
@@ -34,7 +34,7 @@ export class BulletsNumbersToolbarButtonSlimmer extends VisualModeToolbarButtonS
34
34
  }
35
35
  }
36
36
  renderBtnWrapper(renderBtn) {
37
- return (h("vega-popover", { showArrow: false, trigger: "click", placement: "bottom", alignment: "center", ref: (ref) => (this.popoverRef = ref) },
37
+ return (h("vega-popover", { showArrow: false, trigger: "click", placement: "bottom", alignment: "center", isScreenPosition: true, ref: (ref) => (this.popoverRef = ref) },
38
38
  h("div", { slot: "popover-content" }, renderBtn({ showArrowIcon: true })),
39
39
  h("div", { slot: "popover" }, this.renderContent())));
40
40
  }
@@ -43,7 +43,7 @@ export class HorizontalAlignmentToolbarButtonSlimmer extends VisualModeToolbarBu
43
43
  }
44
44
  }
45
45
  renderBtnWrapper(renderBtn) {
46
- return (h("vega-popover", { trigger: "click", showArrow: false, alignment: "center", placement: "bottom", ref: (ref) => (this.popoverRef = ref) },
46
+ return (h("vega-popover", { trigger: "click", showArrow: false, alignment: "center", placement: "bottom", isScreenPosition: true, ref: (ref) => (this.popoverRef = ref) },
47
47
  h("div", { slot: "popover-content" }, renderBtn({ showArrowIcon: true })),
48
48
  h("div", { slot: "popover" }, this.renderContent())));
49
49
  }