@globalpayments/vega 2.37.2 → 2.39.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 (262) hide show
  1. package/dist/cjs/{app-globals-7087f121.js → app-globals-dd3e7925.js} +2 -3
  2. package/dist/cjs/content-state-c5b47ca1.js +6644 -0
  3. package/dist/cjs/{image-annotation-action-7d82f7e1.js → image-annotation-action-75b9c0d3.js} +5 -6
  4. package/dist/cjs/index.cjs.js +13 -14
  5. package/dist/cjs/loader.cjs.js +8 -9
  6. package/dist/cjs/vega-date-picker_2.cjs.entry.js +1 -1
  7. package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
  8. package/dist/cjs/vega-input-phone-number.cjs.entry.js +31 -7
  9. package/dist/cjs/vega-popover_2.cjs.entry.js +14 -0
  10. package/dist/cjs/vega-rich-text-content.cjs.entry.js +18 -19
  11. package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +75 -79
  12. package/dist/cjs/vega.cjs.js +8 -9
  13. package/dist/collection/components/vega-input-phone-number/slimmers/controllers/vega-input-phone-number-value-controller.js +18 -2
  14. package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +7 -4
  15. package/dist/collection/components/vega-popover/slimmers/controllers/vega-popover-appender-controller.js +4 -0
  16. package/dist/collection/components/vega-popover/vega-popover.js +37 -0
  17. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy-registry.js +52 -0
  18. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy.abstract.js +63 -0
  19. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-link-group-strategy.js +21 -0
  20. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-text-style-strategy.js +32 -0
  21. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/image-set-annotation-map-strategy.js +13 -0
  22. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-split-text-strategy.js +134 -0
  23. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-update-annotation-map-strategy.js +47 -0
  24. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-append-blocks-strategy.js +19 -0
  25. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-append-nodes-strategy.js +21 -0
  26. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-image-strategy.js +54 -0
  27. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-node-content-strategy.js +152 -0
  28. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-content-strategy.js +99 -0
  29. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-after-strategy.js +15 -0
  30. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-before-strategy.js +38 -0
  31. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-image-into-text-strategy.js +31 -0
  32. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-strategy.js +57 -0
  33. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-with-blocks-strategy.js +60 -0
  34. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-new-paragraph-strategy.js +55 -0
  35. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-after-node-strategy.js +14 -0
  36. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-before-node-strategy.js +14 -0
  37. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy.js +25 -0
  38. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-child-block-strategy.js +15 -0
  39. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-node-strategy.js +21 -0
  40. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-replace-node-with-nodes-strategy.js +28 -0
  41. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-replace-nodes-strategy.js +17 -0
  42. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-image-node-strategy.js +48 -0
  43. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-text-node-strategy.js +43 -0
  44. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-list-strategy.js +26 -0
  45. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-block-insert-image-strategy.js +32 -0
  46. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-line-break-strategy.js +21 -0
  47. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-line-break-with-blocks-strategy.js +55 -0
  48. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-new-paragraph-strategy.js +44 -0
  49. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-update-url-strategy.js +12 -0
  50. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-insert-image-strategy.js +22 -0
  51. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-delete-text-content-strategy.js +20 -0
  52. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-insert-image-strategy.js +15 -0
  53. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-insert-new-paragraph-strategy.js +92 -0
  54. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-remove-nest-list-strategy.js +22 -0
  55. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-remove-node-strategy.js +19 -0
  56. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.js +15 -0
  57. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.js +27 -0
  58. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.js +36 -0
  59. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.js +63 -0
  60. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/node-replace-selected-text-strategy.js +46 -0
  61. package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/node-update-text-strategy.js +20 -0
  62. package/dist/collection/components/vega-rich-text-editor/dto/actions/image-update-url-action.js +13 -0
  63. package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +1 -1
  64. package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +3 -215
  65. package/dist/collection/components/vega-rich-text-editor/dto/blocks/image-block.js +31 -244
  66. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-block.js +17 -155
  67. package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +33 -184
  68. package/dist/collection/components/vega-rich-text-editor/dto/blocks/text-block.js +40 -352
  69. package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +13 -23
  70. package/dist/collection/components/vega-rich-text-editor/dto/nodes/image-node.js +14 -6
  71. package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +23 -182
  72. package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +2 -1
  73. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/action-handle-strategy-registry.test.js +41 -0
  74. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/block-insert-line-break-with-blocks-strategy.test.js +24 -0
  75. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/content-state-strategy-registry.test.js +14 -0
  76. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-block-strategy-register.test.js +30 -0
  77. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-set-annotation-map-strategy.test.js +11 -0
  78. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-update-url-strategy.test.js +16 -0
  79. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/list-block-strategy-register.test.js +20 -0
  80. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/list-item-strategy-register.test.js +31 -0
  81. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/node-split-text-strategy.test.js +31 -0
  82. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/node-update-annotation-map-strategy.test.js +17 -0
  83. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/text-block-strategy-register.test.js +55 -0
  84. package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/update-selected-text-strategy.test.js +23 -0
  85. package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +2 -2
  86. package/dist/collection/helpers/validator/rules/valid-phone-number-rule.js +7 -2
  87. package/dist/collection/helpers/validator/test/rules/valid-phone-number-rule.test.js +8 -0
  88. package/dist/esm/{app-globals-4cca4a96.js → app-globals-c954167a.js} +2 -3
  89. package/dist/esm/content-state-2edba4ec.js +6600 -0
  90. package/dist/esm/{form-field-controller-slimmer-3535e76a.js → form-field-controller-slimmer-7a9f2b2e.js} +1 -1
  91. package/dist/esm/{image-annotation-action-3da42221.js → image-annotation-action-b6668f48.js} +1 -2
  92. package/dist/esm/{index-6e05b241.js → index-d172bafa.js} +1 -1
  93. package/dist/esm/index.js +5 -6
  94. package/dist/esm/loader.js +9 -10
  95. package/dist/esm/{string-input-formatter-slimmer-d4132497.js → string-input-formatter-slimmer-418b54f0.js} +2 -2
  96. package/dist/esm/{sub-state-notify-slimmer-51151fc3.js → sub-state-notify-slimmer-b36fd081.js} +1 -1
  97. package/dist/esm/{sub-state-observer-slimmer-d77a1c46.js → sub-state-observer-slimmer-09452523.js} +1 -1
  98. package/dist/esm/vega-button-group_2.entry.js +3 -3
  99. package/dist/esm/vega-calendar_3.entry.js +3 -3
  100. package/dist/esm/vega-checkbox_2.entry.js +2 -2
  101. package/dist/esm/vega-color-picker.entry.js +2 -2
  102. package/dist/esm/vega-combo-box.entry.js +2 -2
  103. package/dist/esm/vega-date-picker_2.entry.js +5 -5
  104. package/dist/esm/vega-dropdown_5.entry.js +3 -3
  105. package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
  106. package/dist/esm/vega-file-uploader.entry.js +2 -2
  107. package/dist/esm/vega-form.entry.js +2 -2
  108. package/dist/esm/vega-image-uploader.entry.js +2 -2
  109. package/dist/esm/vega-input-credit-card.entry.js +2 -2
  110. package/dist/esm/vega-input-numeric.entry.js +3 -3
  111. package/dist/esm/vega-input-phone-number.entry.js +33 -9
  112. package/dist/esm/vega-input-range.entry.js +2 -2
  113. package/dist/esm/vega-input-select.entry.js +2 -2
  114. package/dist/esm/vega-input.entry.js +5 -5
  115. package/dist/esm/{vega-internal-event-id-d0690d0d.js → vega-internal-event-id-f269c42f.js} +1 -1
  116. package/dist/esm/vega-left-nav_5.entry.js +3 -3
  117. package/dist/esm/vega-popover_2.entry.js +15 -1
  118. package/dist/esm/vega-radio_2.entry.js +2 -2
  119. package/dist/esm/vega-rich-text-content.entry.js +6 -7
  120. package/dist/esm/vega-rich-text-editor_4.entry.js +21 -25
  121. package/dist/esm/vega-selection-chip_2.entry.js +4 -4
  122. package/dist/esm/vega-selection-tile_2.entry.js +4 -4
  123. package/dist/esm/vega-sidenav_3.entry.js +3 -3
  124. package/dist/esm/vega-signature-capture.entry.js +2 -2
  125. package/dist/esm/vega-stepper.entry.js +2 -2
  126. package/dist/esm/vega-table_8.entry.js +3 -3
  127. package/dist/esm/vega-textarea.entry.js +2 -2
  128. package/dist/esm/vega-time-picker_2.entry.js +2 -2
  129. package/dist/esm/vega-toggle-switch.entry.js +2 -2
  130. package/dist/esm/vega.js +9 -10
  131. package/dist/types/components/vega-input-phone-number/slimmers/controllers/vega-input-phone-number-value-controller.d.ts +7 -0
  132. package/dist/types/components/vega-popover/slimmers/controllers/vega-popover-appender-controller.d.ts +1 -0
  133. package/dist/types/components/vega-popover/vega-popover.d.ts +10 -0
  134. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy-registry.d.ts +37 -0
  135. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy.abstract.d.ts +66 -0
  136. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-link-group-strategy.d.ts +15 -0
  137. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-text-style-strategy.d.ts +15 -0
  138. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/image-set-annotation-map-strategy.d.ts +13 -0
  139. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-split-text-strategy.d.ts +47 -0
  140. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-update-annotation-map-strategy.d.ts +15 -0
  141. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-append-blocks-strategy.d.ts +13 -0
  142. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-append-nodes-strategy.d.ts +16 -0
  143. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-image-strategy.d.ts +19 -0
  144. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-node-content-strategy.d.ts +61 -0
  145. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-content-strategy.d.ts +19 -0
  146. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-after-strategy.d.ts +13 -0
  147. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-before-strategy.d.ts +23 -0
  148. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-image-into-text-strategy.d.ts +15 -0
  149. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-strategy.d.ts +30 -0
  150. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-with-blocks-strategy.d.ts +36 -0
  151. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-new-paragraph-strategy.d.ts +29 -0
  152. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-after-node-strategy.d.ts +13 -0
  153. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-before-node-strategy.d.ts +13 -0
  154. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy.d.ts +16 -0
  155. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-child-block-strategy.d.ts +13 -0
  156. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-node-strategy.d.ts +17 -0
  157. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-replace-node-with-nodes-strategy.d.ts +20 -0
  158. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-replace-nodes-strategy.d.ts +16 -0
  159. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-image-node-strategy.d.ts +30 -0
  160. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-text-node-strategy.d.ts +24 -0
  161. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-list-strategy.d.ts +15 -0
  162. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-block-insert-image-strategy.d.ts +12 -0
  163. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-line-break-strategy.d.ts +15 -0
  164. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-line-break-with-blocks-strategy.d.ts +27 -0
  165. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-new-paragraph-strategy.d.ts +21 -0
  166. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-update-url-strategy.d.ts +12 -0
  167. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-insert-image-strategy.d.ts +15 -0
  168. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-delete-text-content-strategy.d.ts +15 -0
  169. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-insert-image-strategy.d.ts +15 -0
  170. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-insert-new-paragraph-strategy.d.ts +38 -0
  171. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-remove-nest-list-strategy.d.ts +15 -0
  172. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-remove-node-strategy.d.ts +15 -0
  173. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.d.ts +12 -0
  174. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.d.ts +15 -0
  175. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.d.ts +12 -0
  176. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.d.ts +19 -0
  177. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/node-replace-selected-text-strategy.d.ts +20 -0
  178. package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/node-update-text-strategy.d.ts +15 -0
  179. package/dist/types/components/vega-rich-text-editor/dto/actions/image-update-url-action.d.ts +11 -0
  180. package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +2 -2
  181. package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +1 -79
  182. package/dist/types/components/vega-rich-text-editor/dto/blocks/image-block.d.ts +3 -77
  183. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-block.d.ts +0 -38
  184. package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +3 -58
  185. package/dist/types/components/vega-rich-text-editor/dto/blocks/text-block.d.ts +5 -93
  186. package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +1 -2
  187. package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +0 -43
  188. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/action-handle-strategy-registry.test.d.ts +1 -0
  189. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/block-insert-line-break-with-blocks-strategy.test.d.ts +1 -0
  190. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/content-state-strategy-registry.test.d.ts +1 -0
  191. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-block-strategy-register.test.d.ts +1 -0
  192. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-set-annotation-map-strategy.test.d.ts +1 -0
  193. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-update-url-strategy.test.d.ts +1 -0
  194. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/list-block-strategy-register.test.d.ts +1 -0
  195. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/list-item-strategy-register.test.d.ts +1 -0
  196. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/node-split-text-strategy.test.d.ts +1 -0
  197. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/node-update-annotation-map-strategy.test.d.ts +1 -0
  198. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/text-block-strategy-register.test.d.ts +1 -0
  199. package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/update-selected-text-strategy.test.d.ts +1 -0
  200. package/dist/types/components.d.ts +14 -0
  201. package/dist/types/helpers/validator/rules/valid-phone-number-rule.d.ts +3 -1
  202. package/dist/vega/index.esm.js +1 -1
  203. package/dist/vega/{p-ba077ca8.entry.js → p-073beb31.entry.js} +1 -1
  204. package/dist/vega/{p-6419e13e.entry.js → p-0b697841.entry.js} +1 -1
  205. package/dist/vega/p-0cc1ad76.js +1 -0
  206. package/dist/vega/{p-29d6ec6c.js → p-239bae84.js} +1 -1
  207. package/dist/vega/{p-7198d675.entry.js → p-24ac5151.entry.js} +1 -1
  208. package/dist/vega/{p-cb4fd6e1.entry.js → p-257b1bc2.entry.js} +1 -1
  209. package/dist/vega/{p-ba2833c0.entry.js → p-3c85a11b.entry.js} +1 -1
  210. package/dist/vega/{p-b517ed15.js → p-49bf2b3a.js} +1 -1
  211. package/dist/vega/p-4a8db510.entry.js +1 -0
  212. package/dist/vega/p-4b19706c.entry.js +1 -0
  213. package/dist/vega/{p-bf4996d5.entry.js → p-4e436842.entry.js} +1 -1
  214. package/dist/vega/{p-12fe63c1.entry.js → p-59834ea4.entry.js} +1 -1
  215. package/dist/vega/{p-50eabdca.entry.js → p-59cfed37.entry.js} +1 -1
  216. package/dist/vega/p-5f377954.js +1 -1
  217. package/dist/vega/p-60e1ebe1.entry.js +1 -0
  218. package/dist/vega/{p-23fd9401.entry.js → p-629bd266.entry.js} +1 -1
  219. package/dist/vega/p-6408d3dc.entry.js +1 -0
  220. package/dist/vega/{p-3e8f9fcf.entry.js → p-64e0c944.entry.js} +1 -1
  221. package/dist/vega/{p-b9a0f136.entry.js → p-64e49394.entry.js} +1 -1
  222. package/dist/vega/p-6e5db02b.js +1 -0
  223. package/dist/vega/{p-9689ad99.entry.js → p-74ff73d6.entry.js} +1 -1
  224. package/dist/vega/{p-b809f3d7.entry.js → p-8120e7a1.entry.js} +1 -1
  225. package/dist/vega/p-894c067a.entry.js +1 -0
  226. package/dist/vega/{p-e9785742.entry.js → p-989b36a2.entry.js} +1 -1
  227. package/dist/vega/{p-a2a34239.entry.js → p-9ee23f34.entry.js} +1 -1
  228. package/dist/vega/{p-34bd9204.js → p-a9e1123a.js} +1 -1
  229. package/dist/vega/{p-267cde46.entry.js → p-b071be5c.entry.js} +1 -1
  230. package/dist/vega/{p-1b67c443.entry.js → p-b6bffdf3.entry.js} +1 -1
  231. package/dist/vega/{p-20326c64.js → p-bd0116f9.js} +1 -1
  232. package/dist/vega/{p-a7e078ac.entry.js → p-bf6d3c00.entry.js} +1 -1
  233. package/dist/vega/{p-ecaf4cfa.entry.js → p-c00fde35.entry.js} +1 -1
  234. package/dist/vega/{p-7baa4fae.entry.js → p-c2e96537.entry.js} +1 -1
  235. package/dist/vega/{p-3cb90bdf.entry.js → p-ce94a9c5.entry.js} +1 -1
  236. package/dist/vega/{p-904b489a.entry.js → p-d03945cb.entry.js} +1 -1
  237. package/dist/vega/p-d2e6090a.js +1 -0
  238. package/dist/vega/{p-348e95ba.js → p-d2ff56d8.js} +1 -1
  239. package/dist/vega/p-e0d3ca2d.js +1 -0
  240. package/dist/vega/{p-ee2e4bff.entry.js → p-ea78ddfa.entry.js} +1 -1
  241. package/dist/vega/{p-e9a5bd12.entry.js → p-f1ebe86b.entry.js} +1 -1
  242. package/dist/vega/{p-497f2f86.entry.js → p-fc49a98e.entry.js} +1 -1
  243. package/dist/vega/vega.esm.js +1 -1
  244. package/package.json +1 -1
  245. package/dist/cjs/content-state-f97d3278.js +0 -2990
  246. package/dist/cjs/node-annotation.abstract-4f6df9cf.js +0 -3223
  247. package/dist/collection/components/vega-rich-text-editor/dto/actions/clear-child-nodes-action.js +0 -12
  248. package/dist/collection/components/vega-rich-text-editor/dto/helper/block-base-operator.js +0 -47
  249. package/dist/esm/content-state-ccf5f960.js +0 -2954
  250. package/dist/esm/node-annotation.abstract-b2e36bc4.js +0 -3214
  251. package/dist/types/components/vega-rich-text-editor/dto/actions/clear-child-nodes-action.d.ts +0 -9
  252. package/dist/types/components/vega-rich-text-editor/dto/helper/block-base-operator.d.ts +0 -24
  253. package/dist/vega/p-0461e318.js +0 -1
  254. package/dist/vega/p-1d93b3a9.js +0 -1
  255. package/dist/vega/p-2fecbcf9.entry.js +0 -1
  256. package/dist/vega/p-52a8a4f8.js +0 -1
  257. package/dist/vega/p-7edcb8d0.entry.js +0 -1
  258. package/dist/vega/p-9728d571.entry.js +0 -1
  259. package/dist/vega/p-a7f40a65.entry.js +0 -1
  260. package/dist/vega/p-a8b16ff2.js +0 -1
  261. package/dist/vega/p-aed80794.entry.js +0 -1
  262. package/dist/vega/p-f86ec91b.js +0 -1
