@globalpayments/vega 2.38.0 → 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.
- package/dist/cjs/{app-globals-7087f121.js → app-globals-dd3e7925.js} +2 -3
- package/dist/cjs/content-state-c5b47ca1.js +6644 -0
- package/dist/cjs/{image-annotation-action-7d82f7e1.js → image-annotation-action-75b9c0d3.js} +5 -6
- package/dist/cjs/index.cjs.js +13 -14
- package/dist/cjs/loader.cjs.js +8 -9
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +1 -1
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +31 -7
- package/dist/cjs/vega-popover_2.cjs.entry.js +14 -0
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +18 -19
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +75 -79
- package/dist/cjs/vega.cjs.js +8 -9
- package/dist/collection/components/vega-input-phone-number/slimmers/controllers/vega-input-phone-number-value-controller.js +18 -2
- package/dist/collection/components/vega-input-phone-number/vega-input-phone-number.js +7 -4
- package/dist/collection/components/vega-popover/slimmers/controllers/vega-popover-appender-controller.js +4 -0
- package/dist/collection/components/vega-popover/vega-popover.js +37 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy-registry.js +52 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy.abstract.js +63 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-link-group-strategy.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-text-style-strategy.js +32 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/image-set-annotation-map-strategy.js +13 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-split-text-strategy.js +134 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-update-annotation-map-strategy.js +47 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-append-blocks-strategy.js +19 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-append-nodes-strategy.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-image-strategy.js +54 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-node-content-strategy.js +152 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-content-strategy.js +99 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-after-strategy.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-before-strategy.js +38 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-image-into-text-strategy.js +31 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-strategy.js +57 -0
- 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
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-new-paragraph-strategy.js +55 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-after-node-strategy.js +14 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-nodes-before-node-strategy.js +14 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy.js +25 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-child-block-strategy.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-node-strategy.js +21 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-replace-node-with-nodes-strategy.js +28 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-replace-nodes-strategy.js +17 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-image-node-strategy.js +48 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-split-with-text-node-strategy.js +43 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-list-strategy.js +26 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-block-insert-image-strategy.js +32 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-line-break-strategy.js +21 -0
- 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
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-new-paragraph-strategy.js +44 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-update-url-strategy.js +12 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-insert-image-strategy.js +22 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-delete-text-content-strategy.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-insert-image-strategy.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-insert-new-paragraph-strategy.js +92 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-remove-nest-list-strategy.js +22 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-remove-node-strategy.js +19 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-replace-nest-list-strategy.js +15 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.js +27 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.js +36 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.js +63 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/node-replace-selected-text-strategy.js +46 -0
- package/dist/collection/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/node-update-text-strategy.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/image-update-url-action.js +13 -0
- package/dist/collection/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.js +1 -1
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/block.abstract.js +3 -215
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/image-block.js +31 -244
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-block.js +17 -155
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/list-item-block.js +33 -184
- package/dist/collection/components/vega-rich-text-editor/dto/blocks/text-block.js +40 -352
- package/dist/collection/components/vega-rich-text-editor/dto/content-state.js +13 -23
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/image-node.js +14 -6
- package/dist/collection/components/vega-rich-text-editor/dto/nodes/text-node.js +23 -182
- package/dist/collection/components/vega-rich-text-editor/slimmers/renderers/tools/image-toolbar-button-slimmer.js +2 -1
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/action-handle-strategy-registry.test.js +41 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/block-insert-line-break-with-blocks-strategy.test.js +24 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/content-state-strategy-registry.test.js +14 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-block-strategy-register.test.js +30 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-set-annotation-map-strategy.test.js +11 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-update-url-strategy.test.js +16 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/list-block-strategy-register.test.js +20 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/list-item-strategy-register.test.js +31 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/node-split-text-strategy.test.js +31 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/node-update-annotation-map-strategy.test.js +17 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/text-block-strategy-register.test.js +55 -0
- package/dist/collection/components/vega-rich-text-editor/test/dto/action-handle-strategies/update-selected-text-strategy.test.js +23 -0
- package/dist/collection/components/vega-rich-text-editor/vega-rich-text-editor.js +2 -2
- package/dist/collection/helpers/validator/rules/valid-phone-number-rule.js +7 -2
- package/dist/collection/helpers/validator/test/rules/valid-phone-number-rule.test.js +8 -0
- package/dist/esm/{app-globals-4cca4a96.js → app-globals-c954167a.js} +2 -3
- package/dist/esm/content-state-2edba4ec.js +6600 -0
- package/dist/esm/{form-field-controller-slimmer-3535e76a.js → form-field-controller-slimmer-7a9f2b2e.js} +1 -1
- package/dist/esm/{image-annotation-action-3da42221.js → image-annotation-action-b6668f48.js} +1 -2
- package/dist/esm/{index-6e05b241.js → index-d172bafa.js} +1 -1
- package/dist/esm/index.js +5 -6
- package/dist/esm/loader.js +9 -10
- package/dist/esm/{string-input-formatter-slimmer-d4132497.js → string-input-formatter-slimmer-418b54f0.js} +2 -2
- package/dist/esm/{sub-state-notify-slimmer-51151fc3.js → sub-state-notify-slimmer-b36fd081.js} +1 -1
- package/dist/esm/{sub-state-observer-slimmer-d77a1c46.js → sub-state-observer-slimmer-09452523.js} +1 -1
- package/dist/esm/vega-button-group_2.entry.js +3 -3
- package/dist/esm/vega-calendar_3.entry.js +3 -3
- package/dist/esm/vega-checkbox_2.entry.js +2 -2
- package/dist/esm/vega-color-picker.entry.js +2 -2
- package/dist/esm/vega-combo-box.entry.js +2 -2
- package/dist/esm/vega-date-picker_2.entry.js +5 -5
- package/dist/esm/vega-dropdown_5.entry.js +3 -3
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-file-uploader.entry.js +2 -2
- package/dist/esm/vega-form.entry.js +2 -2
- package/dist/esm/vega-image-uploader.entry.js +2 -2
- package/dist/esm/vega-input-credit-card.entry.js +2 -2
- package/dist/esm/vega-input-numeric.entry.js +3 -3
- package/dist/esm/vega-input-phone-number.entry.js +33 -9
- package/dist/esm/vega-input-range.entry.js +2 -2
- package/dist/esm/vega-input-select.entry.js +2 -2
- package/dist/esm/vega-input.entry.js +5 -5
- package/dist/esm/{vega-internal-event-id-d0690d0d.js → vega-internal-event-id-f269c42f.js} +1 -1
- package/dist/esm/vega-left-nav_5.entry.js +3 -3
- package/dist/esm/vega-popover_2.entry.js +15 -1
- package/dist/esm/vega-radio_2.entry.js +2 -2
- package/dist/esm/vega-rich-text-content.entry.js +6 -7
- package/dist/esm/vega-rich-text-editor_4.entry.js +21 -25
- package/dist/esm/vega-selection-chip_2.entry.js +4 -4
- package/dist/esm/vega-selection-tile_2.entry.js +4 -4
- package/dist/esm/vega-sidenav_3.entry.js +3 -3
- package/dist/esm/vega-signature-capture.entry.js +2 -2
- package/dist/esm/vega-stepper.entry.js +2 -2
- package/dist/esm/vega-table_8.entry.js +3 -3
- package/dist/esm/vega-textarea.entry.js +2 -2
- package/dist/esm/vega-time-picker_2.entry.js +2 -2
- package/dist/esm/vega-toggle-switch.entry.js +2 -2
- package/dist/esm/vega.js +9 -10
- package/dist/types/components/vega-input-phone-number/slimmers/controllers/vega-input-phone-number-value-controller.d.ts +7 -0
- package/dist/types/components/vega-popover/slimmers/controllers/vega-popover-appender-controller.d.ts +1 -0
- package/dist/types/components/vega-popover/vega-popover.d.ts +10 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy-registry.d.ts +37 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/action-handle-strategy.abstract.d.ts +66 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-link-group-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/block-update-text-style-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/image-set-annotation-map-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-split-text-strategy.d.ts +47 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/apply-annotation-strategies/node-update-annotation-map-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-append-blocks-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-append-nodes-strategy.d.ts +16 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-image-strategy.d.ts +19 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-node-content-strategy.d.ts +61 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-delete-text-content-strategy.d.ts +19 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-after-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-blocks-before-strategy.d.ts +23 -0
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-line-break-strategy.d.ts +30 -0
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-insert-new-paragraph-strategy.d.ts +29 -0
- 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
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-merge-nodes-strategy.d.ts +16 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-child-block-strategy.d.ts +13 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-remove-node-strategy.d.ts +17 -0
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-replace-nodes-strategy.d.ts +16 -0
- 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
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/block-transform-to-list-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-block-insert-image-strategy.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-line-break-strategy.d.ts +15 -0
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-insert-new-paragraph-strategy.d.ts +21 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/image-update-url-strategy.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-insert-image-strategy.d.ts +15 -0
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-insert-image-strategy.d.ts +15 -0
- 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
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-item-remove-node-strategy.d.ts +15 -0
- 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
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-remove-list-item-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-list-strategy.d.ts +12 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/list-transform-to-paragraph-strategy.d.ts +19 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/node-replace-selected-text-strategy.d.ts +20 -0
- package/dist/types/components/vega-rich-text-editor/dto/action-handle-strategies/modify-content-strategies/node-update-text-strategy.d.ts +15 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/image-update-url-action.d.ts +11 -0
- package/dist/types/components/vega-rich-text-editor/dto/actions/modify-content-action.abstract.d.ts +2 -2
- package/dist/types/components/vega-rich-text-editor/dto/blocks/block.abstract.d.ts +1 -79
- package/dist/types/components/vega-rich-text-editor/dto/blocks/image-block.d.ts +3 -77
- package/dist/types/components/vega-rich-text-editor/dto/blocks/list-block.d.ts +0 -38
- package/dist/types/components/vega-rich-text-editor/dto/blocks/list-item-block.d.ts +3 -58
- package/dist/types/components/vega-rich-text-editor/dto/blocks/text-block.d.ts +5 -93
- package/dist/types/components/vega-rich-text-editor/dto/content-state.d.ts +1 -2
- package/dist/types/components/vega-rich-text-editor/dto/nodes/text-node.d.ts +0 -43
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/action-handle-strategy-registry.test.d.ts +1 -0
- 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
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/content-state-strategy-registry.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-block-strategy-register.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-set-annotation-map-strategy.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/image-update-url-strategy.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/list-block-strategy-register.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/list-item-strategy-register.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/node-split-text-strategy.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/node-update-annotation-map-strategy.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/text-block-strategy-register.test.d.ts +1 -0
- package/dist/types/components/vega-rich-text-editor/test/dto/action-handle-strategies/update-selected-text-strategy.test.d.ts +1 -0
- package/dist/types/components.d.ts +14 -0
- package/dist/types/helpers/validator/rules/valid-phone-number-rule.d.ts +3 -1
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/{p-ba077ca8.entry.js → p-073beb31.entry.js} +1 -1
- package/dist/vega/{p-6419e13e.entry.js → p-0b697841.entry.js} +1 -1
- package/dist/vega/p-0cc1ad76.js +1 -0
- package/dist/vega/{p-29d6ec6c.js → p-239bae84.js} +1 -1
- package/dist/vega/{p-7198d675.entry.js → p-24ac5151.entry.js} +1 -1
- package/dist/vega/{p-cb4fd6e1.entry.js → p-257b1bc2.entry.js} +1 -1
- package/dist/vega/{p-ba2833c0.entry.js → p-3c85a11b.entry.js} +1 -1
- package/dist/vega/{p-b517ed15.js → p-49bf2b3a.js} +1 -1
- package/dist/vega/p-4a8db510.entry.js +1 -0
- package/dist/vega/p-4b19706c.entry.js +1 -0
- package/dist/vega/{p-bf4996d5.entry.js → p-4e436842.entry.js} +1 -1
- package/dist/vega/{p-12fe63c1.entry.js → p-59834ea4.entry.js} +1 -1
- package/dist/vega/{p-50eabdca.entry.js → p-59cfed37.entry.js} +1 -1
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/p-60e1ebe1.entry.js +1 -0
- package/dist/vega/{p-23fd9401.entry.js → p-629bd266.entry.js} +1 -1
- package/dist/vega/p-6408d3dc.entry.js +1 -0
- package/dist/vega/{p-3e8f9fcf.entry.js → p-64e0c944.entry.js} +1 -1
- package/dist/vega/{p-b9a0f136.entry.js → p-64e49394.entry.js} +1 -1
- package/dist/vega/p-6e5db02b.js +1 -0
- package/dist/vega/{p-9689ad99.entry.js → p-74ff73d6.entry.js} +1 -1
- package/dist/vega/{p-b809f3d7.entry.js → p-8120e7a1.entry.js} +1 -1
- package/dist/vega/p-894c067a.entry.js +1 -0
- package/dist/vega/{p-e9785742.entry.js → p-989b36a2.entry.js} +1 -1
- package/dist/vega/{p-a2a34239.entry.js → p-9ee23f34.entry.js} +1 -1
- package/dist/vega/{p-34bd9204.js → p-a9e1123a.js} +1 -1
- package/dist/vega/{p-267cde46.entry.js → p-b071be5c.entry.js} +1 -1
- package/dist/vega/{p-1b67c443.entry.js → p-b6bffdf3.entry.js} +1 -1
- package/dist/vega/{p-20326c64.js → p-bd0116f9.js} +1 -1
- package/dist/vega/{p-a7e078ac.entry.js → p-bf6d3c00.entry.js} +1 -1
- package/dist/vega/{p-ecaf4cfa.entry.js → p-c00fde35.entry.js} +1 -1
- package/dist/vega/{p-7baa4fae.entry.js → p-c2e96537.entry.js} +1 -1
- package/dist/vega/{p-3cb90bdf.entry.js → p-ce94a9c5.entry.js} +1 -1
- package/dist/vega/{p-904b489a.entry.js → p-d03945cb.entry.js} +1 -1
- package/dist/vega/p-d2e6090a.js +1 -0
- package/dist/vega/{p-348e95ba.js → p-d2ff56d8.js} +1 -1
- package/dist/vega/p-e0d3ca2d.js +1 -0
- package/dist/vega/{p-ee2e4bff.entry.js → p-ea78ddfa.entry.js} +1 -1
- package/dist/vega/{p-e9a5bd12.entry.js → p-f1ebe86b.entry.js} +1 -1
- package/dist/vega/{p-497f2f86.entry.js → p-fc49a98e.entry.js} +1 -1
- package/dist/vega/vega.esm.js +1 -1
- package/package.json +1 -1
- package/dist/cjs/content-state-f97d3278.js +0 -2990
- package/dist/cjs/node-annotation.abstract-4f6df9cf.js +0 -3223
- package/dist/collection/components/vega-rich-text-editor/dto/actions/clear-child-nodes-action.js +0 -12
- package/dist/collection/components/vega-rich-text-editor/dto/helper/block-base-operator.js +0 -47
- package/dist/esm/content-state-ccf5f960.js +0 -2954
- package/dist/esm/node-annotation.abstract-b2e36bc4.js +0 -3214
- package/dist/types/components/vega-rich-text-editor/dto/actions/clear-child-nodes-action.d.ts +0 -9
- package/dist/types/components/vega-rich-text-editor/dto/helper/block-base-operator.d.ts +0 -24
- package/dist/vega/p-0461e318.js +0 -1
- package/dist/vega/p-1d93b3a9.js +0 -1
- package/dist/vega/p-2fecbcf9.entry.js +0 -1
- package/dist/vega/p-52a8a4f8.js +0 -1
- package/dist/vega/p-7edcb8d0.entry.js +0 -1
- package/dist/vega/p-9728d571.entry.js +0 -1
- package/dist/vega/p-a7f40a65.entry.js +0 -1
- package/dist/vega/p-a8b16ff2.js +0 -1
- package/dist/vega/p-aed80794.entry.js +0 -1
- 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
|
|
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
|
-
|
|
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 {
|
|
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
|
|
56
|
-
|
|
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
|
-
|
|
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
|
|
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 {
|
|
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
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (
|
|
125
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
221
|
-
|
|
222
|
-
|
|
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.
|
|
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
|
+
});
|