@globalpayments/vega 2.98.0 → 2.99.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 (447) hide show
  1. package/dist/cjs/{action-color-accessibility-validator-24498816.js → action-color-accessibility-validator-b8a9ef0f.js} +2 -2
  2. package/dist/cjs/{app-globals-b3f05631.js → app-globals-a306dce6.js} +10 -10
  3. package/dist/cjs/{code-block-d78c2b2c.js → code-block-ea1f5eb3.js} +43 -6
  4. package/dist/cjs/{component-global-style-slimmer-93c5fb50.js → component-global-style-slimmer-ba588eb4.js} +1 -1
  5. package/dist/cjs/{component-value-history-controller-slimmer.abstract-beb00fea.js → component-value-history-controller-slimmer.abstract-7071b064.js} +24 -5
  6. package/dist/cjs/{content-state-78a620a9.js → content-state-8d07d530.js} +60 -8
  7. package/dist/cjs/{dark-mode-style-controller-32d4054a.js → dark-mode-style-controller-f3da3342.js} +2 -2
  8. package/dist/cjs/{date-required-rule-5250f26d.js → date-required-rule-c0c498ad.js} +1 -1
  9. package/dist/cjs/{design-token-74674ee7.js → design-token-58bf7fe8.js} +3 -3
  10. package/dist/cjs/{element-appender-slimmer-597e9e48.js → element-appender-slimmer-a0269315.js} +2 -2
  11. package/dist/cjs/{form-field-controller-slimmer-a743be34.js → form-field-controller-slimmer-f73f200e.js} +2 -2
  12. package/dist/cjs/{image-annotation-action-85c4bd83.js → image-annotation-action-2a28038e.js} +3 -3
  13. package/dist/cjs/{image-extension-260fa69c.js → image-extension-9659708b.js} +2 -2
  14. package/dist/cjs/{index-592b4052.js → index-5d1adcd1.js} +86 -0
  15. package/dist/cjs/index.cjs.js +19 -19
  16. package/dist/cjs/{inject-keyboard-manager-6a6f5c9f.js → inject-keyboard-manager-4fa45f9c.js} +1 -1
  17. package/dist/cjs/{internal-calendar-period-factory-dfcdd3f6.js → internal-calendar-period-factory-6196bc80.js} +1 -1
  18. package/dist/cjs/{internal-translation-controller-1dac2df8.js → internal-translation-controller-51f7f865.js} +2 -0
  19. package/dist/cjs/{keyboard-manager-c56033b1.js → keyboard-manager-482fe257.js} +1 -1
  20. package/dist/cjs/{keyboard-manager-slimmer-7043a106.js → keyboard-manager-slimmer-a19430dd.js} +1 -1
  21. package/dist/cjs/{link-extension-220ff6a9.js → link-extension-11340e1c.js} +26 -7
  22. package/dist/cjs/loader.cjs.js +13 -13
  23. package/dist/cjs/{month-view-generator-7b704a80.js → month-view-generator-1a534451.js} +1 -1
  24. package/dist/cjs/{public-rules-5657bce4.js → public-rules-6c77b545.js} +9 -9
  25. package/dist/cjs/{range-c5afd53a.js → range-22ddd452.js} +1 -1
  26. package/dist/cjs/{responsive-format-facade-493d1763.js → responsive-format-facade-74e6d791.js} +1 -1
  27. package/dist/cjs/{rich-text-editor-required-rule-385c1b61.js → rich-text-editor-required-rule-09d1093a.js} +1 -1
  28. package/dist/cjs/{split-cell-operation-873d5db7.js → split-cell-operation-11bfb305.js} +14 -4
  29. package/dist/cjs/{state-border-formatter-711c7aaa.js → state-border-formatter-bf4f9f1c.js} +1 -1
  30. package/dist/cjs/{string-format-strategy.abstract-b61bdcbd.js → string-format-strategy.abstract-bf37b14c.js} +1 -1
  31. package/dist/cjs/{string-input-formatter-slimmer-ef65cca7.js → string-input-formatter-slimmer-ffeb18a6.js} +1 -1
  32. package/dist/cjs/{string-mask-strategy-ad3fa0ac.js → string-mask-strategy-7f394726.js} +2 -2
  33. package/dist/cjs/{style-formatter-8f711cb0.js → style-formatter-4ac63910.js} +2 -2
  34. package/dist/cjs/{time-required-rule-87417359.js → time-required-rule-e2a50003.js} +1 -1
  35. package/dist/cjs/{token-extension-78b5a026.js → token-extension-4686cb3b.js} +2920 -157
  36. package/dist/cjs/{translation-slimmer-77c7f37d.js → translation-slimmer-e4997f8f.js} +1 -1
  37. package/dist/cjs/{type-guard-a57ef3ac.js → type-guard-b8d7bb3f.js} +1 -1
  38. package/dist/cjs/{valid-credit-card-number-rule-4c0a3040.js → valid-credit-card-number-rule-f5a6f009.js} +1 -1
  39. package/dist/cjs/vega-accordion.cjs.entry.js +6 -6
  40. package/dist/cjs/vega-app-footer.cjs.entry.js +2 -2
  41. package/dist/cjs/vega-app-header-button.cjs.entry.js +5 -5
  42. package/dist/cjs/vega-box.cjs.entry.js +7 -7
  43. package/dist/cjs/vega-brand-logo.cjs.entry.js +2 -2
  44. package/dist/cjs/vega-breadcrumb.cjs.entry.js +2 -2
  45. package/dist/cjs/vega-button-circle.cjs.entry.js +6 -6
  46. package/dist/cjs/vega-button-link.cjs.entry.js +1 -1
  47. package/dist/cjs/vega-button.cjs.entry.js +4 -4
  48. package/dist/cjs/vega-calendar_5.cjs.entry.js +21 -10
  49. package/dist/cjs/vega-card.cjs.entry.js +5 -5
  50. package/dist/cjs/vega-carousel.cjs.entry.js +3 -3
  51. package/dist/cjs/vega-checkbox_2.cjs.entry.js +3 -3
  52. package/dist/cjs/vega-chip.cjs.entry.js +5 -5
  53. package/dist/cjs/vega-code-block.cjs.entry.js +11 -11
  54. package/dist/cjs/vega-color-picker.cjs.entry.js +3 -3
  55. package/dist/cjs/vega-color-swatch-picker.cjs.entry.js +4 -4
  56. package/dist/cjs/vega-color-swatch.cjs.entry.js +2 -2
  57. package/dist/cjs/vega-combo-box.cjs.entry.js +9 -9
  58. package/dist/cjs/vega-counter-badge.cjs.entry.js +2 -2
  59. package/dist/cjs/vega-date-picker_2.cjs.entry.js +14 -14
  60. package/dist/cjs/vega-dialog_2.cjs.entry.js +5 -5
  61. package/dist/cjs/vega-divider.cjs.entry.js +5 -5
  62. package/dist/cjs/vega-dropdown_5.cjs.entry.js +23 -14
  63. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  64. package/dist/cjs/vega-field-label.cjs.entry.js +3 -3
  65. package/dist/cjs/vega-file-uploader.cjs.entry.js +4 -4
  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 +2 -2
  70. package/dist/cjs/vega-grid.cjs.entry.js +5 -5
  71. package/dist/cjs/vega-icon.cjs.entry.js +6 -6
  72. package/dist/cjs/vega-image-uploader.cjs.entry.js +7 -7
  73. package/dist/cjs/vega-input-credit-card.cjs.entry.js +7 -7
  74. package/dist/cjs/vega-input-numeric.cjs.entry.js +6 -6
  75. package/dist/cjs/vega-input-passcode.cjs.entry.js +6 -6
  76. package/dist/cjs/vega-input-phone-number.cjs.entry.js +5 -5
  77. package/dist/cjs/vega-input-range.cjs.entry.js +4 -4
  78. package/dist/cjs/vega-input-select.cjs.entry.js +6 -6
  79. package/dist/cjs/vega-input.cjs.entry.js +7 -7
  80. package/dist/cjs/vega-left-nav_5.cjs.entry.js +10 -10
  81. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +3 -3
  82. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +2 -2
  83. package/dist/cjs/vega-pagination.cjs.entry.js +4 -4
  84. package/dist/cjs/vega-popover_2.cjs.entry.js +8 -8
  85. package/dist/cjs/vega-progress-tracker_2.cjs.entry.js +3 -3
  86. package/dist/cjs/vega-radio_2.cjs.entry.js +6 -6
  87. package/dist/cjs/vega-rich-text-content.cjs.entry.js +39 -11
  88. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +79 -22
  89. package/dist/cjs/vega-rich-text-find-replace-panel.cjs.entry.js +1 -1
  90. package/dist/cjs/vega-rich-text-special-characters-panel.cjs.entry.js +5 -5
  91. package/dist/cjs/vega-rich-text-table-properties_3.cjs.entry.js +10 -10
  92. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +5 -5
  93. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +3 -3
  94. package/dist/cjs/vega-sidenav_3.cjs.entry.js +3 -3
  95. package/dist/cjs/vega-signature-capture.cjs.entry.js +8 -8
  96. package/dist/cjs/vega-stepper.cjs.entry.js +3 -3
  97. package/dist/cjs/vega-tab-group_2.cjs.entry.js +21 -8
  98. package/dist/cjs/vega-table_11.cjs.entry.js +81 -45
  99. package/dist/cjs/vega-textarea.cjs.entry.js +3 -3
  100. package/dist/cjs/vega-time-picker_2.cjs.entry.js +10 -10
  101. package/dist/cjs/vega-toggle-switch.cjs.entry.js +3 -3
  102. package/dist/cjs/vega-tooltip_2.cjs.entry.js +6 -6
  103. package/dist/cjs/vega.cjs.js +13 -13
  104. package/dist/collection/components/vega-calendar/slimmers/common/renderers/vega-calendar-event-item-renderer.js +5 -2
  105. package/dist/collection/components/vega-calendar/vega-calendar-event-preview/slimmers/renderers/vega-calendar-event-preview-detail-renderer.js +9 -1
  106. package/dist/collection/components/vega-counter-badge/vega-counter-badge.js +2 -2
  107. package/dist/collection/components/vega-dropdown/vega-dropdown-group/slimmers/renderers/vega-dropdown-group-renderer.js +6 -4
  108. package/dist/collection/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.js +10 -2
  109. package/dist/collection/components/vega-field-label/vega-field-label.css +1 -0
  110. package/dist/collection/components/vega-rich-text-editor/constants/constant.js +16 -0
  111. package/dist/collection/components/vega-rich-text-editor/dto/annotations/text-style-default-styles.js +2 -1
  112. package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +11 -0
  113. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy-registry.js +2 -1
  114. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy.abstract.js +5 -2
  115. package/dist/collection/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/title-heading-node-filter-styles-strategy.js +36 -2
  116. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.js +20 -3
  117. package/dist/collection/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.js +12 -0
  118. package/dist/collection/components/vega-rich-text-editor/extensions/block-boundary-registry.js +34 -0
  119. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +20 -0
  120. package/dist/collection/components/vega-rich-text-editor/extensions/functions/action-handler-strategies/insert-function-block-strategy.js +3 -2
  121. package/dist/collection/components/vega-rich-text-editor/extensions/functions/constants.js +8 -0
  122. package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/function-block.js +14 -3
  123. package/dist/collection/components/vega-rich-text-editor/extensions/functions/dto/logic-control-block.js +2 -1
  124. package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-containing-function-block-strategy.js +19 -0
  125. package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-function-block-strategy.js +9 -5
  126. package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-function-content-strategy.js +3 -3
  127. package/dist/collection/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-to-logic-control-block-strategy.js +4 -2
  128. package/dist/collection/components/vega-rich-text-editor/extensions/functions/function-extension.js +18 -0
  129. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/function-block-renderer.js +5 -2
  130. package/dist/collection/components/vega-rich-text-editor/extensions/functions/renderers/logic-control-block-renderer.js +2 -1
  131. package/dist/collection/components/vega-rich-text-editor/extensions/functions/utils.js +36 -0
  132. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +1 -0
  133. package/dist/collection/components/vega-rich-text-editor/extensions/paste/action-handler-strategies/image-replace-src-strategy.js +21 -0
  134. package/dist/collection/components/vega-rich-text-editor/extensions/paste/actions/image-replace-src-action.js +13 -0
  135. package/dist/collection/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/paste-image-parser.js +295 -0
  136. package/dist/collection/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/pending-image-registry.js +116 -0
  137. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.js +13 -4
  138. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-extension.js +70 -7
  139. package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/default-paste-strategy.js +38 -0
  140. package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/paste-processing-strategy.abstract.js +55 -0
  141. package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/paste-strategy-selector.js +59 -0
  142. package/dist/collection/components/vega-rich-text-editor/extensions/paste/strategies/word-paste-strategy.js +416 -0
  143. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-code-block-transformer.js +106 -0
  144. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-image-transformer.js +198 -0
  145. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-list-transformer.js +591 -0
  146. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-paragraph-transformer.js +112 -0
  147. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-table-transformer.js +551 -0
  148. package/dist/collection/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-transformer.js +7 -0
  149. package/dist/collection/components/vega-rich-text-editor/extensions/table/dto/table-block.js +10 -0
  150. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.js +4 -2
  151. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node.js +44 -0
  152. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +2 -0
  153. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/text-style-annotation-handler.js +7 -4
  154. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.js +17 -0
  155. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/input-event-handler/insert-paste-handler.js +18 -4
  156. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +21 -2
  157. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.js +7 -0
  158. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/vega-rich-text-editor-source-view-renderer.js +5 -2
  159. package/dist/collection/components/vega-tab-group/slimmers/vega-tab-group/renderers/vega-tab-group-tab-list-renderer.js +14 -7
  160. package/dist/collection/components/vega-tab-group/vega-tab-group.css +6 -0
  161. package/dist/collection/components/vega-tab-group/vega-tab-group.js +5 -0
  162. package/dist/collection/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.js +31 -1
  163. package/dist/collection/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.js +18 -11
  164. package/dist/collection/helpers/translation/locales/en.js +2 -0
  165. package/dist/collection/utils/sanitize/index.js +3 -2
  166. package/dist/collection/utils/sanitize/strategies/index.js +1 -0
  167. package/dist/collection/utils/sanitize/strategies/label-sanitize-strategy.js +14 -0
  168. package/dist/collection/utils/sanitize/strategies/plain-text-sanitize-strategy.js +70 -0
  169. package/dist/esm/{action-color-accessibility-validator-ce55cb07.js → action-color-accessibility-validator-08877515.js} +2 -2
  170. package/dist/esm/{app-globals-95c7110a.js → app-globals-c59364c2.js} +10 -10
  171. package/dist/esm/{code-block-9c513169.js → code-block-e6443949.js} +39 -7
  172. package/dist/esm/{component-global-style-slimmer-ac703085.js → component-global-style-slimmer-7d60a04a.js} +1 -1
  173. package/dist/esm/{component-value-history-controller-slimmer.abstract-9cef2a2a.js → component-value-history-controller-slimmer.abstract-ee393213.js} +24 -5
  174. package/dist/esm/{content-state-25c81c08.js → content-state-43cdacff.js} +60 -9
  175. package/dist/esm/{dark-mode-style-controller-ca5afd2d.js → dark-mode-style-controller-352f15ff.js} +2 -2
  176. package/dist/esm/{date-required-rule-85334d0c.js → date-required-rule-b5b67498.js} +1 -1
  177. package/dist/esm/{design-token-10ff79b5.js → design-token-8319bb59.js} +3 -3
  178. package/dist/esm/{element-appender-slimmer-8a06ecdd.js → element-appender-slimmer-c81d1fe3.js} +2 -2
  179. package/dist/esm/{form-field-controller-slimmer-68fc5380.js → form-field-controller-slimmer-511b7ac5.js} +2 -2
  180. package/dist/esm/{image-annotation-action-d7f2aecc.js → image-annotation-action-d7cb80aa.js} +3 -3
  181. package/dist/esm/{image-extension-fbd1ed6e.js → image-extension-9b8abd0d.js} +2 -2
  182. package/dist/esm/{index-3b327f29.js → index-35451d12.js} +86 -1
  183. package/dist/esm/index.js +19 -19
  184. package/dist/esm/{inject-keyboard-manager-ea1aad5b.js → inject-keyboard-manager-dd368d56.js} +1 -1
  185. package/dist/esm/{internal-calendar-period-factory-7b294fb6.js → internal-calendar-period-factory-d58f35c6.js} +1 -1
  186. package/dist/esm/{internal-translation-controller-fac22598.js → internal-translation-controller-b33430c6.js} +2 -0
  187. package/dist/esm/{keyboard-manager-50da85d7.js → keyboard-manager-b4a0d97d.js} +1 -1
  188. package/dist/esm/{keyboard-manager-slimmer-1f7c8bfb.js → keyboard-manager-slimmer-0517fc70.js} +1 -1
  189. package/dist/esm/{link-extension-e8ee103e.js → link-extension-230bae8d.js} +26 -7
  190. package/dist/esm/loader.js +13 -13
  191. package/dist/esm/{month-view-generator-a1a9a4ec.js → month-view-generator-f470caac.js} +1 -1
  192. package/dist/esm/{public-rules-49de79c7.js → public-rules-28ef32d3.js} +9 -9
  193. package/dist/esm/{range-b678c693.js → range-efad2578.js} +1 -1
  194. package/dist/esm/{responsive-format-facade-f19b601c.js → responsive-format-facade-dec87e46.js} +1 -1
  195. package/dist/esm/{rich-text-editor-required-rule-578e0958.js → rich-text-editor-required-rule-a697e5bd.js} +1 -1
  196. package/dist/esm/{split-cell-operation-1c8e7585.js → split-cell-operation-89b91a38.js} +14 -4
  197. package/dist/esm/{state-border-formatter-bfda33aa.js → state-border-formatter-1e900a2f.js} +1 -1
  198. package/dist/esm/{string-format-strategy.abstract-1f4ff1b3.js → string-format-strategy.abstract-d0ce3f65.js} +1 -1
  199. package/dist/esm/{string-input-formatter-slimmer-0006a107.js → string-input-formatter-slimmer-6546cfc7.js} +1 -1
  200. package/dist/esm/{string-mask-strategy-bbbcdbef.js → string-mask-strategy-dd13ae21.js} +2 -2
  201. package/dist/esm/{style-formatter-e9adc8f4.js → style-formatter-057d7120.js} +2 -2
  202. package/dist/esm/{time-required-rule-1ce2d0a0.js → time-required-rule-73753a54.js} +1 -1
  203. package/dist/esm/{token-extension-f2d009e3.js → token-extension-74a0eeb1.js} +2918 -155
  204. package/dist/esm/{translation-slimmer-ee0f0e76.js → translation-slimmer-ef970ffc.js} +1 -1
  205. package/dist/esm/{type-guard-f2624334.js → type-guard-6fc96870.js} +1 -1
  206. package/dist/esm/{valid-credit-card-number-rule-60212b1d.js → valid-credit-card-number-rule-b54a31e7.js} +1 -1
  207. package/dist/esm/vega-accordion.entry.js +6 -6
  208. package/dist/esm/vega-app-footer.entry.js +2 -2
  209. package/dist/esm/vega-app-header-button.entry.js +5 -5
  210. package/dist/esm/vega-box.entry.js +7 -7
  211. package/dist/esm/vega-brand-logo.entry.js +2 -2
  212. package/dist/esm/vega-breadcrumb.entry.js +2 -2
  213. package/dist/esm/vega-button-circle.entry.js +6 -6
  214. package/dist/esm/vega-button-link.entry.js +1 -1
  215. package/dist/esm/vega-button.entry.js +4 -4
  216. package/dist/esm/vega-calendar_5.entry.js +21 -10
  217. package/dist/esm/vega-card.entry.js +5 -5
  218. package/dist/esm/vega-carousel.entry.js +3 -3
  219. package/dist/esm/vega-checkbox_2.entry.js +3 -3
  220. package/dist/esm/vega-chip.entry.js +5 -5
  221. package/dist/esm/vega-code-block.entry.js +11 -11
  222. package/dist/esm/vega-color-picker.entry.js +3 -3
  223. package/dist/esm/vega-color-swatch-picker.entry.js +4 -4
  224. package/dist/esm/vega-color-swatch.entry.js +2 -2
  225. package/dist/esm/vega-combo-box.entry.js +9 -9
  226. package/dist/esm/vega-counter-badge.entry.js +2 -2
  227. package/dist/esm/vega-date-picker_2.entry.js +14 -14
  228. package/dist/esm/vega-dialog_2.entry.js +5 -5
  229. package/dist/esm/vega-divider.entry.js +5 -5
  230. package/dist/esm/vega-dropdown_5.entry.js +23 -14
  231. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  232. package/dist/esm/vega-field-label.entry.js +3 -3
  233. package/dist/esm/vega-file-uploader.entry.js +4 -4
  234. package/dist/esm/vega-flag-icon.entry.js +5 -5
  235. package/dist/esm/vega-flex.entry.js +6 -6
  236. package/dist/esm/vega-font.entry.js +5 -5
  237. package/dist/esm/vega-form.entry.js +2 -2
  238. package/dist/esm/vega-grid.entry.js +5 -5
  239. package/dist/esm/vega-icon.entry.js +6 -6
  240. package/dist/esm/vega-image-uploader.entry.js +7 -7
  241. package/dist/esm/vega-input-credit-card.entry.js +7 -7
  242. package/dist/esm/vega-input-numeric.entry.js +6 -6
  243. package/dist/esm/vega-input-passcode.entry.js +6 -6
  244. package/dist/esm/vega-input-phone-number.entry.js +5 -5
  245. package/dist/esm/vega-input-range.entry.js +4 -4
  246. package/dist/esm/vega-input-select.entry.js +6 -6
  247. package/dist/esm/vega-input.entry.js +7 -7
  248. package/dist/esm/vega-left-nav_5.entry.js +10 -10
  249. package/dist/esm/vega-loader-wrapper_2.entry.js +3 -3
  250. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +2 -2
  251. package/dist/esm/vega-pagination.entry.js +4 -4
  252. package/dist/esm/vega-popover_2.entry.js +8 -8
  253. package/dist/esm/vega-progress-tracker_2.entry.js +3 -3
  254. package/dist/esm/vega-radio_2.entry.js +6 -6
  255. package/dist/esm/vega-rich-text-content.entry.js +39 -11
  256. package/dist/esm/vega-rich-text-editor_4.entry.js +79 -22
  257. package/dist/esm/vega-rich-text-find-replace-panel.entry.js +1 -1
  258. package/dist/esm/vega-rich-text-special-characters-panel.entry.js +5 -5
  259. package/dist/esm/vega-rich-text-table-properties_3.entry.js +10 -10
  260. package/dist/esm/vega-selection-chip_2.entry.js +5 -5
  261. package/dist/esm/vega-selection-tile_2.entry.js +3 -3
  262. package/dist/esm/vega-sidenav_3.entry.js +3 -3
  263. package/dist/esm/vega-signature-capture.entry.js +8 -8
  264. package/dist/esm/vega-stepper.entry.js +3 -3
  265. package/dist/esm/vega-tab-group_2.entry.js +21 -8
  266. package/dist/esm/vega-table_11.entry.js +53 -17
  267. package/dist/esm/vega-textarea.entry.js +3 -3
  268. package/dist/esm/vega-time-picker_2.entry.js +10 -10
  269. package/dist/esm/vega-toggle-switch.entry.js +3 -3
  270. package/dist/esm/vega-tooltip_2.entry.js +6 -6
  271. package/dist/esm/vega.js +13 -13
  272. package/dist/sri/vega-sri-manifest.json +349 -349
  273. package/dist/types/components/vega-calendar/vega-calendar-event-preview/slimmers/renderers/vega-calendar-event-preview-detail-renderer.d.ts +2 -0
  274. package/dist/types/components/vega-dropdown/vega-dropdown-item/slimmers/renderers/vega-dropdown-item-renderer.d.ts +1 -0
  275. package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +16 -0
  276. package/dist/types/components/vega-rich-text-editor/dto/annotations/text-style-default-styles.d.ts +1 -0
  277. package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +9 -0
  278. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy-registry.d.ts +1 -0
  279. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/filter-styles-strategy.abstract.d.ts +3 -2
  280. package/dist/types/components/vega-rich-text-editor/dto/filter-styles-strategies/text-node/title-heading-node-filter-styles-strategy.d.ts +25 -3
  281. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/block-text-nodes-renderer.abstract.d.ts +7 -0
  282. package/dist/types/components/vega-rich-text-editor/dto/renderers/nodes/text-node-renderer.d.ts +11 -0
  283. package/dist/types/components/vega-rich-text-editor/extensions/block-boundary-registry.d.ts +21 -0
  284. package/dist/types/components/vega-rich-text-editor/extensions/extension.abstract.d.ts +15 -0
  285. package/dist/types/components/vega-rich-text-editor/extensions/functions/constants.d.ts +4 -0
  286. package/dist/types/components/vega-rich-text-editor/extensions/functions/dto/function-block.d.ts +7 -0
  287. package/dist/types/components/vega-rich-text-editor/extensions/functions/element-to-dto-strategies/div-containing-function-block-strategy.d.ts +8 -0
  288. package/dist/types/components/vega-rich-text-editor/extensions/functions/function-extension.d.ts +6 -0
  289. package/dist/types/components/vega-rich-text-editor/extensions/functions/utils.d.ts +29 -0
  290. package/dist/types/components/vega-rich-text-editor/extensions/paste/action-handler-strategies/image-replace-src-strategy.d.ts +12 -0
  291. package/dist/types/components/vega-rich-text-editor/extensions/paste/actions/image-replace-src-action.d.ts +11 -0
  292. package/dist/types/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/paste-image-parser.d.ts +136 -0
  293. package/dist/types/components/vega-rich-text-editor/extensions/paste/parse-local-images-helper/pending-image-registry.d.ts +68 -0
  294. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-chooser-ui.d.ts +9 -4
  295. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-extension.d.ts +39 -2
  296. package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/default-paste-strategy.d.ts +29 -0
  297. package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/paste-processing-strategy.abstract.d.ts +61 -0
  298. package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/paste-strategy-selector.d.ts +45 -0
  299. package/dist/types/components/vega-rich-text-editor/extensions/paste/strategies/word-paste-strategy.d.ts +186 -0
  300. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-code-block-transformer.d.ts +51 -0
  301. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-image-transformer.d.ts +86 -0
  302. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-list-transformer.d.ts +271 -0
  303. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-paragraph-transformer.d.ts +25 -0
  304. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-table-transformer.d.ts +240 -0
  305. package/dist/types/components/vega-rich-text-editor/extensions/paste/word-paste-transformers/word-structure-transformer.d.ts +36 -0
  306. package/dist/types/components/vega-rich-text-editor/extensions/table/dto/table-block.d.ts +8 -0
  307. package/dist/types/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.d.ts +2 -2
  308. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node.d.ts +19 -1
  309. package/dist/types/components/vega-rich-text-editor/interface.d.ts +10 -0
  310. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/annotation-handler/text-style-annotation-handler.d.ts +4 -1
  311. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/continue-inline-to-rte-text-block-strategy.d.ts +8 -0
  312. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/source-edit-toolbar-button-slimmer.d.ts +1 -0
  313. package/dist/types/components/vega-tab-group/slimmers/vega-tab-group/renderers/vega-tab-group-tab-list-renderer.d.ts +1 -0
  314. package/dist/types/components/vega-tab-group/types.d.ts +3 -1
  315. package/dist/types/components/vega-tab-group/vega-tab-group.d.ts +2 -0
  316. package/dist/types/components/vega-table/interface.d.ts +4 -4
  317. package/dist/types/components/vega-table/slimmers/controllers/vega-table-body-col-span-controller.d.ts +16 -0
  318. package/dist/types/components/vega-table/slimmers/renderers/vega-table-body-col-span-resolver.d.ts +8 -10
  319. package/dist/types/helpers/translation/interface.d.ts +3 -1
  320. package/dist/types/types/public-api.d.ts +1 -0
  321. package/dist/types/utils/sanitize/index.d.ts +3 -2
  322. package/dist/types/utils/sanitize/strategies/index.d.ts +1 -0
  323. package/dist/types/utils/sanitize/strategies/label-sanitize-strategy.d.ts +9 -0
  324. package/dist/types/utils/sanitize/strategies/plain-text-sanitize-strategy.d.ts +36 -0
  325. package/dist/vega/index.esm.js +1 -1
  326. package/dist/vega/{p-0cbf09f7.entry.js → p-024db952.entry.js} +1 -1
  327. package/dist/vega/p-0b2c4c0b.js +1 -0
  328. package/dist/vega/{p-c2277448.entry.js → p-0ca3b4bf.entry.js} +1 -1
  329. package/dist/vega/{p-6f537797.entry.js → p-1a37d63c.entry.js} +1 -1
  330. package/dist/vega/{p-b622c455.js → p-1fa22fda.js} +1 -1
  331. package/dist/vega/{p-d609c3fd.js → p-2044eba9.js} +1 -1
  332. package/dist/vega/{p-56db3323.js → p-22edd3cc.js} +1 -1
  333. package/dist/vega/{p-5f96e741.entry.js → p-23c1f378.entry.js} +1 -1
  334. package/dist/vega/{p-6c95a6a3.js → p-2529820e.js} +1 -1
  335. package/dist/vega/{p-8d96f0e8.entry.js → p-2af1d8b8.entry.js} +1 -1
  336. package/dist/vega/{p-17c69503.entry.js → p-2f89ee14.entry.js} +1 -1
  337. package/dist/vega/{p-2bb5a232.js → p-3091b105.js} +1 -1
  338. package/dist/vega/{p-52c69f9e.entry.js → p-328ebbdb.entry.js} +1 -1
  339. package/dist/vega/p-35628af4.js +1 -0
  340. package/dist/vega/{p-9abf7d0a.entry.js → p-35d37477.entry.js} +1 -1
  341. package/dist/vega/{p-8c56d74d.entry.js → p-3a230d4b.entry.js} +1 -1
  342. package/dist/vega/{p-4bfe3258.entry.js → p-3c152bad.entry.js} +1 -1
  343. package/dist/vega/p-3c559c8b.js +1 -0
  344. package/dist/vega/{p-d470fce2.entry.js → p-3c8421d5.entry.js} +1 -1
  345. package/dist/vega/{p-7dcd2850.entry.js → p-4022412e.entry.js} +1 -1
  346. package/dist/vega/{p-c70748f7.entry.js → p-433b1395.entry.js} +1 -1
  347. package/dist/vega/{p-b98ead05.entry.js → p-4370b954.entry.js} +1 -1
  348. package/dist/vega/p-444e24c6.js +1 -0
  349. package/dist/vega/p-4473d8b1.js +3 -0
  350. package/dist/vega/{p-a484e32d.entry.js → p-44999c88.entry.js} +1 -1
  351. package/dist/vega/{p-f29ea345.entry.js → p-47a48329.entry.js} +1 -1
  352. package/dist/vega/{p-0cf3b5c1.entry.js → p-49d7cfed.entry.js} +1 -1
  353. package/dist/vega/{p-92528dc9.entry.js → p-4afd6715.entry.js} +1 -1
  354. package/dist/vega/{p-461100b8.entry.js → p-4f6aaac5.entry.js} +1 -1
  355. package/dist/vega/p-50eda925.js +1 -0
  356. package/dist/vega/{p-ae2abdfa.js → p-5110c84f.js} +1 -1
  357. package/dist/vega/{p-2a245138.entry.js → p-5147c30d.entry.js} +1 -1
  358. package/dist/vega/{p-874e5624.js → p-52878ea9.js} +1 -1
  359. package/dist/vega/{p-b00ec194.entry.js → p-55dc3053.entry.js} +1 -1
  360. package/dist/vega/p-5af312f8.js +1 -0
  361. package/dist/vega/{p-3e09aeed.js → p-5b3c8a56.js} +1 -1
  362. package/dist/vega/{p-2acf9b42.entry.js → p-5e9e04f3.entry.js} +1 -1
  363. package/dist/vega/p-5f377954.js +1 -1
  364. package/dist/vega/p-6493f13a.entry.js +1 -0
  365. package/dist/vega/{p-56598858.entry.js → p-6659c910.entry.js} +1 -1
  366. package/dist/vega/{p-95c18f79.entry.js → p-66728dd4.entry.js} +1 -1
  367. package/dist/vega/{p-4cbfc01e.entry.js → p-66a785d0.entry.js} +1 -1
  368. package/dist/vega/{p-36d9e782.entry.js → p-66fe8b4e.entry.js} +1 -1
  369. package/dist/vega/p-67e88cd7.entry.js +1 -0
  370. package/dist/vega/{p-456f678b.js → p-691bdc20.js} +1 -1
  371. package/dist/vega/{p-94975537.entry.js → p-6d6b4495.entry.js} +1 -1
  372. package/dist/vega/p-7754b10f.entry.js +1 -0
  373. package/dist/vega/{p-085d1647.entry.js → p-77fb3971.entry.js} +1 -1
  374. package/dist/vega/{p-544ce391.entry.js → p-7977352b.entry.js} +1 -1
  375. package/dist/vega/{p-a91927eb.entry.js → p-7b133734.entry.js} +1 -1
  376. package/dist/vega/p-7b84a943.entry.js +1 -0
  377. package/dist/vega/{p-02d3ce79.entry.js → p-840444c9.entry.js} +1 -1
  378. package/dist/vega/{p-3737b9e2.entry.js → p-860e76f5.entry.js} +1 -1
  379. package/dist/vega/{p-72fd17a1.entry.js → p-867cc602.entry.js} +1 -1
  380. package/dist/vega/p-8d2a9012.js +1 -0
  381. package/dist/vega/{p-7e8fdac4.js → p-8d4be607.js} +1 -1
  382. package/dist/vega/p-8d77c7cf.js +1 -0
  383. package/dist/vega/{p-4fd0cf01.js → p-8f3b93db.js} +1 -1
  384. package/dist/vega/{p-56417ec5.entry.js → p-944e284d.entry.js} +1 -1
  385. package/dist/vega/{p-6fd4f2c6.js → p-94b54a95.js} +1 -1
  386. package/dist/vega/p-9c2b3279.js +1 -0
  387. package/dist/vega/{p-ca3c1317.entry.js → p-9c5289dc.entry.js} +1 -1
  388. package/dist/vega/{p-810c9c29.js → p-9c9b0629.js} +1 -1
  389. package/dist/vega/{p-585e4f1c.entry.js → p-9c9ff871.entry.js} +1 -1
  390. package/dist/vega/{p-2f07d719.entry.js → p-9d90e271.entry.js} +1 -1
  391. package/dist/vega/{p-d319ebb5.js → p-9e9f49f4.js} +1 -1
  392. package/dist/vega/{p-dcd3e3a7.js → p-a1f220ca.js} +1 -1
  393. package/dist/vega/{p-035e2f05.entry.js → p-a4360b7e.entry.js} +1 -1
  394. package/dist/vega/{p-6d4518d7.entry.js → p-a7517760.entry.js} +1 -1
  395. package/dist/vega/{p-c5fb8a69.entry.js → p-aa433430.entry.js} +1 -1
  396. package/dist/vega/{p-1cff027b.entry.js → p-aa914dbd.entry.js} +1 -1
  397. package/dist/vega/{p-72ab5cd5.entry.js → p-b12de1bf.entry.js} +1 -1
  398. package/dist/vega/p-b21cc390.entry.js +1 -0
  399. package/dist/vega/{p-dbb4b1d1.js → p-b3c4943b.js} +1 -1
  400. package/dist/vega/{p-1aedbfd2.entry.js → p-ba6881da.entry.js} +1 -1
  401. package/dist/vega/{p-9834d5d4.entry.js → p-bd7725f7.entry.js} +1 -1
  402. package/dist/vega/{p-a090b2be.js → p-c348eaf5.js} +1 -1
  403. package/dist/vega/{p-ccbe3f1b.entry.js → p-c8ad7207.entry.js} +1 -1
  404. package/dist/vega/{p-b3733762.entry.js → p-c8fb3aac.entry.js} +1 -1
  405. package/dist/vega/p-cc569b54.js +1 -0
  406. package/dist/vega/{p-c98c2f5f.entry.js → p-ccbed811.entry.js} +1 -1
  407. package/dist/vega/{p-da867019.entry.js → p-ce82d6bb.entry.js} +1 -1
  408. package/dist/vega/{p-a81ad3bd.js → p-cede3535.js} +1 -1
  409. package/dist/vega/p-d35a31a5.entry.js +1 -0
  410. package/dist/vega/{p-ac94ba1b.entry.js → p-d4d90ce2.entry.js} +1 -1
  411. package/dist/vega/{p-cb81126a.entry.js → p-d6023dc0.entry.js} +1 -1
  412. package/dist/vega/{p-a8174ad8.entry.js → p-d62e618a.entry.js} +1 -1
  413. package/dist/vega/{p-1ea9ad9a.js → p-dd0bd78b.js} +1 -1
  414. package/dist/vega/{p-36d2df7a.entry.js → p-ded1ecc1.entry.js} +1 -1
  415. package/dist/vega/p-df63c2fb.entry.js +1 -0
  416. package/dist/vega/{p-c6d775b8.entry.js → p-e1a65e06.entry.js} +1 -1
  417. package/dist/vega/{p-39c5054b.js → p-e1c82ca9.js} +1 -1
  418. package/dist/vega/{p-f6c0e9e7.entry.js → p-e469ba27.entry.js} +1 -1
  419. package/dist/vega/{p-373541fa.js → p-e4c5cb4f.js} +1 -1
  420. package/dist/vega/{p-ec64cc59.entry.js → p-f0a0fc77.entry.js} +1 -1
  421. package/dist/vega/{p-12e8a1b2.js → p-f13b39d8.js} +1 -1
  422. package/dist/vega/{p-4e065ef7.entry.js → p-f2384411.entry.js} +1 -1
  423. package/dist/vega/{p-8d2501b2.js → p-f9a3805d.js} +1 -1
  424. package/dist/vega/{p-1e0a8fd3.js → p-fa5cd8b1.js} +1 -1
  425. package/dist/vega/{p-2c2e8615.js → p-fcb6b499.js} +1 -1
  426. package/dist/vega/vega.esm.js +1 -1
  427. package/package.json +1 -1
  428. package/dist/collection/components/vega-rich-text-editor/extensions/paste/paste-constants.js +0 -6
  429. package/dist/types/components/vega-rich-text-editor/extensions/paste/paste-constants.d.ts +0 -6
  430. package/dist/vega/p-03eeadc1.entry.js +0 -1
  431. package/dist/vega/p-0eb29065.js +0 -3
  432. package/dist/vega/p-10d30c03.js +0 -1
  433. package/dist/vega/p-1250b1ab.entry.js +0 -1
  434. package/dist/vega/p-1abd3c17.js +0 -1
  435. package/dist/vega/p-2d158cbd.js +0 -1
  436. package/dist/vega/p-3d0b4074.js +0 -1
  437. package/dist/vega/p-56493601.js +0 -1
  438. package/dist/vega/p-571ec00b.js +0 -1
  439. package/dist/vega/p-5b1f5e4a.entry.js +0 -1
  440. package/dist/vega/p-6234852e.entry.js +0 -1
  441. package/dist/vega/p-781b7a54.js +0 -1
  442. package/dist/vega/p-cd69aeae.js +0 -1
  443. package/dist/vega/p-cfe268a8.entry.js +0 -1
  444. package/dist/vega/p-de8f0d98.js +0 -1
  445. package/dist/vega/p-f0e828d8.js +0 -1
  446. package/dist/vega/p-f62c5a20.entry.js +0 -1
  447. package/dist/vega/p-fa65956c.entry.js +0 -1
