@globalpayments/vega 2.61.0 → 2.63.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 (444) hide show
  1. package/dist/cjs/{app-globals-7e624dd0.js → app-globals-8f5fa42a.js} +23 -15
  2. package/dist/cjs/base-renderer-0a3b62b7.js +9 -0
  3. package/dist/cjs/{child-nodes-event-prevent-slimmer-184fe3b2.js → child-nodes-event-prevent-slimmer-4e96270e.js} +1 -1
  4. package/dist/cjs/{code-block-ecb2df41.js → code-block-eb66d852.js} +73 -22
  5. package/dist/cjs/{component-value-history-controller-slimmer.abstract-58a0f64c.js → component-value-history-controller-slimmer.abstract-62cdf04c.js} +16 -182
  6. package/dist/cjs/{design-token-16f74439.js → design-token-76bb47bd.js} +1 -1
  7. package/dist/cjs/{dom-node-subject-factory-4eb1fec2.js → dom-node-subject-observer-factory-58e3c010.js} +41 -0
  8. package/dist/cjs/{content-state-d7b8e70b.js → dto-renderer-manager-f3894490.js} +1647 -1501
  9. package/dist/cjs/{element-appender-slimmer-c4816142.js → element-appender-slimmer-e8dac628.js} +7 -8
  10. package/dist/cjs/{event-emit-slimmer-2da7c9d6.js → event-emit-slimmer-428d8802.js} +3 -4
  11. package/dist/cjs/{form-field-controller-slimmer-dab30e5c.js → form-field-controller-slimmer-cc6e53a4.js} +4 -5
  12. package/dist/cjs/{image-annotation-action-7eaab3ce.js → image-annotation-action-a628ec9b.js} +24 -81
  13. package/dist/cjs/{index-da628bba.js → index-5505e8dd.js} +3 -3
  14. package/dist/cjs/index.cjs.js +49 -23
  15. package/dist/cjs/{icon-manager-9072356d.js → internal-icon-manager-32f9ed63.js} +51 -0
  16. package/dist/cjs/{internal-vega-event-manager-7b87c2f4.js → internal-vega-event-manager-28b957c8.js} +73 -73
  17. package/dist/cjs/language-extension-20a1dba5.js +207 -0
  18. package/dist/cjs/loader.cjs.js +14 -12
  19. package/dist/cjs/{min-number-rule-965fc43d.js → min-number-rule-dc555309.js} +14 -8
  20. package/dist/cjs/{public-rules-21622bd0.js → public-rules-5d0f3a5f.js} +5 -5
  21. package/dist/cjs/range-cfc45f9e.js +178 -0
  22. package/dist/cjs/{responsive-format-facade-0d22ff78.js → responsive-format-facade-7e933525.js} +4 -3
  23. package/dist/cjs/{rich-text-editor-required-rule-8d7e441a.js → rich-text-editor-required-rule-72170c10.js} +2 -2
  24. package/dist/cjs/{string-input-formatter-slimmer-5a744e71.js → string-input-formatter-slimmer-f6c7a255.js} +4 -4
  25. package/dist/cjs/{style-formatter-a66813a2.js → style-formatter-702df81e.js} +1 -1
  26. package/dist/cjs/{sub-state-notify-slimmer-9602b5bb.js → sub-state-notify-slimmer-bb64fcfc.js} +4 -4
  27. package/dist/cjs/{sub-state-observer-slimmer-df7df5bb.js → sub-state-observer-slimmer-84175d61.js} +4 -4
  28. package/dist/cjs/{vega-skeleton-loader-controller-9c54f3aa.js → token-extension-23ccff1d.js} +679 -3
  29. package/dist/cjs/vega-accordion.cjs.entry.js +15 -16
  30. package/dist/cjs/vega-app-header-button.cjs.entry.js +20 -21
  31. package/dist/cjs/vega-banner.cjs.entry.js +7 -9
  32. package/dist/cjs/vega-box.cjs.entry.js +13 -12
  33. package/dist/cjs/vega-brand-logo.cjs.entry.js +1 -2
  34. package/dist/cjs/vega-breadcrumb.cjs.entry.js +44 -78
  35. package/dist/cjs/vega-button-circle.cjs.entry.js +16 -16
  36. package/dist/cjs/vega-button-group_2.cjs.entry.js +11 -12
  37. package/dist/cjs/vega-button-link.cjs.entry.js +22 -21
  38. package/dist/cjs/vega-button.cjs.entry.js +15 -15
  39. package/dist/cjs/vega-calendar_4.cjs.entry.js +22 -24
  40. package/dist/cjs/vega-card.cjs.entry.js +12 -11
  41. package/dist/cjs/vega-carousel.cjs.entry.js +13 -13
  42. package/dist/cjs/vega-checkbox_2.cjs.entry.js +12 -13
  43. package/dist/cjs/vega-chip.cjs.entry.js +17 -17
  44. package/dist/cjs/vega-code-block.cjs.entry.js +16 -17
  45. package/dist/cjs/vega-color-picker.cjs.entry.js +6 -7
  46. package/dist/cjs/vega-combo-box.cjs.entry.js +14 -15
  47. package/dist/cjs/vega-date-picker_2.cjs.entry.js +30 -31
  48. package/dist/cjs/vega-dialog_2.cjs.entry.js +27 -27
  49. package/dist/cjs/vega-divider.cjs.entry.js +12 -11
  50. package/dist/cjs/vega-dropdown_5.cjs.entry.js +32 -32
  51. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  52. package/dist/cjs/vega-field-label.cjs.entry.js +6 -7
  53. package/dist/cjs/vega-file-uploader.cjs.entry.js +15 -17
  54. package/dist/cjs/vega-flag-icon.cjs.entry.js +13 -13
  55. package/dist/cjs/vega-flex.cjs.entry.js +12 -11
  56. package/dist/cjs/vega-font.cjs.entry.js +12 -11
  57. package/dist/cjs/vega-form.cjs.entry.js +13 -14
  58. package/dist/cjs/vega-grid.cjs.entry.js +12 -11
  59. package/dist/cjs/vega-icon.cjs.entry.js +15 -14
  60. package/dist/cjs/vega-image-uploader.cjs.entry.js +18 -18
  61. package/dist/cjs/vega-input-credit-card.cjs.entry.js +14 -16
  62. package/dist/cjs/vega-input-numeric.cjs.entry.js +57 -12
  63. package/dist/cjs/vega-input-phone-number.cjs.entry.js +20 -21
  64. package/dist/cjs/vega-input-range.cjs.entry.js +11 -12
  65. package/dist/cjs/vega-input-select.cjs.entry.js +27 -28
  66. package/dist/cjs/vega-input.cjs.entry.js +13 -14
  67. package/dist/cjs/vega-item-toggle.cjs.entry.js +5 -6
  68. package/dist/cjs/vega-left-nav_5.cjs.entry.js +33 -34
  69. package/dist/cjs/vega-loader-wrapper_2.cjs.entry.js +13 -12
  70. package/dist/cjs/vega-page-notification_2.cjs.entry.js +2 -3
  71. package/dist/cjs/vega-pagination-page-selector-mobile.cjs.entry.js +8 -9
  72. package/dist/cjs/vega-pagination-page-size-selector-mobile.cjs.entry.js +3 -4
  73. package/dist/cjs/vega-pagination.cjs.entry.js +18 -18
  74. package/dist/cjs/vega-popover_2.cjs.entry.js +18 -18
  75. package/dist/cjs/vega-progress-tracker.cjs.entry.js +5 -6
  76. package/dist/cjs/vega-radio_2.cjs.entry.js +13 -14
  77. package/dist/cjs/vega-rich-text-content.cjs.entry.js +53 -48
  78. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +387 -261
  79. package/dist/cjs/vega-segment-control.cjs.entry.js +5 -6
  80. package/dist/cjs/vega-selection-chip_2.cjs.entry.js +20 -20
  81. package/dist/cjs/vega-selection-tile_2.cjs.entry.js +13 -14
  82. package/dist/cjs/vega-sidenav_3.cjs.entry.js +24 -25
  83. package/dist/cjs/vega-signature-capture.cjs.entry.js +16 -17
  84. package/dist/cjs/vega-stepper.cjs.entry.js +13 -14
  85. package/dist/cjs/vega-tab-group_2.cjs.entry.js +8 -9
  86. package/dist/cjs/vega-table_8.cjs.entry.js +58 -59
  87. package/dist/cjs/vega-textarea.cjs.entry.js +16 -11
  88. package/dist/cjs/vega-time-picker_2.cjs.entry.js +32 -24
  89. package/dist/cjs/vega-toggle-switch.cjs.entry.js +7 -8
  90. package/dist/cjs/vega-tooltip_2.cjs.entry.js +12 -12
  91. package/dist/cjs/vega.cjs.js +14 -12
  92. package/dist/collection/components/vega-breadcrumb/slimmers/renderers/vega-breadcrumb-collapsed-item-renderer.js +4 -13
  93. package/dist/collection/components/vega-breadcrumb/slimmers/renderers/vega-breadcrumb-item-renderer.js +19 -5
  94. package/dist/collection/components/vega-breadcrumb/vega-breadcrumb.js +6 -5
  95. package/dist/collection/components/vega-button-link/vega-button-link.js +18 -19
  96. package/dist/collection/components/vega-input-numeric/slimmers/renderers/vega-input-numeric-renderer.js +27 -1
  97. package/dist/collection/components/vega-input-numeric/vega-input-numeric.js +64 -0
  98. package/dist/collection/components/vega-rich-text-content/vega-rich-text-content.js +31 -0
  99. package/dist/collection/components/vega-rich-text-editor/constants/constant.js +10 -0
  100. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy-registry.js +11 -0
  101. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-split-text-strategy.js +6 -3
  102. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-or-decorator-node-strategy.js +12 -6
  103. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/code-block-remove-self-strategy.js +2 -2
  104. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/insert-node-to-nearest-root-strategy.js +57 -0
  105. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/update-cursor-position-strategy.js +2 -1
  106. package/dist/collection/components/vega-rich-text-editor/dto/actions/insert-node-to-nearest-root-action.js +14 -0
  107. package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +1 -0
  108. package/dist/collection/components/vega-rich-text-editor/dto/actions/update-cursor-position-action.js +5 -2
  109. package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +12 -0
  110. package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +36 -10
  111. package/dist/collection/components/vega-rich-text-editor/dto/renderers/blocks/link-wrapper-renderer.js +10 -4
  112. package/dist/collection/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.js +145 -0
  113. package/dist/collection/components/vega-rich-text-editor/extensions/extension.abstract.js +97 -0
  114. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-extension.js +113 -0
  115. package/dist/collection/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.js +90 -0
  116. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/insert-token-node-action.js +16 -0
  117. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/insert-token-node-strategy.js +20 -0
  118. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.js +60 -0
  119. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-extension.js +38 -0
  120. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.js +67 -0
  121. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-node.js +55 -0
  122. package/dist/collection/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.js +88 -0
  123. package/dist/collection/components/vega-rich-text-editor/public-api.js +38 -0
  124. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/extension-controller.js +97 -0
  125. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/focus-controller.js +8 -6
  126. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/element-to-dto-strategy.abstract.js +12 -0
  127. package/dist/collection/components/vega-rich-text-editor/slimmers/controllers/selection-controller.js +9 -3
  128. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.js +43 -18
  129. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/link-toolbar-button-slimmer.js +3 -1
  130. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.js +6 -6
  131. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/visual-mode-toolbar-button-slimmer.abstract.js +9 -9
  132. package/dist/collection/components/vega-rich-text-editor/test/dto/content-state.test.js +41 -0
  133. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +44 -11
  134. package/dist/collection/components/vega-textarea/vega-textarea.js +28 -1
  135. package/dist/collection/components/vega-time-picker/vega-time-picker.js +10 -2
  136. package/dist/collection/global/scripts/before-vega-load.js +9 -0
  137. package/dist/collection/helpers/code-format/test/code-formatter.test.js +1 -1
  138. package/dist/collection/helpers/public-api.js +1 -1
  139. package/dist/collection/helpers/rte-manager/dto-action-strategy-manager.js +2 -0
  140. package/dist/collection/helpers/validator/rules/max-number-rule.js +7 -4
  141. package/dist/collection/helpers/validator/rules/min-number-rule.js +7 -4
  142. package/dist/esm/{app-globals-ce54f0ac.js → app-globals-aaff0b25.js} +13 -5
  143. package/dist/esm/base-renderer-101f6d04.js +7 -0
  144. package/dist/esm/{child-nodes-event-prevent-slimmer-2a3115ae.js → child-nodes-event-prevent-slimmer-7fe3dc57.js} +1 -1
  145. package/dist/esm/{code-block-89a4dd13.js → code-block-68300b47.js} +67 -17
  146. package/dist/esm/{component-value-history-controller-slimmer.abstract-95b199df.js → component-value-history-controller-slimmer.abstract-ac2f1bfd.js} +13 -179
  147. package/dist/esm/{design-token-eaa7c221.js → design-token-1a36307e.js} +1 -1
  148. package/dist/esm/{dom-node-subject-factory-3c2e13f1.js → dom-node-subject-observer-factory-c7bc3035.js} +41 -1
  149. package/dist/esm/{content-state-fc47457c.js → dto-renderer-manager-af66bbd9.js} +1643 -1502
  150. package/dist/esm/{element-appender-slimmer-ce83db8a.js → element-appender-slimmer-fe68ec2d.js} +3 -4
  151. package/dist/esm/{event-emit-slimmer-4428ce26.js → event-emit-slimmer-3922d816.js} +2 -3
  152. package/dist/esm/{form-field-controller-slimmer-6e69ca4e.js → form-field-controller-slimmer-f7e8845b.js} +2 -3
  153. package/dist/esm/{image-annotation-action-53812eb7.js → image-annotation-action-f61c2693.js} +20 -76
  154. package/dist/esm/{index-1d479c88.js → index-7fe93427.js} +1 -1
  155. package/dist/esm/index.js +13 -10
  156. package/dist/esm/{icon-manager-2ee1c619.js → internal-icon-manager-f0486245.js} +51 -1
  157. package/dist/esm/{internal-vega-event-manager-a654cf8a.js → internal-vega-event-manager-cb06e987.js} +1 -1
  158. package/dist/esm/language-extension-1ada2a9d.js +204 -0
  159. package/dist/esm/loader.js +14 -12
  160. package/dist/esm/{min-number-rule-86421853.js → min-number-rule-2f1cfbf9.js} +14 -8
  161. package/dist/esm/{public-rules-095284f6.js → public-rules-9f62069a.js} +5 -5
  162. package/dist/esm/range-c2eeb794.js +176 -0
  163. package/dist/esm/{responsive-format-facade-86b6de3b.js → responsive-format-facade-5711c77d.js} +4 -3
  164. package/dist/esm/{rich-text-editor-required-rule-4e8d2db8.js → rich-text-editor-required-rule-de738309.js} +1 -1
  165. package/dist/esm/{string-input-formatter-slimmer-60897659.js → string-input-formatter-slimmer-69117deb.js} +2 -2
  166. package/dist/esm/{style-formatter-a0719a8f.js → style-formatter-2479dc61.js} +1 -1
  167. package/dist/esm/{sub-state-notify-slimmer-ee730968.js → sub-state-notify-slimmer-4252a90e.js} +1 -1
  168. package/dist/esm/{sub-state-observer-slimmer-d474634d.js → sub-state-observer-slimmer-baa8853a.js} +1 -1
  169. package/dist/esm/{vega-skeleton-loader-controller-394a6026.js → token-extension-6fc5e1f5.js} +672 -4
  170. package/dist/esm/vega-accordion.entry.js +13 -14
  171. package/dist/esm/vega-app-header-button.entry.js +14 -15
  172. package/dist/esm/vega-banner.entry.js +4 -6
  173. package/dist/esm/vega-box.entry.js +13 -12
  174. package/dist/esm/vega-brand-logo.entry.js +1 -2
  175. package/dist/esm/vega-breadcrumb.entry.js +42 -76
  176. package/dist/esm/vega-button-circle.entry.js +14 -14
  177. package/dist/esm/vega-button-group_2.entry.js +6 -7
  178. package/dist/esm/vega-button-link.entry.js +20 -19
  179. package/dist/esm/vega-button.entry.js +13 -13
  180. package/dist/esm/vega-calendar_4.entry.js +7 -9
  181. package/dist/esm/vega-card.entry.js +12 -11
  182. package/dist/esm/vega-carousel.entry.js +12 -12
  183. package/dist/esm/vega-checkbox_2.entry.js +6 -7
  184. package/dist/esm/vega-chip.entry.js +14 -14
  185. package/dist/esm/vega-code-block.entry.js +8 -9
  186. package/dist/esm/vega-color-picker.entry.js +5 -6
  187. package/dist/esm/vega-combo-box.entry.js +6 -7
  188. package/dist/esm/vega-date-picker_2.entry.js +16 -17
  189. package/dist/esm/vega-dialog_2.entry.js +15 -15
  190. package/dist/esm/vega-divider.entry.js +12 -11
  191. package/dist/esm/vega-dropdown_5.entry.js +15 -15
  192. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  193. package/dist/esm/vega-field-label.entry.js +4 -5
  194. package/dist/esm/vega-file-uploader.entry.js +6 -8
  195. package/dist/esm/vega-flag-icon.entry.js +12 -12
  196. package/dist/esm/vega-flex.entry.js +12 -11
  197. package/dist/esm/vega-font.entry.js +12 -11
  198. package/dist/esm/vega-form.entry.js +7 -8
  199. package/dist/esm/vega-grid.entry.js +12 -11
  200. package/dist/esm/vega-icon.entry.js +12 -11
  201. package/dist/esm/vega-image-uploader.entry.js +12 -12
  202. package/dist/esm/vega-input-credit-card.entry.js +7 -9
  203. package/dist/esm/vega-input-numeric.entry.js +54 -9
  204. package/dist/esm/vega-input-phone-number.entry.js +12 -13
  205. package/dist/esm/vega-input-range.entry.js +7 -8
  206. package/dist/esm/vega-input-select.entry.js +14 -15
  207. package/dist/esm/vega-input.entry.js +8 -9
  208. package/dist/esm/vega-item-toggle.entry.js +3 -4
  209. package/dist/esm/vega-left-nav_5.entry.js +14 -15
  210. package/dist/esm/vega-loader-wrapper_2.entry.js +11 -10
  211. package/dist/esm/vega-page-notification_2.entry.js +1 -2
  212. package/dist/esm/vega-pagination-page-selector-mobile.entry.js +3 -4
  213. package/dist/esm/vega-pagination-page-size-selector-mobile.entry.js +1 -2
  214. package/dist/esm/vega-pagination.entry.js +10 -10
  215. package/dist/esm/vega-popover_2.entry.js +14 -14
  216. package/dist/esm/vega-progress-tracker.entry.js +3 -4
  217. package/dist/esm/vega-radio_2.entry.js +6 -7
  218. package/dist/esm/vega-rich-text-content.entry.js +24 -19
  219. package/dist/esm/vega-rich-text-editor_4.entry.js +342 -216
  220. package/dist/esm/vega-segment-control.entry.js +4 -5
  221. package/dist/esm/vega-selection-chip_2.entry.js +15 -15
  222. package/dist/esm/vega-selection-tile_2.entry.js +7 -8
  223. package/dist/esm/vega-sidenav_3.entry.js +16 -17
  224. package/dist/esm/vega-signature-capture.entry.js +14 -15
  225. package/dist/esm/vega-stepper.entry.js +7 -8
  226. package/dist/esm/vega-tab-group_2.entry.js +4 -5
  227. package/dist/esm/vega-table_8.entry.js +12 -13
  228. package/dist/esm/vega-textarea.entry.js +13 -8
  229. package/dist/esm/vega-time-picker_2.entry.js +22 -14
  230. package/dist/esm/vega-toggle-switch.entry.js +6 -7
  231. package/dist/esm/vega-tooltip_2.entry.js +12 -12
  232. package/dist/esm/vega.js +14 -12
  233. package/dist/types/components/vega-breadcrumb/slimmers/renderers/vega-breadcrumb-collapsed-item-renderer.d.ts +1 -1
  234. package/dist/types/components/vega-breadcrumb/slimmers/renderers/vega-breadcrumb-item-renderer.d.ts +2 -1
  235. package/dist/types/components/vega-breadcrumb/types.d.ts +1 -0
  236. package/dist/types/components/vega-breadcrumb/vega-breadcrumb.d.ts +2 -2
  237. package/dist/types/components/vega-button-link/vega-button-link.d.ts +5 -8
  238. package/dist/types/components/vega-input-numeric/slimmers/renderers/vega-input-numeric-renderer.d.ts +3 -0
  239. package/dist/types/components/vega-input-numeric/vega-input-numeric.d.ts +12 -0
  240. package/dist/types/components/vega-rich-text-content/vega-rich-text-content.d.ts +8 -0
  241. package/dist/types/components/vega-rich-text-editor/constants/constant.d.ts +2 -1
  242. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy-registry.d.ts +8 -0
  243. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/insert-node-to-nearest-root-strategy.d.ts +18 -0
  244. package/dist/types/components/vega-rich-text-editor/dto/actions/insert-node-to-nearest-root-action.d.ts +14 -0
  245. package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +2 -1
  246. package/dist/types/components/vega-rich-text-editor/dto/actions/update-cursor-position-action.d.ts +4 -2
  247. package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +2 -3
  248. package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +6 -0
  249. package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +11 -1
  250. package/dist/types/components/vega-rich-text-editor/dto/renderers/blocks/link-wrapper-renderer.d.ts +3 -3
  251. package/dist/types/components/vega-rich-text-editor/extensions/base-toolbar-button-renderer.d.ts +95 -2
  252. package/dist/types/components/vega-rich-text-editor/extensions/extension.abstract.d.ts +82 -0
  253. package/dist/types/components/vega-rich-text-editor/extensions/languages/language-extension.d.ts +50 -0
  254. package/dist/types/components/vega-rich-text-editor/extensions/languages/language-toolbar-button-renderer.d.ts +54 -0
  255. package/dist/types/components/vega-rich-text-editor/extensions/tokens/insert-token-node-action.d.ts +16 -0
  256. package/dist/types/components/vega-rich-text-editor/extensions/tokens/insert-token-node-strategy.d.ts +12 -0
  257. package/dist/types/components/vega-rich-text-editor/extensions/tokens/span-to-token-node-strategy.d.ts +24 -0
  258. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-extension.d.ts +14 -0
  259. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node-renderer.d.ts +38 -0
  260. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-node.d.ts +39 -0
  261. package/dist/types/components/vega-rich-text-editor/extensions/tokens/token-toolbar-button-renderer.d.ts +47 -0
  262. package/dist/types/components/vega-rich-text-editor/interface.d.ts +52 -1
  263. package/dist/types/components/vega-rich-text-editor/public-api.d.ts +29 -0
  264. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/extension-controller.d.ts +44 -0
  265. package/dist/types/components/vega-rich-text-editor/slimmers/controllers/helper/element-to-dto-strategy/element-to-dto-strategy.abstract.d.ts +10 -1
  266. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/toolbar-renderer.d.ts +6 -0
  267. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/toolbar-button-slimmer.abstract.d.ts +4 -4
  268. package/dist/types/components/vega-rich-text-editor/slimmers/renderers/tools/visual-mode-toolbar-button-slimmer.abstract.d.ts +7 -7
  269. package/dist/types/components/vega-rich-text-editor/vega-rich-text-editor.d.ts +10 -0
  270. package/dist/types/components/vega-textarea/vega-textarea.d.ts +6 -0
  271. package/dist/types/components/vega-time-picker/vega-time-picker.d.ts +8 -0
  272. package/dist/types/components.d.ts +59 -10
  273. package/dist/types/helpers/public-api.d.ts +1 -1
  274. package/dist/types/helpers/validator/rules/max-number-rule.d.ts +3 -1
  275. package/dist/types/helpers/validator/rules/min-number-rule.d.ts +3 -1
  276. package/dist/types/types/components.type.d.ts +1 -0
  277. package/dist/types/types/public-api.d.ts +11 -0
  278. package/dist/vega/index.esm.js +1 -1
  279. package/dist/vega/p-03cc47b7.entry.js +1 -0
  280. package/dist/vega/p-07836d27.entry.js +1 -0
  281. package/dist/vega/p-079f5d94.entry.js +1 -0
  282. package/dist/vega/p-09cb98f3.entry.js +1 -0
  283. package/dist/vega/{p-fb232e29.entry.js → p-0b91bb73.entry.js} +1 -1
  284. package/dist/vega/p-15a78afd.entry.js +1 -0
  285. package/dist/vega/p-16075b30.entry.js +1 -0
  286. package/dist/vega/{p-67101f43.entry.js → p-1c08077c.entry.js} +1 -1
  287. package/dist/vega/{p-c5e862aa.js → p-1da54ff3.js} +1 -1
  288. package/dist/vega/p-20a180e4.js +1 -0
  289. package/dist/vega/p-2591f217.entry.js +1 -0
  290. package/dist/vega/p-25ddb070.entry.js +1 -0
  291. package/dist/vega/p-2788afe7.entry.js +1 -0
  292. package/dist/vega/p-2a1b3108.entry.js +1 -0
  293. package/dist/vega/p-2ee4def0.js +1 -0
  294. package/dist/vega/p-2f88ba36.entry.js +1 -0
  295. package/dist/vega/{p-f2a1fe6a.js → p-39c185a5.js} +1 -1
  296. package/dist/vega/p-3b1bedaf.entry.js +1 -0
  297. package/dist/vega/p-3c96bbe1.entry.js +1 -0
  298. package/dist/vega/p-3cdbee7e.js +1 -0
  299. package/dist/vega/p-3d0d8a21.entry.js +1 -0
  300. package/dist/vega/p-3d53858c.entry.js +1 -0
  301. package/dist/vega/{p-927cab0c.entry.js → p-3f3bbaaa.entry.js} +2 -2
  302. package/dist/vega/p-42c364e0.entry.js +1 -0
  303. package/dist/vega/p-4f56a427.entry.js +1 -0
  304. package/dist/vega/p-4f5a2b0c.entry.js +1 -0
  305. package/dist/vega/p-51d40b0d.entry.js +1 -0
  306. package/dist/vega/p-5420c1d4.entry.js +1 -0
  307. package/dist/vega/p-56ff8559.entry.js +1 -0
  308. package/dist/vega/p-589b7ea3.entry.js +1 -0
  309. package/dist/vega/p-5d3c6a06.entry.js +1 -0
  310. package/dist/vega/p-5dec47da.entry.js +1 -0
  311. package/dist/vega/p-5f377954.js +1 -1
  312. package/dist/vega/p-6244b0ad.entry.js +1 -0
  313. package/dist/vega/p-63212cc1.js +1 -0
  314. package/dist/vega/p-6585cfd5.entry.js +1 -0
  315. package/dist/vega/p-6ba27010.js +1 -0
  316. package/dist/vega/{p-129f5938.js → p-6caa6bb2.js} +1 -1
  317. package/dist/vega/p-74ac2a48.js +1 -0
  318. package/dist/vega/p-76c7538a.entry.js +1 -0
  319. package/dist/vega/p-7d8eaca9.entry.js +1 -0
  320. package/dist/vega/p-7da6e7bd.js +1 -0
  321. package/dist/vega/p-81765b4b.entry.js +1 -0
  322. package/dist/vega/p-81fbf18f.entry.js +1 -0
  323. package/dist/vega/p-8682ee0a.entry.js +1 -0
  324. package/dist/vega/p-893d5dfa.js +1 -0
  325. package/dist/vega/p-8a484812.entry.js +1 -0
  326. package/dist/vega/p-8a6b820a.entry.js +1 -0
  327. package/dist/vega/p-8c9ea6f4.js +1 -0
  328. package/dist/vega/p-8e58d6cb.entry.js +1 -0
  329. package/dist/vega/p-8e812dca.entry.js +1 -0
  330. package/dist/vega/p-8f056ac2.js +1 -0
  331. package/dist/vega/{p-e66aef91.entry.js → p-9125ba84.entry.js} +1 -1
  332. package/dist/vega/p-92469fa1.entry.js +1 -0
  333. package/dist/vega/p-9b2d8516.entry.js +1 -0
  334. package/dist/vega/p-9ca0bdcc.js +1 -0
  335. package/dist/vega/p-a61e4bba.entry.js +1 -0
  336. package/dist/vega/p-a646b66d.js +1 -0
  337. package/dist/vega/p-a7b5f497.js +1 -0
  338. package/dist/vega/p-b1054e18.entry.js +1 -0
  339. package/dist/vega/p-b1a5ff74.entry.js +1 -0
  340. package/dist/vega/p-b32f7aac.entry.js +1 -0
  341. package/dist/vega/{p-dc6f45af.entry.js → p-baafe7d9.entry.js} +1 -1
  342. package/dist/vega/{p-3a6abcd7.entry.js → p-bb51e020.entry.js} +1 -1
  343. package/dist/vega/{p-e764acd5.js → p-bb61f015.js} +1 -1
  344. package/dist/vega/p-bc0ae89a.entry.js +1 -0
  345. package/dist/vega/p-bd39af8a.entry.js +1 -0
  346. package/dist/vega/{p-cd18f0fe.js → p-bdd9ef3b.js} +1 -1
  347. package/dist/vega/p-c08ba4d7.entry.js +1 -0
  348. package/dist/vega/{p-5f85811c.entry.js → p-c167fa41.entry.js} +1 -1
  349. package/dist/vega/{p-7ecf65ec.js → p-c2377afa.js} +1 -1
  350. package/dist/vega/p-c671f57e.js +1 -0
  351. package/dist/vega/p-c6a354b1.js +1 -0
  352. package/dist/vega/p-c7726252.js +1 -0
  353. package/dist/vega/p-ce1766fa.js +1 -0
  354. package/dist/vega/p-cfb2af9c.entry.js +1 -0
  355. package/dist/vega/{p-3bf95faf.entry.js → p-d2790023.entry.js} +2 -2
  356. package/dist/vega/p-d3bbfb1b.js +1 -0
  357. package/dist/vega/{p-5faa7313.entry.js → p-d9617358.entry.js} +1 -1
  358. package/dist/vega/p-d982babe.entry.js +1 -0
  359. package/dist/vega/p-da6369d4.entry.js +1 -0
  360. package/dist/vega/p-dcae53cf.entry.js +1 -0
  361. package/dist/vega/p-ddfad815.entry.js +1 -0
  362. package/dist/vega/p-e00ed9bd.entry.js +1 -0
  363. package/dist/vega/p-ebfc5739.entry.js +1 -0
  364. package/dist/vega/p-f0ff4463.js +1 -0
  365. package/dist/vega/{p-aeccc7f8.js → p-f1436035.js} +1 -1
  366. package/dist/vega/p-ff3a8907.entry.js +1 -0
  367. package/dist/vega/vega.esm.js +1 -1
  368. package/package.json +1 -1
  369. package/dist/cjs/dom-node-subject-observer-factory-15130e50.js +0 -45
  370. package/dist/cjs/internal-icon-manager-f8677abb.js +0 -55
  371. package/dist/collection/components/vega-breadcrumb/slimmers/controllers/vega-breadcrumb-click-controller.js +0 -43
  372. package/dist/esm/dom-node-subject-observer-factory-1e456cd4.js +0 -43
  373. package/dist/esm/internal-icon-manager-7eac52c8.js +0 -53
  374. package/dist/types/components/vega-breadcrumb/slimmers/controllers/vega-breadcrumb-click-controller.d.ts +0 -26
  375. package/dist/vega/p-0070e970.entry.js +0 -1
  376. package/dist/vega/p-0169af6b.entry.js +0 -1
  377. package/dist/vega/p-03e9cbc8.js +0 -1
  378. package/dist/vega/p-04341cd4.entry.js +0 -1
  379. package/dist/vega/p-0664ca9c.js +0 -1
  380. package/dist/vega/p-074b73f8.js +0 -1
  381. package/dist/vega/p-08fb66a4.entry.js +0 -1
  382. package/dist/vega/p-0cf35281.entry.js +0 -1
  383. package/dist/vega/p-0e75ddb2.entry.js +0 -1
  384. package/dist/vega/p-13cb5a04.entry.js +0 -1
  385. package/dist/vega/p-18223240.js +0 -1
  386. package/dist/vega/p-19ce9ae6.js +0 -1
  387. package/dist/vega/p-27f922fe.entry.js +0 -1
  388. package/dist/vega/p-2c7b7dd6.entry.js +0 -1
  389. package/dist/vega/p-310f9e76.entry.js +0 -1
  390. package/dist/vega/p-330d7ba8.js +0 -1
  391. package/dist/vega/p-34fdbe7a.js +0 -1
  392. package/dist/vega/p-3d6c302d.js +0 -1
  393. package/dist/vega/p-42563036.entry.js +0 -1
  394. package/dist/vega/p-441a681b.js +0 -1
  395. package/dist/vega/p-4a357f30.entry.js +0 -1
  396. package/dist/vega/p-4e68dfd9.js +0 -1
  397. package/dist/vega/p-4e8b6eb6.entry.js +0 -1
  398. package/dist/vega/p-50dd3cf1.js +0 -1
  399. package/dist/vega/p-518722aa.js +0 -1
  400. package/dist/vega/p-5422fdc4.entry.js +0 -1
  401. package/dist/vega/p-5c36a6cb.entry.js +0 -1
  402. package/dist/vega/p-5d095f9b.entry.js +0 -1
  403. package/dist/vega/p-68806f9c.entry.js +0 -1
  404. package/dist/vega/p-6cf490d9.entry.js +0 -1
  405. package/dist/vega/p-6def20e1.js +0 -1
  406. package/dist/vega/p-78d3f99b.entry.js +0 -1
  407. package/dist/vega/p-792715f3.js +0 -1
  408. package/dist/vega/p-7a201c6e.entry.js +0 -1
  409. package/dist/vega/p-7c22a1c3.entry.js +0 -1
  410. package/dist/vega/p-7f329473.entry.js +0 -1
  411. package/dist/vega/p-80f1b680.js +0 -1
  412. package/dist/vega/p-82beb586.entry.js +0 -1
  413. package/dist/vega/p-84eb131b.entry.js +0 -1
  414. package/dist/vega/p-8c46e116.js +0 -1
  415. package/dist/vega/p-909820dd.entry.js +0 -1
  416. package/dist/vega/p-989e141d.entry.js +0 -1
  417. package/dist/vega/p-a29e5d32.js +0 -1
  418. package/dist/vega/p-a3942d0b.entry.js +0 -1
  419. package/dist/vega/p-a66533c1.entry.js +0 -1
  420. package/dist/vega/p-a9b831d8.entry.js +0 -1
  421. package/dist/vega/p-b1d0e4cb.entry.js +0 -1
  422. package/dist/vega/p-b34f9891.entry.js +0 -1
  423. package/dist/vega/p-b820e42f.entry.js +0 -1
  424. package/dist/vega/p-c4677b0c.entry.js +0 -1
  425. package/dist/vega/p-c467fe81.entry.js +0 -1
  426. package/dist/vega/p-c7762c86.entry.js +0 -1
  427. package/dist/vega/p-c9e57cf1.entry.js +0 -1
  428. package/dist/vega/p-d0b3e319.entry.js +0 -1
  429. package/dist/vega/p-d7b4ffed.entry.js +0 -1
  430. package/dist/vega/p-e4586f13.entry.js +0 -1
  431. package/dist/vega/p-e71c4a09.entry.js +0 -1
  432. package/dist/vega/p-ea66d9f7.entry.js +0 -1
  433. package/dist/vega/p-ebbaa112.entry.js +0 -1
  434. package/dist/vega/p-ec6819fe.entry.js +0 -1
  435. package/dist/vega/p-ec9a8f81.entry.js +0 -1
  436. package/dist/vega/p-ed01328c.entry.js +0 -1
  437. package/dist/vega/p-ed798cd4.entry.js +0 -1
  438. package/dist/vega/p-edb71a72.entry.js +0 -1
  439. package/dist/vega/p-f08a4adf.js +0 -1
  440. package/dist/vega/p-f4e23c23.entry.js +0 -1
  441. package/dist/vega/p-f825e8a2.entry.js +0 -1
  442. package/dist/vega/p-f9deb43e.entry.js +0 -1
  443. package/dist/vega/p-fdd930a9.entry.js +0 -1
  444. package/dist/vega/p-fe52c370.entry.js +0 -1