@@ -4,15 +4,18 @@ import { RTETextBlock } from './blocks/text-block';
4
4
  import { ModifyContentActionType } from './actions/modify-content-action.abstract';
5
5
  import { AppendChildNodesAction } from './actions/append-child-nodes-action';
6
6
  import { generateUUID } from '../../../utils/misc';
7
- import { BlockBaseOperator } from './helper/block-base-operator';
8
7
  import { RTEListItemBlock } from './blocks/list-item-block';
9
8
  import { SyncUpSelectionAction } from './actions/sync-up-selection-action';
9
+ import { ActionHandleStrategyRegistry } from './action-handle-strategies/action-handle-strategy-registry';
10
+ import { BlockRemoveChildBlockStrategy } from './action-handle-strategies/modify-content-strategies/block-remove-child-block-strategy';
11
+ import { BlockAppendBlocksStrategy } from './action-handle-strategies/modify-content-strategies/block-append-blocks-strategy';
12
+ import { BlockInsertBlocksBeforeStrategy } from './action-handle-strategies/modify-content-strategies/block-insert-blocks-before-strategy';
13
+ import { BlockInsertBlocksAfterStrategy } from './action-handle-strategies/modify-content-strategies/block-insert-blocks-after-strategy';
10
14
  /**
11
15
  * Class representing the content state of the rich text editor.
12
16
  */