@@ -0,0 +1,116 @@
1
+ import { ImageReplaceSrcAction } from '../actions/image-replace-src-action';
2
+ /**
3
+ * Owns the lifecycle of pasted images awaiting upload: it tracks their local
4
+ * object-URL previews, notifies the consumer once they are inserted, applies the
5
+ * uploaded URL back onto the live preview, and revokes object URLs on teardown.
6
+ *
7
+ * Keeping this state here rather than on the paste extension keeps the extension
8
+ * focused on clipboard capture and the chooser UI.
9
+ */
10
+ export class PendingImageRegistry {
11
+ constructor() {
12
+ /** Ids of pending images still holding an object URL owned by this registry. */
13
+ this.ownedImageIds = new Set();
14
+ /** Ids queued for the next {@link notifyInserted} call. */
15
+ this.pendingNotifyImageIds = [];
16
+ }
17
+ /**
18
+ * Registers freshly created previews so they can be notified and later
19
+ * resolved to their uploaded URLs.
20
+ *
21
+ * @param {PasteImagePreview[]} previews Previews produced for the current paste.
22
+ */
23
+ register(previews) {
24
+ this.pendingNotifyImageIds = [];
25
+ previews.forEach((preview) => {
26
+ this.pendingNotifyImageIds.push(preview.id);
27
+ this.ownedImageIds.add(preview.id);
28
+ PendingImageRegistry.pendingImages.set(preview.id, preview);
29
+ });
30
+ }
31
+ /**
32
+ * @returns {boolean} Whether previews are queued for notification.
33
+ */
34
+ hasPendingNotifications() {
35
+ return this.pendingNotifyImageIds.length > 0;
36
+ }
37
+ /**
38
+ * Notifies the consumer about newly inserted pasted images so they can upload
39
+ * them and fill in the real URLs via the supplied `replaceUrl` callback.
40
+ *
41
+ * @param {ImageInsertedCallback | undefined} callback Consumer callback to invoke.
42
+ * @param {GetEditableElement} getEditableElement Resolves the live editable element.
43
+ * @param {ResolveImageNode} resolveImageNode Resolves the DTO node for a preview element.
44
+ */
45
+ notifyInserted(callback, getEditableElement, resolveImageNode) {
46
+ const images = this.pendingNotifyImageIds
47
+ .map((id) => PendingImageRegistry.pendingImages.get(id))
48
+ .filter((preview) => !!preview);
49
+ this.pendingNotifyImageIds = [];
50
+ if (images.length && typeof callback === 'function') {
51
+ // Mark as handed to the consumer so teardown keeps them for a later replaceUrl.
52
+ images.forEach((image) => (image.notified = true));
53
+ const pasteImages = images.map((image) => ({
54
+ id: image.id,
55
+ file: image.file,
56
+ }));
57
+ callback(pasteImages, (imageId, url) => this.replaceUrl(imageId, url, getEditableElement, resolveImageNode));
58
+ }
59
+ }
60
+ /**
61
+ * Revokes and forgets only previews that were never handed to a consumer for
62
+ * upload. Previews already notified via {@link notifyInserted} are left intact
63
+ * so an async {@link replaceUrl} can still resolve them after the extension is
64
+ * recreated; that callback owns their teardown.
65
+ */
66
+ discardUnsentPreviews() {
67
+ this.ownedImageIds.forEach((imageId) => {
68
+ const pending = PendingImageRegistry.pendingImages.get(imageId);
69
+ if (pending && pending.notified) {
70
+ return;
71
+ }
72
+ if (pending && pending.objectUrl.startsWith('blob:')) {
73
+ URL.revokeObjectURL(pending.objectUrl);
74
+ }
75
+ PendingImageRegistry.pendingImages.delete(imageId);
76
+ this.ownedImageIds.delete(imageId);
77
+ });
78
+ this.pendingNotifyImageIds = [];
79
+ }
80
+ /**
81
+ * Applies the uploaded URL for a pending pasted image, replacing its local
82
+ * preview `src` and revoking the object URL.
83
+ *
84
+ * @param {string} imageId Pending image id supplied to the consumer callback.
85
+ * @param {string} url Uploaded image URL to apply.
86
+ * @param {GetEditableElement} getEditableElement Resolves the live editable element.
87
+ * @param {ResolveImageNode} resolveImageNode Resolves the DTO node for a preview element.
88
+ */
89
+ replaceUrl(imageId, url, getEditableElement, resolveImageNode) {
90
+ var _a;
91
+ const editableEl = getEditableElement();
92
+ if (editableEl) {
93
+ const imageElement = (_a = editableEl.querySelector(`img[data-rte-id="${imageId}"]`)) !== null && _a !== void 0 ? _a : null;
94
+ if (imageElement) {
95
+ const imageNode = resolveImageNode(imageElement);
96
+ imageNode && imageNode.apply(new ImageReplaceSrcAction(imageElement, url));
97
+ }
98
+ }
99
+ const pending = PendingImageRegistry.pendingImages.get(imageId);
100
+ if (pending) {
101
+ if (pending.objectUrl.startsWith('blob:')) {
102
+ URL.revokeObjectURL(pending.objectUrl);
103
+ }
104
+ PendingImageRegistry.pendingImages.delete(imageId);
105
+ this.ownedImageIds.delete(imageId);
106
+ }
107
+ }
108
+ }
109
+ /**
110
+ * Pasted images awaiting upload, keyed by their {@link VegaRTEPasteImage.id}.
111
+ *
112
+ * Shared statically across instances so previews survive a paste-extension
113
+ * re-instantiation: the consumer may resolve `replaceUrl` after the editor
114
+ * has re-mounted and created a new extension/registry instance.
115
+ */
116
+ PendingImageRegistry.pendingImages = new Map();
@@ -1,13 +1,15 @@
1
1
  import { VegaInternalIconManager } from '../../../../helpers/icon/internal-icon-manager';