@@ -7,13 +7,32 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { h } from '@stencil/core';
8
8
  import { MapToComponentField, VegaSlimmer } from 'vega-slimmer/core';
9
9
  import { DomNodeSubjectObserverFactory } from '../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-observer-factory';
10
- import { VegaChange } from '../../../../helpers/event-manager/event-id/vega-event-id';
10
+ import { VegaBlur, VegaChange } from '../../../../helpers/event-manager/event-id/vega-event-id';
11
+ import { normalizeNumberByRanger } from '../../../../utils/number';
11
12
  export class VegaInputNumericRenderer extends VegaSlimmer {
12
13
  constructor() {
13
14
  super(...arguments);
14
15
  this.onInputChange = (payload) => {
15
16
  this.valueController.updateValue(payload.detail);
16
17
  };
18
+ this.onInputBlur = (payload) => {
19
+ const vegaInput = payload.host;
20
+ const normalizedValue = vegaInput.value.replace(/,/g, '');
21
+ if (normalizedValue !== '' && !isNaN(normalizedValue)) {
22
+ let inputValue = normalizeNumberByRanger(Number(normalizedValue), this.min, this.max);
23
+ if (this.integerOnly) {
24
+ if (inputValue === this.min) {
25
+ inputValue = Math.ceil(this.min);
26
+ }
27
+ else if (inputValue === this.max) {
28
+ inputValue = Math.floor(this.max);
29
+ }
30
+ }
31
+ if (inputValue !== Number(normalizedValue)) {
32
+ this.valueController.updateValue(inputValue.toString());
33
+ }
34
+ }
35
+ };
17
36
  }
18
37
  getInputRef() {
19
38
  return this.vegaInputRef.shadowRoot.querySelector('input');
@@ -31,6 +50,7 @@ export class VegaInputNumericRenderer extends VegaSlimmer {
31
50
  return (h("vega-input", { value: this.value || '', showClearIcon: this.showClearIcon, disabled: this.disabled, label: this.label, hint: this.hint, required: this.required, type: "number", placeholder: this.placeholder, size: this.size === 'small' ? 'small' : 'default', prefixIcon: this.prefixIcon, ref: (ref) => {
32
51
  this.vegaInputRef = ref;
33
52
  DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaChange, (payload) => this.onInputChange(payload));
53
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(ref, VegaBlur, (payload) => this.onInputBlur(payload));
34
54
  }, maskConfig: {
35
55
  type: 'number',
36
56
  options: maskOptions,
@@ -70,6 +90,12 @@ __decorate([
70
90
  __decorate([
71
91
  MapToComponentField()
72
92
  ], VegaInputNumericRenderer.prototype, "integerOnly", void 0);
93
+ __decorate([
94
+ MapToComponentField()
95
+ ], VegaInputNumericRenderer.prototype, "min", void 0);
96
+ __decorate([
97
+ MapToComponentField()
98
+ ], VegaInputNumericRenderer.prototype, "max", void 0);
73
99
  __decorate([
74
100
  MapToComponentField()
75
101
  ], VegaInputNumericRenderer.prototype, "valueController", void 0);
@@ -17,6 +17,8 @@ import { VegaInputNumericKeyboardController } from './slimmers/controllers/vega-
17
17
  import { FormFieldControllerSlimmer } from '../../helpers/slimmers/form-field-controller-slimmer';
18
18
  import { RequiredFieldRule } from '../../helpers/validator/rules/required-field-rule';
19
19
  import { createSubStateNotifySlimmer } from '../../helpers/slimmers/sub-state/sub-state-notify-slimmer';
20
+ import { MinNumberRule } from '../../helpers/validator/rules/min-number-rule';
21
+ import { MaxNumberRule } from '../../helpers/validator/rules/max-number-rule';
20
22
  /**
21
23
  * @vegaVersion 2.29.0
22
24
  */
@@ -34,6 +36,14 @@ export class VegaInputNumeric {
34
36
  propertyName: 'required',
35
37
  ruleFactory: (isRequired) => (isRequired ? new RequiredFieldRule() : null),
36
38
  },
39
+ {
40
+ propertyName: 'min',
41
+ ruleFactory: (min) => typeof min === 'number' ? new MinNumberRule({ minValue: min }) : null,
42
+ },
43
+ {
44
+ propertyName: 'max',
45
+ ruleFactory: (max) => typeof max === 'number' ? new MaxNumberRule({ maxValue: max }) : null,
46
+ },
37
47
  ],
38
48
  validationRulesName: 'validationRules',
39
49
  inputContainerGetter: () => this.renderer.getContainerRef(),
@@ -138,6 +148,18 @@ export class VegaInputNumeric {
138
148
  * @vegaVersion 2.53.0
139
149
  */
140
150
  this.showClearIcon = true;
151
+ /**
152
+ * Sets the minimum allowable value for the numeric input.
153
+ *
154
+ * @vegaVersion 2.63.0
155
+ */
156
+ this.min = null;
157
+ /**
158
+ * Sets the maximum allowable value for the numeric input.
159
+ *
160
+ * @vegaVersion 2.63.0
161
+ */
162
+ this.max = null;
141
163
  }
142
164
  watchPrefixText() {
143
165
  methodPlaceholder();
@@ -538,6 +560,48 @@ export class VegaInputNumeric {
538
560
  "attribute": "show-clear-icon",
539
561
  "reflect": false,
540
562
  "defaultValue": "true"
563
+ },
564
+ "min": {
565
+ "type": "number",
566
+ "mutable": false,
567
+ "complexType": {
568
+ "original": "number | null",
569
+ "resolved": "number",
570
+ "references": {}
571
+ },
572
+ "required": false,
573
+ "optional": false,
574
+ "docs": {
575
+ "tags": [{
576
+ "name": "vegaVersion",
577
+ "text": "2.63.0"
578
+ }],
579
+ "text": "Sets the minimum allowable value for the numeric input."
580
+ },
581
+ "attribute": "min",
582
+ "reflect": true,
583
+ "defaultValue": "null"
584
+ },
585
+ "max": {
586
+ "type": "number",
587
+ "mutable": false,
588
+ "complexType": {
589
+ "original": "number | null",
590
+ "resolved": "number",
591
+ "references": {}
592
+ },
593
+ "required": false,
594
+ "optional": false,
595
+ "docs": {
596
+ "tags": [{
597
+ "name": "vegaVersion",
598
+ "text": "2.63.0"
599
+ }],
600
+ "text": "Sets the maximum allowable value for the numeric input."
601
+ },
602
+ "attribute": "max",
603
+ "reflect": true,
604
+ "defaultValue": "null"
541
605
  }
542
606
  }; }
543
607
  static get states() { return {
@@ -27,6 +27,13 @@ export class VegaRichTextContent {
27
27
  * @vegaVersion 2.34.0
28
28
  */
29
29
  this.contentEditable = false;
30
+ /**
31
+ * Defines the configuration for rich text content extensions.
32
+ * It enables support for custom nodes, ensuring that extended content is rendered correctly.
33
+ *
34
+ * @vegaVersion 2.62.0
35
+ */
36
+ this.extensions = [];
30
37
  }
31
38
  watchValueUpdate() {
32
39
  methodPlaceholder();
@@ -77,6 +84,30 @@ export class VegaRichTextContent {
77
84
  }],
78
85
  "text": "Specifies the text or formatted information displayed by the rich text content, which can be either VegaRTEContent or VegaRTEContentBlock.\nIt is recommended to use the VegaRTEContent type.\nOnly in exceptional cases should the original data in the VegaRTEContentBlock type be used."
79
86
  }
87
+ },
88
+ "extensions": {
89
+ "type": "unknown",
90
+ "mutable": false,
91
+ "complexType": {
92
+ "original": "VegaRTEExtension[]",
93
+ "resolved": "VegaRTEExtension[]",
94
+ "references": {
95
+ "VegaRTEExtension": {
96
+ "location": "import",
97
+ "path": "../vega-rich-text-editor/extensions/extension.abstract"
98
+ }
99
+ }
100
+ },
101
+ "required": false,
102
+ "optional": false,
103
+ "docs": {
104
+ "tags": [{
105
+ "name": "vegaVersion",
106
+ "text": "2.62.0"
107
+ }],
108
+ "text": "Defines the configuration for rich text content extensions.\nIt enables support for custom nodes, ensuring that extended content is rendered correctly."
109
+ },
110
+ "defaultValue": "[]"
80
111
  }
81
112
  }; }
82
113
  static get states() { return {
@@ -32,3 +32,13 @@ export const RTE_TEXT_COLORS = [
32
32
  },
33
33
  ];
34
34
  export const ZERO_WIDTH_SPACE = '\u200b';
35
+ export const VegaRTEPresetToolbarItems = [
36
+ ['textStyles'],
37
+ ['bold', 'italic', 'underline', 'strikethrough', 'code'],
38
+ ['textColor'],
39
+ ['horizontalAlignment', 'bulletsNumbers'],
40
+ ['moreIndent', 'lessIndent'],
41
+ ['link'],
42
+ ['image'],
43
+ ['clearStyle'],
44
+ ];
@@ -52,5 +52,16 @@ export class ActionHandleStrategyRegistry {
52
52
  LogUtility.error(`Type ${actionType} action handle strategy is not registered in class ${RTEInstance.constructor.name}`);
53
53
  }
54
54
  }
55
+ /**
56
+ * Check if the action type can be handled by strategy for the specific RTE instance.
57
+ *
58
+ * @param {string} actionType - The special action type or the action class name.
59
+ * @param {RTENode | RTEBlock} RTEInstance - The rich text editor node.
60
+ * @returns {boolean} - Whether the action type can be handled by the strategy.
61
+ */
62
+ static canHandle(actionType, RTEInstance) {
63
+ const strategy = ActionHandleStrategyRegistry.get(actionType, RTEInstance.constructor.name);
64
+ return strategy ? true : false;
65
+ }
55
66
  }
56
67
  ActionHandleStrategyRegistry.registry = new Map();
@@ -30,7 +30,8 @@ export class NodeSplitTextStrategy extends ActionHandleStrategy {
30
30
  if (noTextRangeSelected) {
31
31
  return this.insertNewNode(startOffset, target);
32
32
  }
33
- if (this.shouldSplitSelection(selectionRangeAnnotation.range)) {
33
+ if (this.shouldSplitSelection(selectionRangeAnnotation.range) &&
34
+ target.isContentEditable()) {
34
35
  const splittedTextNodes = this.splitTextNode(selectionRangeAnnotation.range, target);
35
36
  if (item.annotationMap.has('LINK')) {
36
37
  item.apply(new LinkGroupNodeSplitAction(splittedTextNodes));
@@ -57,10 +58,12 @@ export class NodeSplitTextStrategy extends ActionHandleStrategy {
57
58
  insertNewNode(startOffset, target) {
58
59
  const newNode = target.cloneWithText('');
59
60
  this.setApplyTargetNode(newNode);
60
- if (startOffset === 0) {
61
+ const index = target.parent.children.findIndex((node) => node === target);
62
+ if (startOffset === 0 || (!target.isContentEditable() && startOffset === index)) {
61
63
  return [newNode, target];
62
64
  }
63
- if (startOffset === target.text.length) {
65
+ if (startOffset === target.text.length ||
66
+ (!target.isContentEditable() && startOffset === index + 1)) {
64
67
  return [target, newNode];
65
68
  }
66
69
  const beforeNode = target.cloneWithText(target.text.substring(0, startOffset));
@@ -57,8 +57,9 @@ export class BlockDeleteTextOrDecoratorNodeStrategy extends BlockDeleteNodeConte
57
57
  else {
58
58
  let previousNode = this.getPreviousNode(startContainerNode);
59
59
  let nextNode = null;
60
+ const isCurrentNodeEmpty = startContainerNode.isEmpty();
60
61
  if (target.children.length && previousNode && previousNode.parent !== target) {
61
- if (startContainerNode.isEmpty()) {
62
+ if (isCurrentNodeEmpty) {
62
63
  target.apply(new RemoveChildrenAction(startContainerNode));
63
64
  }
64
65
  if (target.type === previousNode.parent.type) {
@@ -66,7 +67,7 @@ export class BlockDeleteTextOrDecoratorNodeStrategy extends BlockDeleteNodeConte
66
67
  }
67
68
  }
68
69
  else {
69
- if (this.isContentFirstNode(startContainerNode) && startContainerNode.isEmpty()) {
70
+ if (this.isContentFirstNode(startContainerNode) && isCurrentNodeEmpty) {
70
71
  nextNode = this.getNextNode(startContainerNode);
71
72
  }
72
73
  /**
@@ -76,21 +77,26 @@ export class BlockDeleteTextOrDecoratorNodeStrategy extends BlockDeleteNodeConte
76
77
  * \n
77
78
  * test
78
79
  */
79
- if (startContainerNode.isEmpty()) {
80
+ if (isCurrentNodeEmpty) {
80
81
  target.apply(new RemoveChildrenAction(startContainerNode));
81
82
  }
82
83
  /**
83
- * Remove line break
84
+ * Remove line break or non-editable node
84
85
  *
85
86
  * @example caret at the begin of second line
86
87
  * \n
87
88
  * test
89
+ * @example caret at the end of non-editable node and start of the text node
90
+ * <img/><span>test</span>
88
91
  */
89
- if (previousNode && previousNode.isTextNode() && previousNode.isEmpty()) {
92
+ if (previousNode &&
93
+ previousNode.isTextNode() &&
94
+ (previousNode.isEmpty() ||
95
+ (!previousNode.isContentEditable() && previousNode.parent === target))) {
90
96
  const shouldRemoveNode = previousNode;
91
97
  previousNode = this.getPreviousNode(previousNode);
92
98
  shouldRemoveNode.parent.apply(new RemoveChildrenAction(shouldRemoveNode));
93
- if (!previousNode) {
99
+ if (!previousNode && !isCurrentNodeEmpty) {
94
100
  nextNode = startContainerNode;
95
101
  }
96
102
  }
@@ -69,8 +69,8 @@ export class CodeBlockRemoveSelfStrategy extends BlockDeleteNodeContentStrategy
69
69
  * @returns {number} - The number value.
70
70
  */
71
71
  getRTENodeEndOffset(node) {
72
- if (node && node.type !== 'CODE_BLOCK_NODE') {
73
- return node['type'] !== 'IMAGE' ? node['text'].length : 1;
72
+ if (node) {
73
+ return node.getRangeEndOffset();
74
74
  }
75
75
  return 0;
76
76
  }
@@ -0,0 +1,57 @@
1
+ import { InsertChildrenAfterAction } from '../../actions/insert-children-after-block';
2
+ import { InsertChildrenBeforeAction } from '../../actions/insert-children-before-block';
3
+ import { RemoveChildrenAction } from '../../actions/remove-child-action';
4
+ import { UpdateCursorPositionAction } from '../../actions/update-cursor-position-action';
5
+ import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
6
+ /**
7
+ * Insert a new node in nearest position of parent block strategy.
8
+ */
9
+ export class InsertNodeToNearestRootStrategy extends ActionHandleStrategy {
10
+ /**
11
+ * @inheritDoc
12
+ */
13
+ handleAction(action, target) {
14
+ const { rteRange, nodeToBeInserted } = action;
15
+ const { startNode, startOffset } = rteRange;
16
+ if (startNode) {
17
+ const parent = target;
18
+ if (startNode.isContentEditable() && startNode.isTextNode()) {
19
+ if (startNode.text === '\n' || !startNode.text || startOffset === 0) {
20
+ parent.apply(new InsertChildrenBeforeAction(startNode, nodeToBeInserted));
21
+ }
22
+ else {
23
+ const startText = startNode.text.substring(0, startOffset);
24
+ const endText = startNode.text.substring(startOffset);
25
+ const startTextNode = startNode.cloneWithText(startText);
26
+ const endTextNode = startNode.cloneWithText(endText);
27
+ const insertNodes = [startTextNode, nodeToBeInserted];
28
+ if (endText) {
29
+ insertNodes.push(endTextNode);
30
+ }
31
+ parent.apply(new InsertChildrenBeforeAction(startNode, ...insertNodes));
32
+ parent.apply(new RemoveChildrenAction(startNode));
33
+ }
34
+ }
35
+ else {
36
+ if (startOffset !== 0) {
37
+ parent.apply(new InsertChildrenAfterAction(startNode, nodeToBeInserted));
38
+ }
39
+ else {
40
+ parent.apply(new InsertChildrenBeforeAction(startNode, nodeToBeInserted));
41
+ }
42
+ }
43
+ this.updateCursorPosition(nodeToBeInserted);
44
+ }
45
+ }
46
+ /**
47
+ * Update the cursor position to end of the inserted node.
48
+ *
49
+ * @param {RTENode} node - node to find root content
50
+ */
51
+ updateCursorPosition(node) {
52
+ const root = this.getRootContent(node.parent);
53
+ if (root) {
54
+ root.apply(new UpdateCursorPositionAction(node));
55
+ }
56
+ }
57
+ }
@@ -11,12 +11,13 @@ export class UpdateCursorPositionStrategy extends ActionHandleStrategy {
11
11
  * @inheritDoc
12
12
  */
13
13
  handleAction(action, target) {
14
- const { offset, nextFocusNode } = action;
14
+ const { offset, nextFocusNode, immediatelyRun } = action;
15
15
  const host = stateEntityRenderingRegistry.getDOMByEntity(target);
16
16
  if (host) {
17
17
  changeManager.notify(domNodeSubjectFactory.getSubject(host, VegaInternalUpdateRTECursorPosition), {
18
18
  node: nextFocusNode,
19
19
  offset,
20
+ updateDirectly: immediatelyRun,
20
21
  });
21
22
  }
22
23
  }
@@ -0,0 +1,14 @@
1
+ import { ModifyContentAction, ModifyContentActionType } from './modify-content-action.abstract';
2
+ /**
3
+ * Insert a new children to the nearest position of the parent container
4
+ *
5
+ * @example parent.apply(new InsertNodeToNearestRoot(rteRange, nodeToBeInserted))
6
+ */
7
+ export class InsertNodeToNearestRootAction extends ModifyContentAction {
8
+ constructor(rteRange, nodeToBeInserted) {
9
+ super();
10
+ this.type = ModifyContentActionType.INSERT_NODE_TO_NEAREST_ROOT;
11
+ this.rteRange = rteRange;
12
+ this.nodeToBeInserted = nodeToBeInserted;
13
+ }
14
+ }
@@ -28,6 +28,7 @@ export var ModifyContentActionType;
28
28
  ModifyContentActionType["DELETE_LINK_GROUP"] = "DELETE_LINK_GROUP";
29
29
  ModifyContentActionType["UPDATE_CURSOR_POSITION"] = "UPDATE_CURSOR_POSITION";
30
30
  ModifyContentActionType["INSERT_TEXT_TO_DECORATOR_NODE"] = "INSERT_TEXT_TO_DECORATOR_NODE";
31
+ ModifyContentActionType["INSERT_NODE_TO_NEAREST_ROOT"] = "INSERT_NODE_TO_NEAREST_ROOT";
31
32
  })(ModifyContentActionType || (ModifyContentActionType = {}));
32
33
  /**
33
34
  * Abstract class for update node content, delete node, insert node
@@ -2,7 +2,7 @@ import { ModifyContentAction, ModifyContentActionType } from './modify-content-a
2
2
  /**
3
3
  * Update the cursor position in the editor.
4
4
  *
5
- * @example richEditorRef.value.apply(new UpdateCursorPositionAction(nextFocusNode, [offset]))
5
+ * @example richEditorRef.value.apply(new UpdateCursorPositionAction(nextFocusNode, [offset], [immediatelyRun]))
6
6
  */
7
7
  export class UpdateCursorPositionAction extends ModifyContentAction {
8
8
  /**
@@ -10,11 +10,14 @@ export class UpdateCursorPositionAction extends ModifyContentAction {
10
10
  *
11
11
  * @param {RTENode} nextFocusNode - The rich text editor needs focus node.
12
12
  * @param {number} offset - The cursor offset position.
13
+ * @param {boolean} immediatelyRun - Whether to immediately set the cursor position after applying it. Usually the set action will trigger after the UI renders.
13
14
  */
14
- constructor(nextFocusNode, offset) {
15
+ constructor(nextFocusNode, offset, immediatelyRun = false) {
15
16
  super();
16
17
  this.type = ModifyContentActionType.UPDATE_CURSOR_POSITION;
18
+ this.immediatelyRun = false;
17
19
  this.nextFocusNode = nextFocusNode;
18
20
  this.offset = offset;
21
+ this.immediatelyRun = immediatelyRun;
19
22
  }
20
23
  }
@@ -137,6 +137,18 @@ export class VegaRTEContent {
137
137
  apply(action) {
138
138
  ActionHandleStrategyRegistry.executeTheStrategy(action, this);
139
139
  }
140
+ /**
141
+ * Get the last node in the content.
142
+ *
143
+ * @returns {Nullable<RTENode>} The last node in the content or null if there are no nodes.
144
+ */
145
+ getLastNode() {
146
+ if (this.children.length === 0) {
147
+ return null;
148
+ }
149
+ const lastBlock = this.children[this.children.length - 1];
150
+ return lastBlock.getLastNode();
151
+ }
140
152
  /**
141
153
  * Convert text to list.
142
154
  *
@@ -31,6 +31,7 @@ import { InlineHtmlAnnotation } from '../annotations/inline-html-annotation';
31
31
  import { LinkGroupNodeSplitStrategy } from '../action-handle-strategies/modify-content-strategies/link-group-node-split-strategy';
32
32
  import { DeleteLinkGroupStrategy } from '../action-handle-strategies/modify-content-strategies/delete-link-group-strategy';
33
33
  import { PlainTextAnnotation } from '../annotations/plain-text-annotation';
34
+ import { LinkAnnotationAction } from '../actions/link-annotation-action';
34
35
  /**
35
36
  * Text node
36
37
  */
@@ -63,17 +64,29 @@ export class RTETextNode extends RTENode {
63
64
  const textNode = new RTETextNode(richText.id, richText.text, parentBlock);
64
65
  const { annotations } = richText;
65
66
  if (annotations) {
66
- textNode.annotationMap = new Map(Object.keys(annotations)
67
- .map((type) => {
68
- if (type === 'link' && annotations.link && parentBlock) {
69
- parentBlock.apply(new LinkGroupAnnotationAction(annotations.link.groupKey, [textNode], 'link'));
70
- }
71
- return this.createAnnotationEntity(type, annotations[type], options);
72
- })
73
- .filter(isNonNullable));
67
+ textNode.annotationMap = this.generateTextAnnotationMap(annotations, options, parentBlock, textNode);
74
68
  }
75
69
  return textNode;
76
70
  }
71
+ /**
72
+ * Generates a map of text annotations for the given set of annotations.
73
+ *
74
+ * @param {VegaRTETextAnnotations} annotations - The annotations to be converted into a map.
75
+ * @param {VegaRTETransformOptions} options - Optional transformation options.
76
+ * @param {RTETextBlock} parentBlock - The parent text block.
77
+ * @param {RTETextNode} textNode - The text node.
78
+ * @returns {NodeAnnotations} The map of text annotations.
79
+ */
80
+ static generateTextAnnotationMap(annotations, options, parentBlock, textNode) {
81
+ return new Map(Object.keys(annotations)
82
+ .map((type) => {
83
+ if (type === 'link' && annotations.link && parentBlock && textNode) {
84
+ parentBlock.apply(new LinkGroupAnnotationAction(annotations.link.groupKey, [textNode], 'link'));
85
+ }
86
+ return this.createAnnotationEntity(type, annotations[type], options);
87
+ })
88
+ .filter(isNonNullable));
89
+ }
77
90
  /**
78
91
  * Creates different types of text annotations based on the provided type and value.
79
92
  *
@@ -200,9 +213,10 @@ export class RTETextNode extends RTENode {
200
213
  if (this.isContentEditable()) {
201
214
  ActionHandleStrategyRegistry.register(ModifyContentActionType.UPDATE_TEXT, dtoClassName, new NodeUpdateTextStrategy());
202
215
  ActionHandleStrategyRegistry.register(ModifyContentActionType.REPLACE_SELECTED_TEXT, dtoClassName, new NodeReplaceSelectedTextStrategy());
203
- ActionHandleStrategyRegistry.register(TextSplittableAction.name, dtoClassName, new NodeSplitTextStrategy());
216
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.LINK_GROUP_NODE_SPLIT, dtoClassName, new LinkGroupNodeSplitStrategy());
217
+ ActionHandleStrategyRegistry.register(LinkAnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
204
218
  }
205
- ActionHandleStrategyRegistry.register(ModifyContentActionType.LINK_GROUP_NODE_SPLIT, dtoClassName, new LinkGroupNodeSplitStrategy());
219
+ ActionHandleStrategyRegistry.register(TextSplittableAction.name, dtoClassName, new NodeSplitTextStrategy());
206
220
  ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_LINK_GROUP, dtoClassName, new DeleteLinkGroupStrategy());
207
221
  ActionHandleStrategyRegistry.register(AnnotationAction.name, dtoClassName, new NodeUpdateAnnotationMapStrategy());
208
222
  RTETextNode.registerActionStrategyStatus[dtoClassName] = true;
@@ -251,6 +265,18 @@ export class RTETextNode extends RTENode {
251
265
  if (!(annotation instanceof SelectionRangeAnnotation)) {
252
266
  this.syncUpSelectedNodes(node);
253
267
  }
268
+ /**
269
+ * 1. Try to get the specific strategy for the action and node type first (e.g., LinkAnnotationAction on RTETextNode).
270
+ * 2. If no specific strategy found, try to get the generic NodeUpdateAnnotationMapStrategy for AnnotationAction on RTETextNode.
271
+ *
272
+ * This is useful when we want to check if there is a specific strategy for an action-node combination first, we can use the specific strategy to check if the special toolbar button should be enabled or disabled.
273
+ * TODO: Update the other annotation actions to follow this pattern. https://gethired.atlassian.net/browse/VD-7367
274
+ */
275
+ const strategy = ActionHandleStrategyRegistry.get(action.constructor.name, node.constructor.name);
276
+ if (strategy) {
277
+ strategy.execute(action, node);
278
+ return;
279
+ }
254
280
  const updateAnnotationMapStrategy = ActionHandleStrategyRegistry.get(AnnotationAction.name, RTETextNode.name);
255
281
  if (updateAnnotationMapStrategy) {
256
282
  updateAnnotationMapStrategy.execute(action, node);
@@ -8,6 +8,7 @@ import { VegaChange } from '../../../../../helpers/event-manager/event-id/vega-e
8
8
  import RTETextNodeRenderer from '../nodes/text-node-renderer';
9
9
  import { isNonNullable } from '../../../../../types/type-guard';
10
10
  import { UnlinkLinkGroupAction } from '../../actions/unlink-link-group-action';
11
+ import RTEDTORendererManager from '../../../../../helpers/rte-manager/dto-renderer-manager';
11
12
  /**
12
13
  * Renders link nodes and wraps them with link editor or anchor element based on edit mode.
13
14
  */
@@ -47,11 +48,12 @@ class RTELinkWrapperRenderer {
47
48
  * @param {RTETextNode[]} nodes - Array of text nodes to render.
48
49
  * @param {LinkGroupAnnotation} linkGroupAnnotation - link group annotation
49
50
  * @param {RTERenderContext} context - Context containing render options.
50
- * @returns {HTMLElement[]} - Array of rendered HTML elements.
51
+ * @returns {VegaRTERenderResult[]} - Array of rendered HTML elements.
51
52
  */
52
53
  render(nodes, linkGroupAnnotation, { editable }) {
53
54
  const blockNodes = this.groupNodesByLink(nodes);
54
- return blockNodes.flatMap((item) => {
55
+ return blockNodes
56
+ .flatMap((item) => {
55
57
  if (this.isLinkGroup(item)) {
56
58
  // TODO: should revert to above code while https://gethired.atlassian.net/browse/VD-6513 have be fixed.
57
59
  // const linkAnnotation: LinkAnnotation = item[0].getAnnotationByType<LinkAnnotation>(
@@ -69,8 +71,12 @@ class RTELinkWrapperRenderer {
69
71
  ? this.renderLinkEditorWrapper(item, linkAnnotation, linkGroupAnnotation)
70
72
  : this.renderLink(item, linkAnnotation, linkGroupAnnotation);
71
73
  }
72
- return RTETextNodeRenderer.render(item);
73
- });
74
+ const nodeRenderer = RTEDTORendererManager.getRTERenderer(item.type);
75
+ if (nodeRenderer) {
76
+ return nodeRenderer.render(item, { editable }, h);
77
+ }
78
+ })
79
+ .filter(isNonNullable);
74
80
  }
75
81
  groupNodesByLink(nodes) {
76
82
  return nodes.reduce((acc, node) => {