@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
@@ -1,5 +1,150 @@
1
+ import { DomNodeSubjectObserverFactory } from '../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-observer-factory';
2
+ import { VegaClick, VegaDropdownClick } from '../../../helpers/event-manager/event-id/vega-event-id';
3
+ import { VegaInternalIconManager } from '../../../helpers/icon/internal-icon-manager';
4
+ import { isNonNullable } from '../../../types/type-guard';
1
5
  /**
2
6
  * Base class for rendering extension toolbar button in the rich text editor.
7
+ * The renderer provides common functionalities for rendering toolbar buttons, including:
8
+ * - Rendering a button with an icon, label, and optional arrow icon.
9
+ * - Rendering a dropdown with a list of items.
10
+ * - Rendering dropdown items.
11
+ * - Rendering template for dropdown list.
12
+ * - Determining if the button should be disabled based on the editor context.
13
+ * - Handling button and dropdown click events.
14
+ * Override the methods to customize the rendering and behavior of the button.
3
15
  */
4
16
  export class VegaRTEToolbarButtonRenderer {
17
+ /**
18
+ * Checks if the button should be hidden.
19
+ *
20
+ * @param {VegaRTEToolbarRenderContext} editorContext The render context for the editor.
21
+ * @returns {boolean} True if the button is hidden, false otherwise.
22
+ */
23
+ isHidden(editorContext) {
24
+ return editorContext.sourceEditMode;
25
+ }
26
+ /**
27
+ * Renders a dropdown component with the specified properties and children.
28
+ *
29
+ * @param {VegaRTECreateElementFunction} h - Create element function.
30
+ * @param {VegaRTEToolbarRenderContext} editorContext - The render context for the editor.
31
+ * @param {RTEToolbarDropdownProps} dropdownProps - The properties for the dropdown.
32
+ * @param {VegaRTERenderResult[]} children - The children elements for the dropdown.
33
+ * @returns {VegaRTERenderResult} - The render result for the dropdown.
34
+ */
35
+ renderDropdown(h, editorContext, dropdownProps, children) {
36
+ return h('vega-dropdown', Object.assign({ trigger: 'click', searchable: false,
37
+ // eslint-disable-next-line jsdoc/require-jsdoc
38
+ ref: (el) => {
39
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(el, VegaDropdownClick, (input) => this.handleDropdownClick(input.detail, editorContext));
40
+ } }, dropdownProps), children);
41
+ }
42
+ /**
43
+ * Renders the dropdown list template.
44
+ *
45
+ * @param {VegaRTECreateElementFunction} h - Create element function.
46
+ * @param {RTEDropdownListItem[]} itemList - The list of dropdown items.
47
+ * @returns {VegaRTERenderResult} - The render result for the dropdown list.
48
+ */
49
+ renderDropdownListTemplate(h, itemList) {
50
+ return h('div', {
51
+ slot: 'items',
52
+ onMouseDown: this.preventDefault,
53
+ }, itemList.map((item) => {
54
+ return this.renderDropdownItem(h, item);
55
+ }));
56
+ }
57
+ /**
58
+ * Renders a dropdown item for the toolbar button.
59
+ *
60
+ * @param {VegaRTECreateElementFunction} h - Create element function.
61
+ * @param {RTEDropdownListItem} item - The dropdown item.
62
+ * @returns {VegaRTERenderResult} - The render result for the dropdown item.
63
+ */
64
+ renderDropdownItem(h, item) {
65
+ return h('vega-dropdown-item', {
66
+ key: item.key,
67
+ itemKey: item.key,
68
+ label: item.label,
69
+ prefixIcon: item.icon,
70
+ });
71
+ }
72
+ /**
73
+ * Renders a common toolbar button with optional icon, label, and arrow icon.
74
+ *
75
+ * @param {VegaRTECreateElementFunction} h - Create element function.
76
+ * @param {VegaRTEToolbarRenderContext} editorContext - The render context for the editor.
77
+ * @param {RTEToolbarButtonProps} buttonProps - The properties for the button.
78
+ * @returns {VegaRTERenderResult} - The render result for the button.
79
+ */
80
+ renderButton(h, editorContext, buttonProps) {
81
+ const { icon, label, showArrowIcon } = buttonProps;
82
+ const isDisabled = this.isDisabled(editorContext);
83
+ return h('vega-rich-text-editor-toolbar-button', {
84
+ disabled: isDisabled,
85
+ icon: icon,
86
+ hidden: this.isHidden(editorContext),
87
+ selected: this.isSelected(editorContext),
88
+ // eslint-disable-next-line jsdoc/require-jsdoc
89
+ ref: (el) => {
90
+ DomNodeSubjectObserverFactory.addUniqueObserverToNode(el, VegaClick, () => this.handleButtonClick(editorContext));
91
+ },
92
+ onMouseDown: this.preventDefault,
93
+ }, [
94
+ this.renderButtonLabel(h, editorContext, label),
95
+ showArrowIcon
96
+ ? h('vega-icon', {
97
+ size: 'size-8',
98
+ color: isDisabled ? 'text-disabled' : 'text-secondary',
99
+ style: { marginLeft: '8px' },
100
+ icon: VegaInternalIconManager.getIconKey('chevron-down'),
101
+ })
102
+ : null,
103
+ ].filter(isNonNullable));
104
+ }
105
+ /**
106
+ * Renders the button label.
107
+ *
108
+ * @param {VegaRTECreateElementFunction} h - Create element function.
109
+ * @param {VegaRTEToolbarRenderContext} editorContext - The render context for the editor.
110
+ * @param {Nullable<string>} label - The button label if exist.
111
+ * @returns {Nullable<VegaRTERenderResult>} - The render result for the button.
112
+ */
113
+ renderButtonLabel(h, editorContext, label) {
114
+ if (label) {
115
+ const isDisabled = this.isDisabled(editorContext);
116
+ return h('vega-font', {
117
+ variant: 'font-field-label-sm',
118
+ color: isDisabled ? 'text-disabled' : 'text-primary',
119
+ }, label);
120
+ }
121
+ return null;
122
+ }
123
+ /**
124
+ * Determines if the button should be disabled based on the editor context.
125
+ *
126
+ * @param {VegaRTEToolbarRenderContext} editorContext - The render context for the editor.
127
+ * @returns {boolean} - True if the button should be disabled, false otherwise.
128
+ */
129
+ isDisabled(editorContext) {
130
+ return editorContext.host.disabled;
131
+ }
132
+ /**
133
+ * Checks if the button should be selected.
134
+ *
135
+ * @param {VegaRTEToolbarRenderContext} _editorContext The render context for the editor.
136
+ * @returns {boolean} True if the button is selected, false otherwise.
137
+ */
138
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
139
+ isSelected(_editorContext) {
140
+ return false;
141
+ }
142
+ /**
143
+ * Prevents the default action of the click event. This is to avoid losing focus from the editor when the button is clicked.
144
+ *
145
+ * @param {MouseEvent} e The mouse event to prevent default action for.
146
+ */
147
+ preventDefault(e) {
148
+ e.preventDefault();
149
+ }
5
150
  }