2
2
  import { VegaInternalTranslation } from '../../../../helpers/translation/internal-translation-controller';
3
+ import { RTEPasteMode } from './strategies/paste-processing-strategy.abstract';
3
4
  import paste from './assets/paste';
4
5
  /**
5
6
  * Renders and manages the paste format chooser UI.
6
7
  */
7
8
  export class RTEPasteChooserUI {
8
- constructor(hostRoot, callbacks) {
9
+ constructor(hostRoot, callbacks, options = {}) {
9
10
  this.hostRoot = hostRoot;
10
11
  this.callbacks = callbacks;
12
+ this.options = options;
11
13
  this.chooserEl = null;
12
14
  this.dropdownEl = null;
13
15
  this.triggerButtonEl = null;
@@ -108,11 +110,17 @@ export class RTEPasteChooserUI {
108
110
  dropdownEl.append(tooltipEl);
109
111
  const itemsContainer = doc.createElement('div');
110
112
  itemsContainer.setAttribute('slot', 'items');
111
- itemsContainer.append(this.createDropdownItem(doc, 'rich', VegaInternalTranslation.t('Use rich text'), RTEPasteChooserUI.CHOOSER_RICH_ATTR));
113
+ const dropdownItems = [
114
+ this.createDropdownItem(doc, RTEPasteMode.RICH, VegaInternalTranslation.t('Use rich text'), RTEPasteChooserUI.CHOOSER_RICH_ATTR),
115
+ ];
116
+ if (this.options.showWordOption) {
117
+ dropdownItems.push(this.createDropdownItem(doc, RTEPasteMode.WORD, VegaInternalTranslation.t('Use Word'), RTEPasteChooserUI.CHOOSER_WORD_ATTR));
118
+ }
119
+ itemsContainer.append(...dropdownItems);
112
120
  dropdownEl.append(itemsContainer);
113
121
  dropdownEl.addEventListener('vegaDropdownClick', (event) => {
114
122
  const mode = event.detail;
115
- if (mode === 'rich') {
123
+ if (mode === RTEPasteMode.RICH || mode === RTEPasteMode.WORD) {
116
124
  this.callbacks.onModeSelect(mode);
117
125
  }
118
126
  });
@@ -122,7 +130,7 @@ export class RTEPasteChooserUI {
122
130
  * Creates a single dropdown item element for a paste mode.
123
131
  *
124
132
  * @param {Document} doc Document used to create the element.
125
- * @param {PasteMode} key Paste mode key for the item.
133
+ * @param {RTEPasteMode} key Paste mode key for the item.
126
134
  * @param {string} label Display label for the item.
127
135
  * @param {string} dataAttrName Data attribute marker for the item.
128
136
  * @returns {HTMLVegaDropdownItemElement} Configured dropdown item element.
@@ -142,4 +150,5 @@ export class RTEPasteChooserUI {
142
150
  })();
143
151
  RTEPasteChooserUI.CHOOSER_ATTR = 'data-rte-paste-chooser';
144
152
  RTEPasteChooserUI.CHOOSER_RICH_ATTR = 'data-rte-paste-type-rich';
153
+ RTEPasteChooserUI.CHOOSER_WORD_ATTR = 'data-rte-paste-type-word';
145
154
  RTEPasteChooserUI.CHOOSER_TRIGGER_ATTR = 'data-rte-paste-trigger';
@@ -1,19 +1,32 @@
1
1
  import { VegaRTEExtension } from '../extension.abstract';
2
2
  import { RTEPasteChooserUI } from './paste-chooser-ui';
3
- import { RTE_PASTE_MODE_DATA_TYPE } from './paste-constants';
3
+ import { RTE_PASTE_MODE_DATA_TYPE } from '../../constants/constant';
4
+ import { PasteStrategySelector } from './strategies/paste-strategy-selector';
5
+ import { RTEPasteMode, } from './strategies/paste-processing-strategy.abstract';
6
+ import { PasteImageParser } from './parse-local-images-helper/paste-image-parser';
7
+ import { RTEImageNode } from '../../dto/nodes/image-node';
8
+ import { REPLACE_IMAGE_SRC } from './actions/image-replace-src-action';
9
+ import { ImageReplaceSrcStrategy } from './action-handler-strategies/image-replace-src-strategy';
10
+ import { PendingImageRegistry } from './parse-local-images-helper/pending-image-registry';
4
11
  /**
5
12
  * Vega Rich Text Editor paste extension.
6
13
  * Intercepts keyboard paste and allows users to choose paste mode.
7
14
  */
8
15
  export class VegaRTEPasteExtension extends VegaRTEExtension {
9
- constructor() {
10
- super(...arguments);
16
+ constructor(options = {}) {
17
+ super();
11
18
  this.editableEl = null;
12
19
  this.contentHostEl = null;
13
20
  this.chooserUI = null;
14
21
  this.pendingPastePayload = null;
15
22
  this.listenerDocument = null;
16
23
  this.listenerWindow = null;
24
+ this.options = {};
25
+ this.strategySelector = new PasteStrategySelector();
26
+ this.clipboardFileContent = null;
27
+ this.imageParser = new PasteImageParser();
28
+ /** Owns pending pasted-image previews awaiting upload and their URL replacement. */
29
+ this.pendingImageRegistry = new PendingImageRegistry();
17
30
  /**
18
31
  * Handles a native paste event by capturing the clipboard payload and
19
32
  * rendering the paste-mode chooser.
@@ -29,6 +42,9 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
29
42
  // HTML is sanitized via DOMParser and ElementToDtoStrategyProcessor pipeline
30
43
  const html = clipboardData.getData('text/html') || '';
31
44
  const text = clipboardData.getData('text/plain') || '';
45
+ // RTF must be read synchronously here: the paste event's DataTransfer is only
46
+ // readable during event dispatch, so reading it later (after the chooser) returns ''.
47
+ const rtf = clipboardData.getData('text/rtf') || '';
32
48
  if (!html && !text) {
33
49
  // Empty clipboard paste should not mutate editor content.
34
50
  event.preventDefault();
@@ -40,6 +56,10 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
40
56
  const range = this.cloneCurrentSelectionRange();
41
57
  const selectedNodes = ((_b = (_a = this.extensionContext) === null || _a === void 0 ? void 0 : _a.getSelectedNodes) === null || _b === void 0 ? void 0 : _b.call(_a)) || [];
42
58
  this.pendingPastePayload = { html, text, range, selectedNodes: [...selectedNodes] };
59
+ this.clipboardFileContent = {
60
+ files: clipboardData.files ? Array.from(clipboardData.files) : [],
61
+ rtf,
62
+ };
43
63
  this.renderPasteChooser(event);
44
64
  };
45
65
  /**
@@ -73,6 +93,7 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
73
93
  this.handleOutsideScroll = () => {
74
94
  this.clearPasteChooser();
75
95
  };
96
+ this.options = options;
76
97
  }
77
98
  /** @inheritDoc */
78
99
  initialExtensionAfterLoad(context) {
@@ -84,6 +105,7 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
84
105
  destroyExtension() {
85
106
  this.detachPasteListener();
86
107
  this.clearPasteChooser();
108
+ this.pendingImageRegistry.discardUnsentPreviews();
87
109
  }
88
110
  /**
89
111
  * Attaches the paste listener to the editable element.
@@ -146,7 +168,7 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
146
168
  * @param {ClipboardEvent} pasteEvent Originating paste event used for positioning.
147
169
  */
148
170
  renderPasteChooser(pasteEvent) {
149
- var _a, _b;
171
+ var _a, _b, _c;
150
172
  const hostRoot = (_b = (_a = this.hostEl) === null || _a === void 0 ? void 0 : _a.shadowRoot) !== null && _b !== void 0 ? _b : null;
151
173
  if (!hostRoot) {
152
174
  return;
@@ -158,6 +180,8 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
158
180
  onModeSelect: (mode) => {
159
181
  this.applyPasteMode(mode);
160
182
  },
183
+ }, {
184
+ showWordOption: ((_c = this.options) === null || _c === void 0 ? void 0 : _c.enableWordPaste) === true,
161
185
  });
162
186
  this.chooserUI.open(position);
163
187
  this.listenerDocument = this.hostEl.ownerDocument;
@@ -287,7 +311,10 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
287
311
  /**
288
312
  * Applies the chosen paste mode by dispatching a synthetic paste input event.
289
313
  *
290
- * @param {PasteMode} mode Selected paste mode.
314
+ * `rich` keeps auto-detection enabled; any other explicit mode forces the
315
+ * corresponding registered strategy.
316
+ *
317
+ * @param {RTEPasteMode} mode Selected paste mode.
291
318
  */
292
319
  applyPasteMode(mode) {
293
320
  var _a;
@@ -303,9 +330,42 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
303
330
  editableEl.focus();
304
331
  this.restoreSelectionRange(this.pendingPastePayload.range);
305
332
  this.restoreSelectionControllerState(this.pendingPastePayload);
306
- const dataTransfer = this.createDataTransfer(this.pendingPastePayload.html, this.pendingPastePayload.text, mode);
333
+ const strategy = mode === RTEPasteMode.RICH
334
+ ? this.strategySelector.selectStrategy(this.pendingPastePayload.html)
335
+ : this.strategySelector.selectStrategyByType(mode);
336
+ let processedHtml = strategy.process(this.pendingPastePayload.html);
337
+ // If the strategy supports image processing and there is clipboard file content, parse local images.
338
+ if (strategy.supportsImageProcessing && this.clipboardFileContent) {
339
+ processedHtml = this.parseLocalImages(processedHtml, this.clipboardFileContent);
340
+ }
341
+ this.clipboardFileContent = null;
342
+ const dataTransfer = this.createDataTransfer(processedHtml, this.pendingPastePayload.text, strategy.type);
307
343
  this.dispatchBeforeInputPaste(editableEl, dataTransfer);
308
344
  this.clearPasteChooser();
345
+ this.emitLocalImageInsertedEvent();
346
+ }
347
+ /**
348
+ * Parses local images from the HTML and emits events for further processing.
349
+ *
350
+ * @param {string} html HTML content to parse.
351
+ * @param {ClipboardFileContent} clipboardFileContent Clipboard file content for image extraction.
352
+ * @returns {string} Processed HTML with local image references replaced.
353
+ */
354
+ parseLocalImages(html, clipboardFileContent) {
355
+ const { html: result, previews } = this.imageParser.parseLocalImages(html, clipboardFileContent);
356
+ if (previews.length > 0) {
357
+ this.pendingImageRegistry.register(previews);
358
+ }
359
+ return result;
360
+ }
361
+ /**
362
+ * Emits the `imageInsertedCallback` for any pending previews, allowing the
363
+ * consumer to upload them and resolve their URLs.
364
+ */
365
+ emitLocalImageInsertedEvent() {
366
+ if (this.pendingImageRegistry.hasPendingNotifications()) {
367
+ this.pendingImageRegistry.notifyInserted(this.options.imageInsertedCallback, () => { var _a; return (_a = this.editableEl) !== null && _a !== void 0 ? _a : this.getEditableElement(); }, (imageElement) => this.getDTOEntityByDom(imageElement));
368
+ }
309
369
  }
310
370
  /**
311
371
  * Restores SelectionController state from the captured selection so synthetic
@@ -379,7 +439,7 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
379
439
  *
380
440
  * @param {string} html HTML clipboard content.
381
441
  * @param {string} text Plain text clipboard content.
382
- * @param {PasteMode} [mode] Selected paste mode marker.
442
+ * @param {RTEPasteMode} [mode] Selected paste mode marker.
383
443
  * @returns {DataTransfer} Populated data transfer payload.
384
444
  */
385
445
  createDataTransfer(html, text, mode) {
@@ -440,3 +500,6 @@ export class VegaRTEPasteExtension extends VegaRTEExtension {
440
500
  }
441
501
  }
442
502
  }
503
+ (() => {
504
+ VegaRTEExtension.registerActionHandleStrategy(RTEImageNode.name, REPLACE_IMAGE_SRC, new ImageReplaceSrcStrategy());
505
+ })();
@@ -0,0 +1,38 @@
1
+ import { AbstractPasteProcessingStrategy, PasteProcessingStrategyPriority, } from './paste-processing-strategy.abstract';
2
+ /**
3
+ * Default paste processing strategy that acts as a fallback when no other
4
+ * strategy matches. This strategy always accepts the content and passes it
5
+ * through unchanged — the normal RTE paste pipeline (DOMParser +
6
+ * ElementToDtoStrategyProcessor) handles the rest.
7
+ */
8
+ export class DefaultPasteProcessingStrategy extends AbstractPasteProcessingStrategy {
9
+ /**
10
+ * Always matches as the terminal fallback strategy.
11
+ *
12
+ * @param {string} html Raw clipboard HTML.
13
+ * @returns {boolean} Always `true`.
14
+ */
15
+ canHandle(html) {
16
+ // Default strategy is the fallback — always returns true.
17
+ return html !== undefined;
18
+ }
19
+ /**
20
+ * Returns the original HTML unchanged.
21
+ *
22
+ * @param {string} html Raw clipboard HTML.
23
+ * @returns {string} Unchanged HTML.
24
+ */
25
+ process(html) {
26
+ // Current default behavior: pass through unchanged
27
+ // (DOMParser + ElementToDtoStrategyProcessor handles the rest)
28
+ return html;
29
+ }
30
+ /**
31
+ * Fallback priority so other strategies can win when matched.
32
+ *
33
+ * @returns {number} Strategy priority.
34
+ */
35
+ get priority() {
36
+ return PasteProcessingStrategyPriority.DEFAULT_FALLBACK;
37
+ }
38
+ }
@@ -0,0 +1,55 @@
1
+ export var RTEPasteMode;
2
+ (function (RTEPasteMode) {
3
+ RTEPasteMode["RICH"] = "rich";
4
+ RTEPasteMode["WORD"] = "word";
5
+ })(RTEPasteMode || (RTEPasteMode = {}));
6
+ /**
7
+ * Priority scale shared by all paste processing strategies.
8
+ */
9
+ export var PasteProcessingStrategyPriority;
10
+ (function (PasteProcessingStrategyPriority) {
11
+ /** Fallback strategy used only when no specialized strategy matches. */
12
+ PasteProcessingStrategyPriority[PasteProcessingStrategyPriority["DEFAULT_FALLBACK"] = -1] = "DEFAULT_FALLBACK";
13
+ /** Baseline priority for generic strategies. */
14
+ PasteProcessingStrategyPriority[PasteProcessingStrategyPriority["BASE"] = 0] = "BASE";
15
+ /** Word strategy priority so it outranks generic strategies. */
16
+ PasteProcessingStrategyPriority[PasteProcessingStrategyPriority["WORD"] = 10] = "WORD";
17
+ })(PasteProcessingStrategyPriority || (PasteProcessingStrategyPriority = {}));
18
+ /**
19
+ * Abstract base class for paste processing strategies.
20
+ *
21
+ * Each strategy implements detection logic (`canHandle`) and transformation
22
+ * logic (`process`) for a specific clipboard source (Word, Google Docs, etc.).
23
+ * The strategy selector chooses the highest-priority strategy that can handle
24
+ * the given HTML.
25
+ */
26
+ export class AbstractPasteProcessingStrategy {
27
+ /**
28
+ * Downstream paste mode marker associated with this strategy.
29
+ *
30
+ * Defaults to regular rich-text paste unless a specialized strategy overrides it.
31
+ *
32
+ * @returns {RTEPasteMode} Paste mode marker for downstream handlers.
33
+ */
34
+ get type() {
35
+ return RTEPasteMode.RICH;
36
+ }
37
+ /**
38
+ * Optional: Strategy priority when multiple strategies match.
39
+ * Higher numbers = higher priority. Default: 0.
40
+ *
41
+ * @returns {number} Strategy priority.
42
+ */
43
+ get priority() {
44
+ return PasteProcessingStrategyPriority.BASE;
45
+ }
46
+ /**
47
+ * Whether pasted images from this source should be extracted into local
48
+ * previews by the paste extension after {@link process} runs.
49
+ *
50
+ * @returns {boolean} `false` unless a strategy opts into image processing.
51
+ */
52
+ get supportsImageProcessing() {
53
+ return false;
54
+ }
55
+ }
@@ -0,0 +1,59 @@
1
+ import { DefaultPasteProcessingStrategy } from './default-paste-strategy';
2
+ import { WordPasteProcessingStrategy } from './word-paste-strategy';
3
+ /**
4
+ * Centralized selector for paste processing strategies.
5
+ *
6
+ * Maintains a registry of available strategies and selects the highest-priority
7
+ * strategy that can handle the given clipboard HTML. Provides an extension
8
+ * point for adding support for new clipboard sources (e.g., Google Docs, Notion)
9
+ * without modifying the paste extension core logic.
10
+ */
11
+ export class PasteStrategySelector {
12
+ constructor() {
13
+ this.defaultStrategy = new DefaultPasteProcessingStrategy();
14
+ this.strategies = [
15
+ new WordPasteProcessingStrategy(),
16
+ this.defaultStrategy, // Fallback
17
+ ];
18
+ }
19
+ /**
20
+ * Select the appropriate strategy for the given HTML content.
21
+ * Returns the highest-priority strategy that can handle the content.
22
+ *
23
+ * @param {string} html Raw clipboard HTML.
24
+ * @returns {AbstractPasteProcessingStrategy} The selected strategy (always returns a strategy; default is the fallback).
25
+ */
26
+ selectStrategy(html) {
27
+ return this.selectHighestPriorityStrategy(this.strategies.filter((strategy) => strategy.canHandle(html)));
28
+ }
29
+ /**
30
+ * Selects the highest-priority registered strategy for an explicitly chosen paste mode.
31
+ *
32
+ * Used when the user manually chooses a non-default mode from the paste chooser.
33
+ *
34
+ * @param {RTEPasteMode} type Explicit paste mode selected by the user.
35
+ * @returns {AbstractPasteProcessingStrategy} The matching strategy or the default fallback.
36
+ */
37
+ selectStrategyByType(type) {
38
+ return this.selectHighestPriorityStrategy(this.strategies.filter((strategy) => strategy.type === type));
39
+ }
40
+ /**
41
+ * Register a new paste processing strategy.
42
+ * Useful for future extensions (e.g., GoogleDocsPasteStrategy).
43
+ *
44
+ * @param {AbstractPasteProcessingStrategy} strategy The strategy to register.
45
+ */
46
+ registerStrategy(strategy) {
47
+ this.strategies.push(strategy);
48
+ }
49
+ /**
50
+ * Returns the highest-priority strategy from a candidate set or the default fallback.
51
+ *
52
+ * @param {AbstractPasteProcessingStrategy[]} strategies Candidate strategies.
53
+ * @returns {AbstractPasteProcessingStrategy} Selected strategy.
54
+ */
55
+ selectHighestPriorityStrategy(strategies) {
56
+ const selectedStrategy = strategies.sort((a, b) => b.priority - a.priority)[0];
57
+ return selectedStrategy || this.defaultStrategy;
58
+ }
59
+ }