13
- export class VegaRTEContent extends BlockBaseOperator {
17
+ export class VegaRTEContent {
14
18
  constructor(blocks) {
15
- super();
16
19
  blocks.forEach((block) => {
17
20
  block.parent = this;
18
21
  });
@@ -89,26 +92,7 @@ export class VegaRTEContent extends BlockBaseOperator {
89
92
  * @param {ModifyContentAction} action - Modify content action
90
93
  */
91
94
  apply(action) {
92
- switch (action.type) {
93
- case ModifyContentActionType.DELETE_CHILD:
94
- this.removeChildBlock(action.entityToBeRemoved);
95
- break;
96
- case ModifyContentActionType.APPEND_CHILD_NODES:
97
- this.appendChildBlocks(action.entityToBeAppended);
98
- break;
99
- case ModifyContentActionType.INSERT_BLOCKS_AFTER:
100
- this.replaceBlockWithBlocks(action.referBlock, [
101
- action.referBlock,
102
- ...action.blocksToBeInserted,
103
- ]);
104
- break;
105
- case ModifyContentActionType.INSERT_BLOCKS_BEFORE:
106
- this.replaceBlockWithBlocks(action.referBlock, [
107
- ...action.blocksToBeInserted,
108
- action.referBlock,
109
- ]);
110
- break;
111
- }
95
+ ActionHandleStrategyRegistry.executeTheStrategy(action, this);
112
96
  }
113
97
  /**
114
98
  * Convert text to list.
@@ -133,3 +117,9 @@ export class VegaRTEContent extends BlockBaseOperator {
133
117
  return new RTEListBlock(generateUUID(), type);
134
118
  }
135
119
  }
120
+ (() => {
121
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.DELETE_CHILD, VegaRTEContent.name, new BlockRemoveChildBlockStrategy());
122
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.APPEND_CHILD_NODES, VegaRTEContent.name, new BlockAppendBlocksStrategy());
123
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_BLOCKS_BEFORE, VegaRTEContent.name, new BlockInsertBlocksBeforeStrategy());
124
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.INSERT_BLOCKS_AFTER, VegaRTEContent.name, new BlockInsertBlocksAfterStrategy());
125
+ })();
@@ -1,8 +1,12 @@
1
1
  import { NodeTypeEnum, RTENode } from './node.abstract';
2
2
  import { ImageAnnotation } from '../annotations/image-annotation';
3
- import { methodPlaceholder } from 'vega-slimmer/core';
3
+ import { ModifyContentActionType } from '../actions/modify-content-action.abstract';
4
4
  import { NodeAnnotationTypeEnum } from '../annotations/node-annotation.abstract';
5
5
  import { isNonNullable } from '../../../../types/type-guard';
6
+ import { ActionHandleStrategyRegistry } from '../action-handle-strategies/action-handle-strategy-registry';
7
+ import { ImageSetAnnotationMapStrategy } from '../action-handle-strategies/apply-annotation-strategies/image-set-annotation-map-strategy';
8
+ import { ImageUpdateUrlStrategy } from '../action-handle-strategies/modify-content-strategies/image-update-url-strategy';
9
+ import { AnnotationAction } from '../actions/annotation-action.abstract';
6
10
  /**
7
11
  * Image node
8
12
  */
@@ -52,15 +56,19 @@ export class RTEImageNode extends RTENode {
52
56
  * @inheritDoc
53
57
  */
54
58
  doAnnotationActionApply(action) {
55
- const annotation = action.toAnnotation();
56
- this.annotationMap.set(annotation.type, annotation);
59
+ const strategy = ActionHandleStrategyRegistry.get(AnnotationAction.name, RTEImageNode.name);
60
+ if (strategy) {
61
+ strategy.execute(action, this);
62
+ }
57
63
  }
58
- // placeholder method
59
- /* istanbul ignore next */
60
64
  /**
61
65
  * @inheritDoc
62
66
  */
63
67
  doModifyActionApply(action) {
64
- methodPlaceholder(action);
68
+ ActionHandleStrategyRegistry.executeTheStrategy(action, this);
65
69
  }
66
70
  }
71
+ (() => {
72
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.UPDATE_IMAGE_NODE_URL, RTEImageNode.name, new ImageUpdateUrlStrategy());
73
+ ActionHandleStrategyRegistry.register(AnnotationAction.name, RTEImageNode.name, new ImageSetAnnotationMapStrategy());
74
+ })();
@@ -1,5 +1,6 @@
1
1
  import { NodeTypeEnum, RTENode } from './node.abstract';
2
- import { NodeAnnotation, NodeAnnotationTypeEnum } from '../annotations/node-annotation.abstract';
2
+ import { NodeAnnotation } from '../annotations/node-annotation.abstract';
3
+ import { AnnotationAction } from '../actions/annotation-action.abstract';
3
4
  import { TextSplittableAction } from '../actions/splittable-action.abstract';
4
5
  import { SelectionRangeAnnotation } from '../annotations/selection-range-annotation';
5
6
  import stateEntityRenderingRegistry from '../../slimmers/controllers/state-entity-rendering-registry';
@@ -10,22 +11,21 @@ import { UnderlineAnnotation } from '../annotations/underline-annotation';
10
11
  import { ItalicAnnotation } from '../annotations/italic-annotation';
11
12
  import { BoldAnnotation } from '../annotations/bold-annotation';
12
13
  import { isNonNullable } from '../../../../types/type-guard';
13
- import { ClearFormattingAnnotation } from '../annotations/clear-formatting-annotation';
14
14
  import { CodeAnnotation } from '../annotations/code-annotation';
15
15
  import { TextColorAnnotation } from '../annotations/text-color-annotation';
16
16
  import { LinkAnnotation } from '../annotations/link-annotation';
17
- import { LinkAnnotationAction } from '../actions/link-annotation-action';
18
- import { CodeAnnotationAction } from '../actions/code-annotation-action';
19
- import { ClearFormattingAnnotationAction } from '../actions/clear-formatting-annotation-action';
20
17
  import { ModifyContentActionType } from '../actions/modify-content-action.abstract';
21
- import { UpdateTextAction } from '../actions/update-text-action';
22
18
  import { LinkGroupAnnotationAction } from '../actions/link-group-annotation-action';
23
19
  import domNodeSubjectFactory from '../../../../helpers/change-manager/subject/dom-node-subject/dom-node-subject-factory';
24
20
  import { VegaInternalRichTextEditorSelectionRangeChange } from '../../../../helpers/event-manager/event-id/vega-internal-event-id';
25
21
  import ChangeManager from '../../../../helpers/change-manager/change-manager';
26
22
  import { ZERO_WIDTH_SPACE } from '../../constants/constant';
27
23
  import { SyncUpSelectionAction } from '../actions/sync-up-selection-action';
28
- import { DeleteNodeAnnotationAction } from '../actions/delete-node-annotation-action';
24
+ import { ActionHandleStrategyRegistry } from '../action-handle-strategies/action-handle-strategy-registry';
25
+ import { NodeUpdateTextStrategy } from '../action-handle-strategies/modify-content-strategies/node-update-text-strategy';
26
+ import { NodeReplaceSelectedTextStrategy } from '../action-handle-strategies/modify-content-strategies/node-replace-selected-text-strategy';
27
+ import { NodeSplitTextStrategy } from '../action-handle-strategies/apply-annotation-strategies/node-split-text-strategy';
28
+ import { NodeUpdateAnnotationMapStrategy } from '../action-handle-strategies/apply-annotation-strategies/node-update-annotation-map-strategy';
29
29
  /**
30
30
  * Text node
31
31
  */
@@ -118,23 +118,13 @@ export class RTETextNode extends RTENode {
118
118
  doAnnotationActionApply(action) {
119
119
  const selectionRangeAnnotation = this.getAnnotationByType(InternalAnnotationTypeEnum.SELECTION_RANGE);
120
120
  if (action instanceof TextSplittableAction && action.doSplit && selectionRangeAnnotation) {
121
- const { startContainer, endContainer, startOffset, endOffset } = selectionRangeAnnotation.range;
122
- const noTextRangeSelected = startContainer === endContainer && startOffset === endOffset;
123
- this.parentBlock.nodes = this.parentBlock.nodes.flatMap((item) => {
124
- if (item.id === this.id) {
125
- if (noTextRangeSelected) {
126
- return this.insertNewNode(startOffset, action);
127
- }
128
- if (this.shouldSplitSelection(selectionRangeAnnotation.range)) {
129
- return this.splitTextNode(action, selectionRangeAnnotation.range);
130
- }
131
- else {
132
- this.applyActionToNode(this, action);
133
- return this;
134
- }
121
+ const splitStrategy = ActionHandleStrategyRegistry.get(TextSplittableAction.name, RTETextNode.name);
122
+ if (splitStrategy) {
123
+ const newNode = splitStrategy.execute(action, this);
124
+ if (newNode) {
125
+ this.applyActionToNode(newNode, action);
135
126
  }
136
- return item;
137
- });
127
+ }
138
128
  }
139
129
  else {
140
130
  this.applyActionToNode(this, action);
@@ -145,61 +135,7 @@ export class RTETextNode extends RTENode {
145
135
  * @inheritDoc
146
136
  */
147
137
  doModifyActionApply(action) {
148
- switch (action.type) {
149
- case ModifyContentActionType.UPDATE_TEXT:
150
- this.updateText(action.newTextContent);
151
- break;
152
- case ModifyContentActionType.REPLACE_SELECTED_TEXT:
153
- this.replaceSelectedText(action.textToBeInsert, action.currentRange);
154
- break;
155
- }
156
- }
157
- /**
158
- * Split text node with range
159
- *
160
- * @param {TextSplittableAction} action - Annotation action
161
- * @param {Range} range - Selection range
162
- * @returns {RTETextNode[] | this} RTETextNode array
163
- */
164
- splitTextNode(action, range) {
165
- const { startContainer, endContainer, startOffset } = range;
166
- const startNode = startContainer.parentElement;
167
- const endNode = endContainer.parentElement;
168
- /**
169
- * Split the text from the start offset to the end offset
170
- *
171
- * @param {string} text - The text string
172
- * @param {number} startOffset - The start offset position
173
- * @param {number} endOffset - The end offset position
174
- * @returns {RTETextNode[]} - The split text node array
175
- */
176
- const splitText = (text, startOffset, endOffset) => {
177
- const beforeText = text.substring(0, startOffset);
178
- const selectedText = text.substring(startOffset, endOffset);
179
- const afterText = text.substring(endOffset);
180
- return [
181
- this.cloneWithText(beforeText),
182
- this.cloneWithText(selectedText),
183
- this.cloneWithText(afterText),
184
- ];
185
- };
186
- const startItemDto = startNode && stateEntityRenderingRegistry.getEntityByDOM(startNode);
187
- const endItemDto = endNode && stateEntityRenderingRegistry.getEntityByDOM(endNode);
188
- if (startItemDto && startItemDto.id === this.id) {
189
- const endOffset = startContainer === endContainer ? range.endOffset : this.text.length;
190
- const [beforeNode, selectedNode, afterNode] = splitText(this.text, startOffset, endOffset);
191
- this.applyActionToNode(selectedNode, action);
192
- return [beforeNode, selectedNode, afterNode].filter((node) => !!node.text);
193
- }
194
- else if (endItemDto && endItemDto.id === this.id) {
195
- const [beforeNode, selectedNode, afterNode] = splitText(this.text, 0, range.endOffset);
196
- this.applyActionToNode(selectedNode, action);
197
- return [beforeNode, selectedNode, afterNode].filter((node) => !!node.text);
198
- }
199
- else {
200
- this.applyActionToNode(this, action);
201
- return this;
202
- }
138
+ ActionHandleStrategyRegistry.executeTheStrategy(action, this);
203
139
  }
204
140
  /**
205
141
  * Apply action to node
@@ -217,89 +153,12 @@ export class RTETextNode extends RTENode {
217
153
  if (!(annotation instanceof SelectionRangeAnnotation)) {
218
154
  this.syncUpSelectedNodes(node);
219
155
  }
220
- if (action instanceof DeleteNodeAnnotationAction) {
221
- this.annotationMap.delete(action.annotationType);
222
- return;
223
- }
224
- if (annotation instanceof ClearFormattingAnnotation) {
225
- annotation.items.forEach((item) => {
226
- node.deleteAnnotationByType(item);
227
- });
228
- return;
229
- }
230
- if (annotation instanceof NodeAnnotation || annotation instanceof SelectionRangeAnnotation) {
231
- if (action instanceof LinkAnnotationAction) {
232
- if (isNonNullable(action.newText)) {
233
- node.text = action.newText;
234
- }
235
- this.parentBlock.apply(new LinkGroupAnnotationAction(action.link.groupKey, [node]));
236
- }
237
- if (action instanceof CodeAnnotationAction) {
238
- this.applyActionToNode(node, new ClearFormattingAnnotationAction());
239
- }
240
- node.annotationMap.set(annotation.type, annotation);
156
+ const updateAnnotationMapStrategy = ActionHandleStrategyRegistry.get(AnnotationAction.name, RTETextNode.name);
157
+ if (updateAnnotationMapStrategy) {
158
+ updateAnnotationMapStrategy.execute(action, node);
241
159
  return;
242
160
  }
243
161
  }
244
- /**
245
- * Replaces the selected text within a given range with a new text in a TypeScript class.
246
- *
247
- * @param {string} text - The new text that will replace the currently selected text within the specified range.
248
- * @param {RTERange} currentRange - A range of text within a Rich Text Editor (RTE).
249
- */
250
- replaceSelectedText(text, currentRange) {
251
- if (currentRange && currentRange.startContainer && currentRange.endContainer) {
252
- const { startContainer, endContainer, startOffset, endOffset } = currentRange;
253
- const startNode = startContainer.parentElement;
254
- const endNode = endContainer.parentElement;
255
- const startItemDto = startNode && stateEntityRenderingRegistry.getEntityByDOM(startNode);
256
- const endItemDto = endNode && stateEntityRenderingRegistry.getEntityByDOM(endNode);
257
- let startIndex = 0, endIndex = this.text.length;
258
- if (startItemDto && startItemDto === this) {
259
- startIndex = startOffset;
260
- endIndex = startContainer === endContainer ? endOffset : endIndex;
261
- }
262
- else if (endItemDto && endItemDto === this) {
263
- endIndex = endOffset;
264
- }
265
- this.apply(new UpdateTextAction(this.text.slice(0, startIndex) + text + this.text.slice(endIndex)));
266
- }
267
- }
268
- /**
269
- * Updates the text content of a node and unlink the node if it is a link node and the text is deleted.
270
- *
271
- * @param {string} newText - The new text string
272
- */
273
- updateText(newText) {
274
- this.text = newText;
275
- // The link node should unlink when delete all text
276
- if (!this.text && this.isLinkNode()) {
277
- this.annotationMap.delete(NodeAnnotationTypeEnum.LINK);
278
- }
279
- }
280
- /**
281
- * Checks if a node has an annotation with the key 'LINK'.
282
- *
283
- * @returns {boolean} A boolean value indicating whether the `annotationMap` has a key 'LINK'.
284
- */
285
- isLinkNode() {
286
- return this.annotationMap.has('LINK');
287
- }
288
- /**
289
- * Whether a given range should be split based on various conditions within the range.
290
- *
291
- * @param {Range} range - Selection range
292
- * @returns {boolean} Returns a boolean value indicating whether the
293
- * selection range should be split.
294
- */
295
- shouldSplitSelection(range) {
296
- const { startContainer, endContainer, startOffset, endOffset } = range;
297
- const isCrossNode = startContainer !== endContainer;
298
- const isPartialStart = startOffset > 0;
299
- const isPartialEnd = endOffset < (endContainer.textContent ? endContainer.textContent.length : 0);
300
- const isPartialSelection = isPartialStart || isPartialEnd;
301
- return isCrossNode || isPartialSelection;
302
- }
303
162
  /**
304
163
  * Sync up the selected node by change manager
305
164
  *
@@ -314,28 +173,10 @@ export class RTETextNode extends RTENode {
314
173
  }
315
174
  }
316
175
  }
317
- /**
318
- * Insert the new node at the start offset
319
- *
320
- * @param {number} startOffset - The start position offset
321
- * @param {AnnotationAction} action - AnnotationAction
322
- * @returns {RTETextNode[]} - RTETextNode array
323
- */
324
- insertNewNode(startOffset, action) {
325
- if (startOffset === 0) {
326
- const newNode = this.cloneWithText('');
327
- this.applyActionToNode(newNode, action);
328
- return [newNode, this];
329
- }
330
- if (startOffset === this.text.length) {
331
- const newNode = this.cloneWithText('');
332
- this.applyActionToNode(newNode, action);
333
- return [this, newNode];
334
- }
335
- const beforeNode = this.cloneWithText(this.text.substring(0, startOffset));
336
- const newNode = this.cloneWithText('');
337
- const afterNode = this.cloneWithText(this.text.substring(startOffset));
338
- this.applyActionToNode(newNode, action);
339
- return [beforeNode, newNode, afterNode];
340
- }
341
176
  }
177
+ (() => {
178
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.UPDATE_TEXT, RTETextNode.name, new NodeUpdateTextStrategy());
179
+ ActionHandleStrategyRegistry.register(ModifyContentActionType.REPLACE_SELECTED_TEXT, RTETextNode.name, new NodeReplaceSelectedTextStrategy());
180
+ ActionHandleStrategyRegistry.register(TextSplittableAction.name, RTETextNode.name, new NodeSplitTextStrategy());
181
+ ActionHandleStrategyRegistry.register(AnnotationAction.name, RTETextNode.name, new NodeUpdateAnnotationMapStrategy());
182
+ })();
@@ -10,6 +10,7 @@ import image from '../../../assets/image';
10
10
  import { h } from '@stencil/core';
11
11
  import { MapToComponentField } from 'vega-slimmer/core';
12
12
  import { NodeAnnotationTypeEnum } from '../../../dto/annotations/node-annotation.abstract';
13
+ import { ImageUpdateUrlAction } from '../../../dto/actions/image-update-url-action';
13
14
  export class ImageToolbarButtonSlimmer extends ToolbarButtonSlimmer {
14
15
  constructor() {
15
16
  super({
@@ -35,7 +36,7 @@ export class ImageToolbarButtonSlimmer extends ToolbarButtonSlimmer {
35
36
  this.updateNodeURLMap = new Map();
36
37
  }
37
38
  this.updateNodeURLMap.set(node, (url) => {
38
- node.url = url;
39
+ node.apply(new ImageUpdateUrlAction(url));
39
40
  });
40
41
  const payload = {
41
42
  file: input.files[0],
@@ -0,0 +1,41 @@
1
+ import { LogUtility } from '../../../../../utils/log';
2
+ import { ActionHandleStrategyRegistry } from '../../../dto/action-handle-strategies/action-handle-strategy-registry';
3
+ import { ActionHandleStrategy } from '../../../dto/action-handle-strategies/action-handle-strategy.abstract';
4
+ import { AnnotationAction } from '../../../dto/actions/annotation-action.abstract';
5
+ import { RTEImageNode } from '../../../dto/nodes/image-node';
6
+ import { RTETextNode } from '../../../dto/nodes/text-node';
7
+ class MockAnnotationAction extends AnnotationAction {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.isFlushable = false;
11
+ this.toAnnotation = jest.fn();
12
+ }
13
+ }
14
+ class MockStrategy extends ActionHandleStrategy {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.handleAction = jest.fn();
18
+ }
19
+ }
20
+ const strategy = new MockStrategy();
21
+ test('ActionHandleStrategyRegistry methods register and get should work properly', () => {
22
+ expect(ActionHandleStrategyRegistry.get(MockAnnotationAction.name, RTETextNode.name)).toBeUndefined();
23
+ ActionHandleStrategyRegistry.register(MockAnnotationAction.name, RTETextNode.name, strategy);
24
+ expect(ActionHandleStrategyRegistry.get('MockAnnotationAction', 'RTETextNode')).toEqual(strategy);
25
+ });
26
+ test('ActionHandleStrategyRegistry methods executeTheStrategy should work properly', () => {
27
+ spyOn(strategy, 'execute').and.callThrough();
28
+ spyOn(strategy, 'handleAction');
29
+ const action = new MockAnnotationAction();
30
+ const target = new RTETextNode('1', 'test', null);
31
+ ActionHandleStrategyRegistry.executeTheStrategy(action, target);
32
+ expect(strategy.execute).toBeCalledWith(action, target);
33
+ expect(strategy.handleAction).toBeCalledWith(action, target);
34
+ });
35
+ test('ActionHandleStrategyRegistry methods executeTheStrategy should log error if the strategy is not exist', () => {
36
+ spyOn(LogUtility, 'error');
37
+ const action = new MockAnnotationAction();
38
+ const target = new RTEImageNode('1', 'test url', null);
39
+ ActionHandleStrategyRegistry.executeTheStrategy(action, target);
40
+ expect(LogUtility.error).toBeCalledWith(`Type MockAnnotationAction action handle strategy is not registered in class RTEImageNode`);
41
+ });
@@ -0,0 +1,24 @@
1
+ import { BlockInsertLineBreakWithBlocksStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-with-blocks-strategy';
2
+ import { lineBreakMultipleBlocksAction } from '../../../dto/actions/line-break-multiple-block-action';
3
+ import { VegaRTEContent } from '../../../dto/content-state';
4
+ test('BlockInsertLineBreakWithBlocksStrategy should work properly', () => {
5
+ const strategy = new BlockInsertLineBreakWithBlocksStrategy();
6
+ const contentState = VegaRTEContent.fromJSON([
7
+ {
8
+ id: '1',
9
+ type: 'paragraph',
10
+ nodes: [
11
+ { id: '1-1', type: 'text', text: 'A' },
12
+ { id: '1-1', type: 'text', text: 'B' },
13
+ ],
14
+ },
15
+ {
16
+ id: '2',
17
+ type: 'paragraph',
18
+ nodes: [],
19
+ },
20
+ ]);
21
+ const action = new lineBreakMultipleBlocksAction(contentState.blocks);
22
+ strategy.execute(action, contentState.blocks[0]);
23
+ expect(contentState.blocks[0]['nodes'].length).toEqual(4);
24
+ });
@@ -0,0 +1,14 @@
1
+ import { ActionHandleStrategyRegistry } from '../../../dto/action-handle-strategies/action-handle-strategy-registry';
2
+ import { BlockAppendBlocksStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-append-blocks-strategy';
3
+ import { BlockInsertBlocksAfterStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-after-strategy';
4
+ import { BlockInsertBlocksBeforeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-before-strategy';
5
+ import { BlockRemoveChildBlockStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-remove-child-block-strategy';
6
+ import { ModifyContentActionType } from '../../../dto/actions/modify-content-action.abstract';
7
+ import { VegaRTEContent } from '../../../dto/content-state';
8
+ test('VegaRTEContent action strategy should register properly', () => {
9
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.DELETE_CHILD, VegaRTEContent.name) instanceof
10
+ BlockRemoveChildBlockStrategy).toBeTruthy();
11
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.APPEND_CHILD_NODES, VegaRTEContent.name) instanceof BlockAppendBlocksStrategy).toBeTruthy();
12
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_BLOCKS_BEFORE, VegaRTEContent.name) instanceof BlockInsertBlocksBeforeStrategy).toBeTruthy();
13
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_BLOCKS_AFTER, VegaRTEContent.name) instanceof BlockInsertBlocksAfterStrategy).toBeTruthy();
14
+ });
@@ -0,0 +1,30 @@
1
+ import { ActionHandleStrategyRegistry } from '../../../dto/action-handle-strategies/action-handle-strategy-registry';
2
+ import { BlockAppendNodesStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-append-nodes-strategy';
3
+ import { BlockDeleteImageStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-delete-image-strategy';
4
+ import { BlockInsertNodesAfterNodeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-after-node-strategy';
5
+ import { BlockInsertNodesBeforeNodeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-before-node-strategy';
6
+ import { BlockMergeNodesStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy';
7
+ import { BlockRemoveNodeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-remove-node-strategy';
8
+ import { BlockReplaceNodesStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-replace-nodes-strategy';
9
+ import { BlockSplitWithImageNodeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-split-with-image-node-strategy';
10
+ import { ImageBlockInsertImageStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/image-block-insert-image-strategy';
11
+ import { ImageInsertLineBreakStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/image-insert-line-break-strategy';
12
+ import { ImageInsertLineBreakWithBlocksStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/image-insert-line-break-with-blocks-strategy';
13
+ import { ImageInsertNewParagraphStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/image-insert-new-paragraph-strategy';
14
+ import { ModifyContentActionType } from '../../../dto/actions/modify-content-action.abstract';
15
+ import { RTEImageBlock } from '../../../dto/blocks/image-block';
16
+ test('RTEImageBlock should register action handle strategy properly', () => {
17
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.DELETE_BLOCK_CONTENT, RTEImageBlock.name) instanceof BlockDeleteImageStrategy).toBeTruthy();
18
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.MERGE_TWO_BLOCKS_NODES, RTEImageBlock.name) instanceof BlockMergeNodesStrategy).toBeTruthy();
19
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.DELETE_CHILD, RTEImageBlock.name) instanceof
20
+ BlockRemoveNodeStrategy).toBeTruthy();
21
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.APPEND_CHILD_NODES, RTEImageBlock.name) instanceof BlockAppendNodesStrategy).toBeTruthy();
22
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.REPLACE_CHILD_NODES, RTEImageBlock.name) instanceof BlockReplaceNodesStrategy).toBeTruthy();
23
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.SPLIT_BLOCK_WITH_NODE, RTEImageBlock.name) instanceof BlockSplitWithImageNodeStrategy).toBeTruthy();
24
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.BREAK_SINGLE_BLOCK, RTEImageBlock.name) instanceof ImageInsertNewParagraphStrategy).toBeTruthy();
25
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.LINE_BREAK_SINGLE_BLOCK, RTEImageBlock.name) instanceof ImageInsertLineBreakStrategy).toBeTruthy();
26
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.LINE_BREAK_MULTIPLE_BLOCKS, RTEImageBlock.name) instanceof ImageInsertLineBreakWithBlocksStrategy).toBeTruthy();
27
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTEImageBlock.name) instanceof ImageBlockInsertImageStrategy).toBeTruthy();
28
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_NODES_BEFORE, RTEImageBlock.name) instanceof BlockInsertNodesBeforeNodeStrategy).toBeTruthy();
29
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_NODES_AFTER, RTEImageBlock.name) instanceof BlockInsertNodesAfterNodeStrategy).toBeTruthy();
30
+ });
@@ -0,0 +1,11 @@
1
+ import { ImageAnnotationAction } from '../../../dto/actions/image-annotation-action';
2
+ import { SelectionChangeAction } from '../../../dto/actions/selection-change-action';
3
+ import { RTEImageNode } from '../../../dto/nodes/image-node';
4
+ test('ImageSetAnnotationMapStrategy should register properly', () => {
5
+ const imageNode = new RTEImageNode('1', 'mock image url', null);
6
+ imageNode.apply(new ImageAnnotationAction('lg', 'alt'));
7
+ expect(imageNode.toJSON().annotations.size).toEqual('lg');
8
+ const mockRange = new Object();
9
+ imageNode.apply(new SelectionChangeAction(mockRange));
10
+ expect(imageNode.getAnnotationByType('SELECTION_RANGE')['range']).toEqual(mockRange);
11
+ });
@@ -0,0 +1,16 @@
1
+ import { ImageUpdateUrlStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/image-update-url-strategy';
2
+ import { ImageUpdateUrlAction } from '../../../dto/actions/image-update-url-action';
3
+ import { RTEImageNode } from '../../../dto/nodes/image-node';
4
+ const strategy = new ImageUpdateUrlStrategy();
5
+ test('ImageUpdateUrlStrategy should work properly', () => {
6
+ const imageNode = new RTEImageNode('1', 'default image url', null);
7
+ const newUrl = 'new image url';
8
+ strategy.execute(new ImageUpdateUrlAction(newUrl), imageNode);
9
+ expect(imageNode.url).toEqual(newUrl);
10
+ });
11
+ test('ImageUpdateUrlStrategy should register into image node properly', () => {
12
+ const imageNode = new RTEImageNode('1', 'default image url', null);
13
+ const newUrl = 'new image url';
14
+ imageNode.apply(new ImageUpdateUrlAction(newUrl));
15
+ expect(imageNode.url).toEqual(newUrl);
16
+ });
@@ -0,0 +1,20 @@
1
+ import { ActionHandleStrategyRegistry } from '../../../dto/action-handle-strategies/action-handle-strategy-registry';
2
+ import { BlockAppendBlocksStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-append-blocks-strategy';
3
+ import { BlockInsertBlocksAfterStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-after-strategy';
4
+ import { BlockInsertBlocksBeforeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-before-strategy';
5
+ import { ListInsertImageStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-insert-image-strategy';
6
+ import { ListRemoveListItemStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy';
7
+ import { ListTransformToListStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy';
8
+ import { ListTransformToParagraphStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy';
9
+ import { ModifyContentActionType } from '../../../dto/actions/modify-content-action.abstract';
10
+ import { RTEListBlock } from '../../../dto/blocks/list-block';
11
+ test('RTEListBlock strategy should register properly', () => {
12
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.DELETE_CHILD, RTEListBlock.name) instanceof
13
+ ListRemoveListItemStrategy).toBeTruthy();
14
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_BLOCKS_BEFORE, RTEListBlock.name) instanceof BlockInsertBlocksBeforeStrategy).toBeTruthy();
15
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_BLOCKS_AFTER, RTEListBlock.name) instanceof BlockInsertBlocksAfterStrategy).toBeTruthy();
16
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.APPEND_CHILD_NODES, RTEListBlock.name) instanceof BlockAppendBlocksStrategy).toBeTruthy();
17
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.TRANSFORM_LIST_BLOCK, RTEListBlock.name) instanceof ListTransformToListStrategy).toBeTruthy();
18
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.TRANSFORM_PARAGRAPH_BLOCK, RTEListBlock.name) instanceof ListTransformToParagraphStrategy).toBeTruthy();
19
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTEListBlock.name) instanceof ListInsertImageStrategy).toBeTruthy();
20
+ });
@@ -0,0 +1,31 @@
1
+ import { ActionHandleStrategyRegistry } from '../../../dto/action-handle-strategies/action-handle-strategy-registry';
2
+ import { BlockAppendNodesStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-append-nodes-strategy';
3
+ import { BlockInsertLineBreakStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-strategy';
4
+ import { BlockInsertLineBreakWithBlocksStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-with-blocks-strategy';
5
+ import { BlockInsertNodesBeforeNodeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-before-node-strategy';
6
+ import { BlockMergeNodesStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy';
7
+ import { BlockReplaceNodesStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-replace-nodes-strategy';
8
+ import { BlockSplitWithTextNodeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/block-split-with-text-node-strategy';
9
+ import { ListItemDeleteTextContentStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-item-delete-text-content-strategy';
10
+ import { ListItemInsertImageStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-item-insert-image-strategy';
11
+ import { ListItemInsertNewParagraphStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-item-insert-new-paragraph-strategy';
12
+ import { ListItemRemoveNestListStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-item-remove-nest-list-strategy';
13
+ import { ListItemRemoveNodeStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-item-remove-node-strategy';
14
+ import { ListItemReplaceNestListStrategy } from '../../../dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy';
15
+ import { ModifyContentActionType } from '../../../dto/actions/modify-content-action.abstract';
16
+ import { RTEListItemBlock } from '../../../dto/blocks/list-item-block';
17
+ test('RTEListItemBlock should register action handle strategy properly', () => {
18
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.DELETE_BLOCK_CONTENT, RTEListItemBlock.name) instanceof ListItemDeleteTextContentStrategy).toBeTruthy();
19
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.LINE_BREAK_SINGLE_BLOCK, RTEListItemBlock.name) instanceof BlockInsertLineBreakStrategy).toBeTruthy();
20
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.LINE_BREAK_MULTIPLE_BLOCKS, RTEListItemBlock.name) instanceof BlockInsertLineBreakWithBlocksStrategy).toBeTruthy();
21
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.DELETE_CHILD, RTEListItemBlock.name) instanceof ListItemRemoveNodeStrategy).toBeTruthy();
22
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.DELETE_NEST_LIST, RTEListItemBlock.name) instanceof ListItemRemoveNestListStrategy).toBeTruthy();
23
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.APPEND_CHILD_NODES, RTEListItemBlock.name) instanceof BlockAppendNodesStrategy).toBeTruthy();
24
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.SPLIT_BLOCK_WITH_NODE, RTEListItemBlock.name) instanceof BlockSplitWithTextNodeStrategy).toBeTruthy();
25
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.REPLACE_CHILD_NODES, RTEListItemBlock.name) instanceof BlockReplaceNodesStrategy).toBeTruthy();
26
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.REPLACE_NEST_LIST, RTEListItemBlock.name) instanceof ListItemReplaceNestListStrategy).toBeTruthy();
27
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.MERGE_TWO_BLOCKS_NODES, RTEListItemBlock.name) instanceof BlockMergeNodesStrategy).toBeTruthy();
28
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.BREAK_SINGLE_BLOCK, RTEListItemBlock.name) instanceof ListItemInsertNewParagraphStrategy).toBeTruthy();
29
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_IMAGE_TO_BLOCK, RTEListItemBlock.name) instanceof ListItemInsertImageStrategy).toBeTruthy();
30
+ expect(ActionHandleStrategyRegistry.get(ModifyContentActionType.INSERT_NODES_BEFORE, RTEListItemBlock.name) instanceof BlockInsertNodesBeforeNodeStrategy).toBeTruthy();
31
+ });
@@ -0,0 +1,31 @@
1
+ import { NodeSplitTextStrategy } from '../../../dto/action-handle-strategies/apply-annotation-strategies/node-split-text-strategy';
2
+ import { AppendChildNodesAction } from '../../../dto/actions/append-child-nodes-action';
3
+ import { BoldAnnotationAction } from '../../../dto/actions/bold-annotation-action';
4
+ import { SelectionRangeAnnotation } from '../../../dto/annotations/selection-range-annotation';
5
+ import { RTETextBlock } from '../../../dto/blocks/text-block';
6
+ import { RTETextNode } from '../../../dto/nodes/text-node';
7
+ import stateEntityRenderingRegistry from '../../../slimmers/controllers/state-entity-rendering-registry';
8
+ function getMockSelectionRange(startContainer, endContainer, startOffset, endOffset) {
9
+ return {
10
+ startContainer,
11
+ endContainer,
12
+ startOffset,
13
+ endOffset,
14
+ };
15
+ }
16
+ const splitTextStrategy = new NodeSplitTextStrategy();
17
+ test('NodeSplitTextStrategy execute method should return value properly', () => {
18
+ const p = document.createElement('p');
19
+ p.innerHTML = '<span>A Paragraph</span>';
20
+ const block = new RTETextBlock('1', 'paragraph');
21
+ const textNode = new RTETextNode('1-1', 'A Paragraph', block);
22
+ block.apply(new AppendChildNodesAction([textNode]));
23
+ let result = splitTextStrategy.execute(new BoldAnnotationAction(false), textNode);
24
+ expect(result).toBeNull;
25
+ const span = p.querySelector('span');
26
+ textNode.annotationMap.set('SELECTION_RANGE', new SelectionRangeAnnotation(getMockSelectionRange(span.firstChild, span.firstChild, 1, 1)));
27
+ stateEntityRenderingRegistry.register(span, textNode);
28
+ result = splitTextStrategy.execute(new BoldAnnotationAction(true), textNode);
29
+ expect(block.nodes.length).toEqual(3);
30
+ expect(result instanceof RTETextNode).toBeTruthy();
31
+ });
@@ -0,0 +1,17 @@
1
+ import { NodeUpdateAnnotationMapStrategy } from '../../../dto/action-handle-strategies/apply-annotation-strategies/node-update-annotation-map-strategy';
2
+ import { AppendChildNodesAction } from '../../../dto/actions/append-child-nodes-action';
3
+ import { BoldAnnotationAction } from '../../../dto/actions/bold-annotation-action';
4
+ import { CodeAnnotationAction } from '../../../dto/actions/code-annotation-action';
5
+ import { RTETextBlock } from '../../../dto/blocks/text-block';
6
+ import { RTETextNode } from '../../../dto/nodes/text-node';
7
+ const updateAnnotationMapStrategy = new NodeUpdateAnnotationMapStrategy();
8
+ test('NodeUpdateAnnotationMapStrategy execute method should work properly', () => {
9
+ const block = new RTETextBlock('1', 'paragraph');
10
+ const textNode = new RTETextNode('1-1', 'A Paragraph', block);
11
+ block.apply(new AppendChildNodesAction([textNode]));
12
+ updateAnnotationMapStrategy.execute(new BoldAnnotationAction(true), textNode);
13
+ expect(textNode.getAnnotationByType('BOLD')['toJSON']()).toEqual({ bold: true });
14
+ updateAnnotationMapStrategy.execute(new CodeAnnotationAction(true), textNode);
15
+ expect(textNode.getAnnotationByType('CODE')['toJSON']()).toEqual({ code: true });
16
+ expect(textNode.annotationMap.has('BOLD')).toEqual(false);
17
+ });