@@ -0,0 +1,97 @@
1
+ import RTEDTOClassManager from '../../../helpers/rte-manager/dto-class-manager';
2
+ import RTEDTORendererManager from '../../../helpers/rte-manager/dto-renderer-manager';
3
+ import RTEDTOActionStrategyManager from '../../../helpers/rte-manager/dto-action-strategy-manager';
4
+ import ElementToDTOClassStrategyManager from '../../../helpers/rte-manager/element-dto-class-strategy-manager';
5
+ import { ActionHandleStrategyRegistry } from '../dto/action-handle-strategies/action-handle-strategy-registry';
6
+ /**
7
+ * Abstract class for Vega Rich Text Editor extensions.
8
+ */
9
+ export class VegaRTEExtension {
10
+ constructor() {
11
+ /**
12
+ * The context of the RTE extension, which may include references to the host editor and other relevant information.
13
+ */
14
+ this.extensionContext = null;
15
+ }
16
+ /**
17
+ * Registers an action handle strategy for a specific node or block class.
18
+ *
19
+ * @param {string} nodeOrBlockClassName - The name of the node or block class.
20
+ * @param {string} actionType - The type of the action.
21
+ * @param {ActionHandleStrategy<ModifyContentAction, RTENode | RTEBlock>} strategy - The strategy to register.
22
+ */
23
+ static registerActionHandleStrategy(nodeOrBlockClassName, actionType, strategy) {
24
+ ActionHandleStrategyRegistry.register(actionType, nodeOrBlockClassName, strategy);
25
+ }
26
+ /**
27
+ * Initializes the RTE extension with the provided context.
28
+ *
29
+ * @param {RTEExtensionContext} context - The context of the RTE extension.
30
+ */
31
+ initialExtension(context) {
32
+ this.extensionContext = context;
33
+ }
34
+ /**
35
+ * Register a node type with the extension.
36
+ *
37
+ * @param {string} type - The type of the node or block. The type should be a string that uniquely identifies the node or block.
38
+ * @param {ClassType<RTEBlock | RTENode>} DTOClass - The DTO class to register.
39
+ */
40
+ registerNode(type, DTOClass) {
41
+ RTEDTOClassManager.registerRTEDTOClass(type, DTOClass);
42
+ }
43
+ /**
44
+ * Register a renderer for a node type with the extension.
45
+ *
46
+ * @param {string} type - The type of the node or block. The type should be a string that uniquely identifies the node or block.
47
+ * @param {BaseRenderer} renderer - The renderer to register.
48
+ */
49
+ registerRenderer(type, renderer) {
50
+ RTEDTORendererManager.registerRTEDTORenderer(type, renderer);
51
+ }
52
+ /**
53
+ * Register a toolbar button renderer for the extension.
54
+ *
55
+ * @param {string} type - The type of the toolbar button.
56
+ * @param {VegaRTEToolbarButtonRenderer} renderer - The renderer to register.
57
+ */
58
+ registerToolbarButtonRenderer(type, renderer) {
59
+ RTEDTORendererManager.registerRTEToolbarButtonRenderer(type, renderer);
60
+ }
61
+ /**
62
+ * This is a helper method that utilizes RTEUtils to register common strategies.
63
+ * Call the method with the class name of the block to make it support basic strategies like:
64
+ * - Delete children
65
+ * - Append the children
66
+ * - Delete the block children content
67
+ *
68
+ * @param {string} blockClassName - The class name of the block to register strategies for.
69
+ */
70
+ registerBlockBasicStrategies(blockClassName) {
71
+ RTEDTOActionStrategyManager.registerBlockBasicStrategies(blockClassName);
72
+ }
73
+ /**
74
+ * Register an element to block DTO class strategy.
75
+ *
76
+ * @param {ElementToDTOStrategy} strategy - The strategy to register.
77
+ */
78
+ registerElementToBlockDTOClassStrategy(strategy) {
79
+ ElementToDTOClassStrategyManager.registerElementToBlockStrategy(strategy);
80
+ }
81
+ /**
82
+ * Register an element to node DTO class strategy.
83
+ *
84
+ * @param {ElementToDTOStrategy} strategy - The strategy to register.
85
+ */
86
+ registerElementToNodeDTOClassStrategy(strategy) {
87
+ ElementToDTOClassStrategyManager.registerElementToNodeStrategy(strategy);
88
+ }
89
+ /**
90
+ * Get the registered element to node DTO class strategies.
91
+ *
92
+ * @returns {ElementToDTOStrategy[]} - The registered element to node DTO class strategies.
93
+ */
94
+ getElementToNodeDTOClassStrategies() {
95
+ return ElementToDTOClassStrategyManager.getElementToNodeStrategies();
96
+ }
97
+ }
@@ -0,0 +1,113 @@
1
+ import { VegaRTEContent } from '../../dto/content-state';
2
+ import { VegaRTEExtension } from '../extension.abstract';
3
+ import { RTELanguageToolbarButtonRenderer } from './language-toolbar-button-renderer';
4
+ /**
5
+ * Language extension for Vega Rich Text Editor.
6
+ * This extension allows users to switch between different languages and maintain separate content for each language.
7
+ */
8
+ export class VegaRTELanguageExtension extends VegaRTEExtension {
9
+ constructor(languageList, languagesState) {
10
+ super();
11
+ this.languageState = {
12
+ selectedLanguage: '',
13
+ contentMap: {},
14
+ };
15
+ /**
16
+ * Listener for language change events from the toolbar button renderer.
17
+ *
18
+ * @param {string} selectedLanguage - The newly selected language.
19
+ */
20
+ this.languageChangeCallBack = (selectedLanguage) => {
21
+ const previousLanguage = this.languageState.selectedLanguage;
22
+ if (this.extensionContext && previousLanguage) {
23
+ this.languageState.contentMap[previousLanguage] = this.getRTELatestValue(this.extensionContext.host);
24
+ }
25
+ this.languageState.selectedLanguage = selectedLanguage;
26
+ this.applyLanguageContent(selectedLanguage, this.languageState.contentMap);
27
+ };
28
+ if (languagesState) {
29
+ this.languageState = Object.assign(Object.assign({}, this.languageState), languagesState);
30
+ }
31
+ if (!this.languageState.selectedLanguage && languageList.length > 0) {
32
+ this.languageState.selectedLanguage = languageList[0].key;
33
+ }
34
+ this.languageToolbarButtonRenderer = new RTELanguageToolbarButtonRenderer(languageList, this.languageChangeCallBack, this.languageState.selectedLanguage);
35
+ this.registerToolbarButtonRenderer('languages', this.languageToolbarButtonRenderer);
36
+ }
37
+ /**
38
+ * Initializes the language extension.
39
+ * Applies the content for the selected language upon initialization.
40
+ *
41
+ * @param {RTEExtensionContext} context The extension context.
42
+ */
43
+ initialExtension(context) {
44
+ super.initialExtension(context);
45
+ const { selectedLanguage, contentMap } = this.languageState;
46
+ if (contentMap && contentMap[selectedLanguage]) {
47
+ this.applyLanguageContent(this.languageState.selectedLanguage, this.languageState.contentMap);
48
+ }
49
+ }
50
+ /**
51
+ * Invoked to set the language extension state. The method used if the state can not be provide when the editor is initialized.
52
+ *
53
+ * @param {RTELanguageExtensionState} state The language extension state to set.
54
+ */
55
+ setState(state) {
56
+ const { selectedLanguage, contentMap } = state;
57
+ this.languageToolbarButtonRenderer.setSelectedLanguage(selectedLanguage);
58
+ this.languageState.selectedLanguage = selectedLanguage;
59
+ this.languageState.contentMap = Object.assign({}, contentMap);
60
+ this.applyLanguageContent(selectedLanguage, contentMap);
61
+ }
62
+ /**
63
+ * Invoked to get the language extension state.
64
+ *
65
+ * @returns {RTELanguageExtensionState} The current language extension state.
66
+ */
67
+ getState() {
68
+ const { selectedLanguage, contentMap } = this.languageState;
69
+ if (this.extensionContext) {
70
+ contentMap[selectedLanguage] = this.getRTELatestValue(this.extensionContext.host);
71
+ }
72
+ return this.languageState;
73
+ }
74
+ /**
75
+ * Applies the content for the selected language.
76
+ *
77
+ * @param {string} selectedLanguage - The newly selected language.
78
+ * @param {RTELanguageExtensionState['contentMap']} contentMap - The content map for all languages.
79
+ */
80
+ applyLanguageContent(selectedLanguage, contentMap) {
81
+ if (this.extensionContext && contentMap) {
82
+ let content = contentMap[selectedLanguage];
83
+ if (content) {
84
+ content = content instanceof VegaRTEContent ? content : VegaRTEContent.fromJSON(content);
85
+ }
86
+ else {
87
+ content = VegaRTEContent.createEmptyContent();
88
+ }
89
+ const { host, flushValue } = this.extensionContext;
90
+ if (host.value !== content) {
91
+ flushValue(content, true);
92
+ }
93
+ }
94
+ }
95
+ /**
96
+ * Get the RTE latest value. The value is from the code block when in source edit mode; otherwise, it's from the host value.
97
+ *
98
+ * @param {HTMLElement} host - The host element of the rich text editor.
99
+ * @returns {VegaRTEContent} - The content.
100
+ */
101
+ getRTELatestValue(host) {
102
+ let result = host.value;
103
+ if (this.extensionContext && this.extensionContext.isSourceEditMode() && host.shadowRoot) {
104
+ const codeBlock = host.shadowRoot.querySelector('.source-view-container vega-code-block');
105
+ if (codeBlock) {
106
+ result = VegaRTEContent.fromHtml(codeBlock.value.code, {
107
+ autoMatchFormat: host.sourceEditConfig.autoMatchFormat,
108
+ });
109
+ }
110
+ }
111
+ return result;
112
+ }
113
+ }
@@ -0,0 +1,90 @@
1
+ import { methodPlaceholder } from 'vega-slimmer/core';
2
+ import { VegaRTEToolbarButtonRenderer } from '../base-toolbar-button-renderer';
3
+ /**
4
+ * Toolbar button renderer for language selection in Vega Rich Text Editor.
5
+ */
6
+ export class RTELanguageToolbarButtonRenderer extends VegaRTEToolbarButtonRenderer {
7
+ constructor(languageList, languageChangeCallback, selectedLanguage) {
8
+ super();
9
+ this.languageList = [];
10
+ this.selectedLanguage = 'Select Language';
11
+ this.labelRef = null;
12
+ /**
13
+ * Handles the language selection event.
14
+ *
15
+ * @param {string} itemKey - The key of the selected language item.
16
+ */
17
+ this.handleDropdownClick = (itemKey) => {
18
+ this.setSelectedLanguage(itemKey);
19
+ if (typeof this.languageChangeCallback === 'function') {
20
+ this.languageChangeCallback(this.selectedLanguage);
21
+ }
22
+ };
23
+ this.languageList = languageList;
24
+ this.selectedLanguage = selectedLanguage;
25
+ this.languageChangeCallback = languageChangeCallback;
26
+ }
27
+ /**
28
+ * Public method to set the selected language.
29
+ *
30
+ * @param {string} language The language key to set as selected.
31
+ */
32
+ setSelectedLanguage(language) {
33
+ this.selectedLanguage = language;
34
+ if (this.labelRef) {
35
+ this.labelRef.textContent = this.getLanguageLabelByKey(language);
36
+ }
37
+ }
38
+ /**
39
+ * The source edit mode does not affect the language button visibility.
40
+ *
41
+ * @returns {boolean} True if the button is hidden, false otherwise.
42
+ */
43
+ isHidden() {
44
+ return false;
45
+ }
46
+ /**
47
+ * @inheritDoc
48
+ */
49
+ render(createElement, editorContext) {
50
+ return this.renderDropdown(createElement, editorContext, { source: this.languageList }, [
51
+ this.renderButton(createElement, editorContext, {
52
+ label: this.getLanguageLabelByKey(this.selectedLanguage),
53
+ showArrowIcon: true,
54
+ }),
55
+ ]);
56
+ }
57
+ /**
58
+ * Override to render the button label with custom behavior.
59
+ *
60
+ * @inheritDoc
61
+ */
62
+ renderButtonLabel(h, editorContext, label) {
63
+ const isDisabled = this.isDisabled(editorContext);
64
+ return h('vega-font', {
65
+ variant: 'font-field-label-sm',
66
+ color: isDisabled ? 'text-disabled' : 'text-primary',
67
+ // eslint-disable-next-line jsdoc/require-jsdoc
68
+ ref: (el) => (this.labelRef = el),
69
+ }, label);
70
+ }
71
+ /* istanbul ignore next */
72
+ /**
73
+ * Handles the button click event. No need this method for language button.
74
+ *
75
+ * @param {VegaRTEToolbarRenderContext} editorContext - The render context for the editor.
76
+ */
77
+ handleButtonClick(editorContext) {
78
+ methodPlaceholder(editorContext);
79
+ }
80
+ /**
81
+ * Gets the label of a language by its key.
82
+ *
83
+ * @param {string} key The language key to look up.
84
+ * @returns {string} The label of the language, or the key if not found.
85
+ */
86
+ getLanguageLabelByKey(key) {
87
+ const language = this.languageList.find((item) => item.key === key);
88
+ return language.label;
89
+ }
90
+ }
@@ -0,0 +1,16 @@
1
+ import { ModifyContentAction } from '../../dto/actions/modify-content-action.abstract';
2
+ /**
3
+ * Action to insert a token node at a specified range in the Rich Text Editor.
4
+ *
5
+ * @example block.apply(new InsertTokenNodeAction(rteRange, tokenNode));
6
+ */
7
+ export class InsertTokenNodeAction extends ModifyContentAction {
8
+ constructor(rteRange, token) {
9
+ super();
10
+ this.type = 'INSERT_TOKEN_NODE';
11
+ this.rteRange = null;
12
+ this.actionHandleResult = false;
13
+ this.rteRange = rteRange;
14
+ this.token = token;
15
+ }
16
+ }
@@ -0,0 +1,20 @@
1
+ import { generateUUID } from '../../../../utils/misc';
2
+ import { ActionHandleStrategy } from '../../dto/action-handle-strategies/action-handle-strategy.abstract';
3
+ import { InsertNodeToNearestRootAction } from '../../dto/actions/insert-node-to-nearest-root-action';
4
+ import { RTETokenNode } from './token-node';
5
+ /**
6
+ * Strategy to handle the insertion of a token node into the nearest root block.
7
+ */
8
+ export class InsertTokenNodeStrategy extends ActionHandleStrategy {
9
+ /**
10
+ * @inheritDoc
11
+ */
12
+ handleAction(action, block) {
13
+ const { rteRange, token } = action;
14
+ if (rteRange && rteRange.startNode) {
15
+ const tokenNode = new RTETokenNode(generateUUID(), token.key, token.label, block);
16
+ block.apply(new InsertNodeToNearestRootAction(rteRange, tokenNode));
17
+ action.actionHandleResult = true;
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,60 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { generateUUID } from '../../../../utils/misc';
13
+ import { ElementToDTOStrategy } from '../../slimmers/controllers/helper/element-to-dto-strategy/element-to-dto-strategy.abstract';
14
+ /**
15
+ * Strategy to convert <span class="token" token-key="...">...</span> to a token node
16
+ */
17
+ export class SpanToTokenNodeStrategy extends ElementToDTOStrategy {
18
+ /**
19
+ * @inheritDoc
20
+ */
21
+ canHandle(elementsArray, currentIndex) {
22
+ const element = elementsArray[currentIndex];
23
+ if (element.nodeName === 'SPAN' &&
24
+ element.classList.contains('token') &&
25
+ element.hasAttribute('token-key')) {
26
+ return 1;
27
+ }
28
+ return 0;
29
+ }
30
+ /**
31
+ * @inheritDoc
32
+ */
33
+ handle(elementsArray) {
34
+ const element = elementsArray[0];
35
+ const tokenKey = element.getAttribute('token-key');
36
+ const text = element.textContent;
37
+ const annotations = this.generateTextStyleAnnotations(element);
38
+ // Exclude customAttribute and customClass from annotations
39
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
40
+ const { customAttribute, customClass } = annotations, restAnnotations = __rest(annotations, ["customAttribute", "customClass"]);
41
+ return {
42
+ id: generateUUID(),
43
+ type: 'token',
44
+ token: tokenKey,
45
+ text,
46
+ annotations: Object.assign({}, restAnnotations),
47
+ };
48
+ }
49
+ /**
50
+ * @inheritDoc
51
+ */
52
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
53
+ appendChildBlocks() { }
54
+ /**
55
+ * @inheritDoc
56
+ */
57
+ shouldProceedToElementChildren() {
58
+ return false;
59
+ }
60
+ }
@@ -0,0 +1,38 @@
1
+ import { RTEListItemBlock } from '../../dto/blocks/list-item-block';
2
+ import { RTETextBlock } from '../../public-api';
3
+ import { VegaRTEExtension } from '../extension.abstract';
4
+ import { InsertTokenNodeStrategy } from './insert-token-node-strategy';
5
+ import { SpanToTokenNodeStrategy } from './span-to-token-node-strategy';
6
+ import { RTETokenNode } from './token-node';
7
+ import { RTETokenNodeRenderer } from './token-node-renderer';
8
+ import { RTETokenToolbarButtonRenderer } from './token-toolbar-button-renderer';
9
+ const spanToTokenNodeStrategy = new SpanToTokenNodeStrategy();
10
+ /**
11
+ * Vega Rich Text Editor Token Extension
12
+ */
13
+ export class VegaRTETokenExtension extends VegaRTEExtension {
14
+ constructor(tokenList = []) {
15
+ super();
16
+ this.tokenRenderer = new RTETokenNodeRenderer();
17
+ this.registerNode('token', RTETokenNode);
18
+ this.registerRenderer('token', this.tokenRenderer);
19
+ this.tokenToolbarButtonRenderer = new RTETokenToolbarButtonRenderer(tokenList);
20
+ this.registerToolbarButtonRenderer('token', this.tokenToolbarButtonRenderer);
21
+ this.registerElementToNodeDTOClassStrategy(spanToTokenNodeStrategy);
22
+ }
23
+ /**
24
+ * @inheritDoc
25
+ */
26
+ initialExtension(context) {
27
+ super.initialExtension(context);
28
+ this.tokenRenderer.injectExtensionContext(context);
29
+ if (this.tokenToolbarButtonRenderer) {
30
+ this.tokenToolbarButtonRenderer.injectExtensionContext(context);
31
+ }
32
+ }
33
+ }
34
+ (() => {
35
+ const insertTokenNodeStrategy = new InsertTokenNodeStrategy();
36
+ VegaRTEExtension.registerActionHandleStrategy(RTETextBlock.name, 'INSERT_TOKEN_NODE', insertTokenNodeStrategy);
37
+ VegaRTEExtension.registerActionHandleStrategy(RTEListItemBlock.name, 'INSERT_TOKEN_NODE', insertTokenNodeStrategy);
38
+ })();
@@ -0,0 +1,67 @@
1
+ import { UpdateCursorPositionAction } from '../../public-api';
2
+ import { VegaRTEExtensionRenderer } from '../base-extension-renderer';
3
+ /**
4
+ * Token node renderer for the rich text editor.
5
+ */
6
+ export class RTETokenNodeRenderer extends VegaRTEExtensionRenderer {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.extensionContext = null;
10
+ }
11
+ /**
12
+ * Renders the token node as a DOM element.
13
+ *
14
+ * @param {VegaRTECreateElementFunction} createElement - The function to create a DOM element.
15
+ * @param {RTETokenNode} node - The token node to render.
16
+ * @param {RTERenderContext} editorContent - The editor content context.
17
+ * @returns {VegaRTERenderResult} - The rendered DOM element.
18
+ */
19
+ doRender(createElement, node, editorContent) {
20
+ const { id, token } = node;
21
+ return createElement('span', {
22
+ 'key': id,
23
+ 'template-token-key': token,
24
+ 'token-key': token,
25
+ 'contenteditable': 'false',
26
+ 'style': this.getStyle(node),
27
+ 'class': `token ${node.getClasses()}`,
28
+ 'ref': this.useRef(node),
29
+ // eslint-disable-next-line jsdoc/require-jsdoc
30
+ 'onClick': (event) => {
31
+ event.preventDefault();
32
+ if (editorContent && editorContent.editable !== false) {
33
+ this.handleTokenElementClick(event, node);
34
+ }
35
+ },
36
+ }, node.text);
37
+ }
38
+ /**
39
+ * Sets the RTE extension context.
40
+ *
41
+ * @param {RTEExtensionContext} context - The context of the RTE extension.
42
+ */
43
+ injectExtensionContext(context) {
44
+ this.extensionContext = context;
45
+ }
46
+ /**
47
+ * Get the style for the token element.
48
+ *
49
+ * @param {RTETokenNode} node - The token node.
50
+ * @returns {Record<string, string>} The style object for the token element.
51
+ */
52
+ getStyle(node) {
53
+ return Object.assign(Object.assign({}, node.getStyles()), { backgroundColor: 'var(--v-bg-status-info, #CDD1D3)', padding: '0 2px', margin: '0 1px' });
54
+ }
55
+ /**
56
+ * Handle the click event on the token element.
57
+ *
58
+ * @param {MouseEvent} event - The click event.
59
+ * @param {RTETokenNode} node - The token node that was clicked.
60
+ */
61
+ handleTokenElementClick(event, node) {
62
+ event.preventDefault();
63
+ if (this.extensionContext) {
64
+ this.extensionContext.host.value.apply(new UpdateCursorPositionAction(node, undefined, true));
65
+ }
66
+ }
67
+ }