@globalpayments/vega 2.38.0 → 2.40.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-cdd0972c.js} +14 -4
- package/dist/cjs/check-box-required-rule-1ee54b9a.js +70 -0
- package/dist/cjs/content-state-c5b47ca1.js +6644 -0
- package/dist/cjs/date-required-rule-4e1f84fd.js +92 -0
- package/dist/cjs/{element-appender-slimmer-c6e0f4ca.js → element-appender-slimmer-4f0dc8c6.js} +9 -5
- package/dist/cjs/file-uploader-required-rule-313ec9e3.js +21 -0
- package/dist/cjs/{form-field-controller-slimmer-48c0ad0b.js → form-field-controller-slimmer-d92e8212.js} +28 -1
- package/dist/cjs/{image-annotation-action-7d82f7e1.js → image-annotation-action-75b9c0d3.js} +5 -6
- package/dist/cjs/index.cjs.js +35 -15
- package/dist/cjs/input-phone-number-required-rule-2668fdf1.js +65 -0
- package/dist/cjs/input-range-required-rule-5b9c2a95.js +63 -0
- package/dist/cjs/internal-form-field-validation-rule.abstract-07cdff46.js +15 -0
- package/dist/cjs/loader.cjs.js +10 -10
- package/dist/cjs/{min-number-rule-115c5a3b.js → min-number-rule-5bcccc8f.js} +7 -4
- package/dist/cjs/{min-string-length-rule-75f24a48.js → min-string-length-rule-af215976.js} +8 -4
- package/dist/cjs/public-rules-90b972e5.js +42 -0
- package/dist/cjs/{required-field-rule-7f9945fa.js → required-field-rule-d73c1d8c.js} +6 -3
- package/dist/cjs/rich-text-editor-required-rule-cacc5fe0.js +64 -0
- package/dist/cjs/time-required-rule-ccf178e7.js +141 -0
- package/dist/cjs/toggle-switch-required-rule-88a51b36.js +66 -0
- package/dist/cjs/{valid-credit-card-number-rule-4a9ae5d9.js → valid-credit-card-number-rule-4a1b00b8.js} +3 -2
- package/dist/cjs/vega-checkbox_2.cjs.entry.js +11 -79
- package/dist/cjs/vega-color-picker.cjs.entry.js +3 -2
- package/dist/cjs/vega-combo-box.cjs.entry.js +3 -2
- package/dist/cjs/vega-date-picker_2.cjs.entry.js +9 -91
- package/dist/cjs/vega-dialog_2.cjs.entry.js +29 -1
- package/dist/cjs/vega-dropdown_5.cjs.entry.js +1 -1
- package/dist/cjs/vega-env-manager-23b8b23c.js +2 -2
- package/dist/cjs/vega-file-uploader.cjs.entry.js +5 -19
- package/dist/cjs/vega-form.cjs.entry.js +2 -1
- package/dist/cjs/vega-image-uploader.cjs.entry.js +3 -2
- package/dist/cjs/vega-input-credit-card.cjs.entry.js +4 -3
- package/dist/cjs/vega-input-numeric.cjs.entry.js +3 -2
- package/dist/cjs/vega-input-phone-number.cjs.entry.js +38 -70
- package/dist/cjs/vega-input-range.cjs.entry.js +6 -61
- package/dist/cjs/vega-input-select.cjs.entry.js +3 -2
- package/dist/cjs/vega-input.cjs.entry.js +7 -6
- package/dist/cjs/vega-popover_2.cjs.entry.js +15 -1
- package/dist/cjs/vega-radio_2.cjs.entry.js +3 -2
- package/dist/cjs/vega-rich-text-content.cjs.entry.js +18 -19
- package/dist/cjs/vega-rich-text-editor_4.cjs.entry.js +79 -139
- package/dist/cjs/vega-selection-chip_2.cjs.entry.js +3 -2
- package/dist/cjs/vega-selection-tile_2.cjs.entry.js +3 -2
- package/dist/cjs/vega-signature-capture.cjs.entry.js +3 -2
- package/dist/cjs/vega-stepper.cjs.entry.js +3 -2
- package/dist/cjs/vega-textarea.cjs.entry.js +4 -3
- package/dist/cjs/vega-time-picker_2.cjs.entry.js +11 -140
- package/dist/cjs/vega-toggle-switch.cjs.entry.js +4 -63
- package/dist/cjs/vega-tooltip_2.cjs.entry.js +53 -12
- package/dist/cjs/vega.cjs.js +10 -10
- package/dist/collection/components/vega-checkbox/vega-checkbox.css +82 -33
- package/dist/collection/components/vega-checkbox/vega-checkbox.js +8 -13
- package/dist/collection/components/vega-file-uploader/vega-file-uploader.js +2 -2
- 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-modal/slimmers/controllers/vega-modal-layout-controller.js +9 -0
- package/dist/collection/components/vega-modal/slimmers/controllers/vega-modal-scroll-controller.js +16 -0
- package/dist/collection/components/vega-modal/vega-modal.js +6 -0
- 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/components/vega-tooltip/slimmers/controllers/vega-tooltip-element-appender-controller.js +45 -11
- package/dist/collection/components/vega-tooltip/vega-tooltip.js +12 -0
- package/dist/collection/global/scripts/before-vega-load.js +11 -0
- package/dist/collection/helpers/slimmers/element-appender-slimmer.js +8 -5
- package/dist/collection/helpers/slimmers/test/element-appender-slimmer.test.js +2 -0
- package/dist/collection/helpers/ui/element-appender.js +1 -0
- package/dist/collection/helpers/ui/test/element-appender.test.js +1 -0
- package/dist/collection/helpers/validator/form-field-controller.js +28 -1
- package/dist/collection/helpers/validator/public-rules.js +10 -0
- package/dist/collection/helpers/validator/rules/check-box-required-rule.js +4 -3
- package/dist/collection/helpers/validator/rules/date-range-rule.js +2 -1
- package/dist/collection/helpers/validator/rules/date-required-rule.js +5 -3
- package/dist/collection/helpers/validator/rules/email-field-rule.js +3 -2
- package/dist/collection/helpers/validator/rules/{object-array-required-rule.js → file-uploader-required-rule.js} +1 -1
- package/dist/collection/helpers/validator/rules/input-phone-number-required-rule.js +5 -3
- package/dist/collection/helpers/validator/rules/input-range-min-and-max-rule.js +3 -1
- package/dist/collection/helpers/validator/rules/input-range-required-rule.js +5 -4
- package/dist/collection/helpers/validator/rules/internal-form-field-validation-rule.abstract.js +11 -0
- package/dist/collection/helpers/validator/rules/max-number-rule.js +4 -2
- package/dist/collection/helpers/validator/rules/max-string-length-rule.js +4 -2
- package/dist/collection/helpers/validator/rules/min-and-max-date-rule.js +3 -1
- package/dist/collection/helpers/validator/rules/min-number-rule.js +4 -2
- package/dist/collection/helpers/validator/rules/min-string-length-rule.js +4 -2
- package/dist/collection/helpers/validator/rules/required-field-rule.js +5 -3
- package/dist/collection/helpers/validator/rules/rich-text-editor-required-rule.js +4 -3
- package/dist/collection/helpers/validator/rules/time-range-required-rule.js +5 -3
- package/dist/collection/helpers/validator/rules/time-range-rule.js +3 -1
- package/dist/collection/helpers/validator/rules/time-required-rule.js +5 -3
- package/dist/collection/helpers/validator/rules/toggle-switch-required-rule.js +4 -3
- package/dist/collection/helpers/validator/rules/valid-credit-card-number-rule.js +3 -2
- package/dist/collection/helpers/validator/rules/valid-phone-number-rule.js +11 -4
- package/dist/collection/helpers/validator/test/rules/file-uploader-required-rule.test.js +7 -0
- package/dist/collection/helpers/validator/test/rules/public-rules.test.js +80 -0
- package/dist/collection/helpers/validator/test/rules/valid-phone-number-rule.test.js +8 -0
- package/dist/collection/index.js +1 -0
- package/dist/esm/{app-globals-4cca4a96.js → app-globals-88fa3549.js} +14 -4
- package/dist/esm/check-box-required-rule-cb0aa339.js +68 -0
- package/dist/esm/content-state-2edba4ec.js +6600 -0
- package/dist/esm/{date-732bc749.js → date-c55b97f0.js} +1 -1
- package/dist/esm/date-required-rule-8944f3bf.js +90 -0
- package/dist/esm/{element-appender-slimmer-f5e703f3.js → element-appender-slimmer-d9155ee0.js} +9 -5
- package/dist/esm/file-uploader-required-rule-ad886d01.js +19 -0
- package/dist/esm/{form-field-controller-slimmer-3535e76a.js → form-field-controller-slimmer-bb64dec7.js} +29 -2
- 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 +17 -7
- package/dist/esm/input-phone-number-required-rule-be6a5572.js +63 -0
- package/dist/esm/input-range-required-rule-3ad74776.js +61 -0
- package/dist/esm/internal-form-field-validation-rule.abstract-f5b6bdbf.js +13 -0
- package/dist/esm/loader.js +11 -11
- package/dist/esm/{min-number-rule-31d48b22.js → min-number-rule-a6082418.js} +7 -4
- package/dist/esm/{min-string-length-rule-c6a69eeb.js → min-string-length-rule-c31c89f4.js} +8 -4
- package/dist/esm/public-rules-413f6a17.js +27 -0
- package/dist/esm/{required-field-rule-368b31fa.js → required-field-rule-ab4bdc47.js} +6 -3
- package/dist/esm/rich-text-editor-required-rule-75cc2db0.js +62 -0
- 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/time-required-rule-a01163b5.js +138 -0
- package/dist/esm/toggle-switch-required-rule-b3cf4302.js +64 -0
- package/dist/esm/{valid-credit-card-number-rule-2aef3ad5.js → valid-credit-card-number-rule-cc497bec.js} +3 -2
- package/dist/esm/vega-button-group_2.entry.js +3 -3
- package/dist/esm/vega-calendar_3.entry.js +4 -4
- package/dist/esm/vega-checkbox_2.entry.js +12 -80
- package/dist/esm/vega-color-picker.entry.js +4 -3
- package/dist/esm/vega-combo-box.entry.js +4 -3
- package/dist/esm/vega-date-picker_2.entry.js +12 -94
- package/dist/esm/vega-dialog_2.entry.js +29 -1
- package/dist/esm/vega-dropdown_5.entry.js +4 -4
- package/dist/esm/vega-env-manager-8f8dc473.js +2 -2
- package/dist/esm/vega-file-uploader.entry.js +6 -20
- package/dist/esm/vega-form.entry.js +3 -2
- package/dist/esm/vega-image-uploader.entry.js +4 -3
- package/dist/esm/vega-input-credit-card.entry.js +5 -4
- package/dist/esm/vega-input-numeric.entry.js +5 -4
- package/dist/esm/vega-input-phone-number.entry.js +38 -70
- package/dist/esm/vega-input-range.entry.js +6 -61
- package/dist/esm/vega-input-select.entry.js +4 -3
- package/dist/esm/vega-input.entry.js +11 -10
- 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 +16 -2
- package/dist/esm/vega-radio_2.entry.js +4 -3
- package/dist/esm/vega-rich-text-content.entry.js +6 -7
- package/dist/esm/vega-rich-text-editor_4.entry.js +23 -83
- package/dist/esm/vega-selection-chip_2.entry.js +6 -5
- package/dist/esm/vega-selection-tile_2.entry.js +6 -5
- package/dist/esm/vega-sidenav_3.entry.js +3 -3
- package/dist/esm/vega-signature-capture.entry.js +4 -3
- package/dist/esm/vega-stepper.entry.js +4 -3
- package/dist/esm/vega-table_8.entry.js +3 -3
- package/dist/esm/vega-textarea.entry.js +5 -4
- package/dist/esm/vega-time-picker_2.entry.js +8 -137
- package/dist/esm/vega-toggle-switch.entry.js +4 -63
- package/dist/esm/vega-tooltip_2.entry.js +53 -12
- package/dist/esm/vega.js +11 -11
- 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-modal/slimmers/controllers/vega-modal-layout-controller.d.ts +4 -0
- package/dist/types/components/vega-modal/slimmers/controllers/vega-modal-scroll-controller.d.ts +5 -0
- package/dist/types/components/vega-modal/vega-modal.d.ts +1 -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/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/vega-tooltip/slimmers/controllers/vega-tooltip-element-appender-controller.d.ts +18 -0
- package/dist/types/components/vega-tooltip/vega-tooltip.d.ts +4 -0
- package/dist/types/components.d.ts +14 -0
- package/dist/types/helpers/slimmers/element-appender-slimmer.d.ts +1 -0
- package/dist/types/helpers/slimmers/form-field-controller-slimmer.d.ts +2 -1
- package/dist/types/helpers/validator/form-field-controller.d.ts +10 -0
- package/dist/types/helpers/validator/public-rules.d.ts +10 -0
- package/dist/types/helpers/validator/rules/check-box-required-rule.d.ts +7 -6
- package/dist/types/helpers/validator/rules/date-range-rule.d.ts +3 -2
- package/dist/types/helpers/validator/rules/date-required-rule.d.ts +7 -6
- package/dist/types/helpers/validator/rules/email-field-rule.d.ts +4 -3
- package/dist/types/helpers/validator/rules/{object-array-required-rule.d.ts → file-uploader-required-rule.d.ts} +1 -1
- package/dist/types/helpers/validator/rules/input-phone-number-required-rule.d.ts +7 -6
- package/dist/types/helpers/validator/rules/input-range-min-and-max-rule.d.ts +3 -2
- package/dist/types/helpers/validator/rules/input-range-required-rule.d.ts +8 -7
- package/dist/types/helpers/validator/rules/internal-form-field-validation-rule.abstract.d.ts +19 -0
- package/dist/types/helpers/validator/rules/max-number-rule.d.ts +4 -3
- package/dist/types/helpers/validator/rules/max-string-length-rule.d.ts +4 -3
- package/dist/types/helpers/validator/rules/min-and-max-date-rule.d.ts +3 -2
- package/dist/types/helpers/validator/rules/min-number-rule.d.ts +4 -3
- package/dist/types/helpers/validator/rules/min-string-length-rule.d.ts +4 -3
- package/dist/types/helpers/validator/rules/required-field-rule.d.ts +7 -6
- package/dist/types/helpers/validator/rules/rich-text-editor-required-rule.d.ts +7 -6
- package/dist/types/helpers/validator/rules/time-range-required-rule.d.ts +7 -6
- package/dist/types/helpers/validator/rules/time-range-rule.d.ts +3 -2
- package/dist/types/helpers/validator/rules/time-required-rule.d.ts +7 -6
- package/dist/types/helpers/validator/rules/toggle-switch-required-rule.d.ts +5 -4
- package/dist/types/helpers/validator/rules/valid-credit-card-number-rule.d.ts +4 -3
- package/dist/types/helpers/validator/rules/valid-phone-number-rule.d.ts +7 -4
- package/dist/types/helpers/validator/test/rules/file-uploader-required-rule.test.d.ts +1 -0
- package/dist/types/helpers/validator/test/rules/public-rules.test.d.ts +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/types/public-api.d.ts +1 -1
- package/dist/vega/index.esm.js +1 -1
- package/dist/vega/p-04c72f30.entry.js +1 -0
- package/dist/vega/{p-ba077ca8.entry.js → p-073beb31.entry.js} +1 -1
- package/dist/vega/p-07c2725a.js +1 -0
- package/dist/vega/{p-b5990090.js → p-08835909.js} +1 -1
- package/dist/vega/p-0b6d4561.entry.js +1 -0
- package/dist/vega/p-0bb860cc.js +1 -0
- package/dist/vega/p-0cc1ad76.js +1 -0
- package/dist/vega/p-113cd659.entry.js +1 -0
- package/dist/vega/{p-b9a0f136.entry.js → p-154d262e.entry.js} +1 -1
- package/dist/vega/p-17598aac.entry.js +1 -0
- package/dist/vega/p-23130825.entry.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-280cbcdb.js +1 -0
- package/dist/vega/p-3299c30b.entry.js +1 -0
- package/dist/vega/p-3fd9d39f.entry.js +1 -0
- package/dist/vega/p-42a949f5.entry.js +1 -0
- package/dist/vega/p-4bd1b877.entry.js +1 -0
- package/dist/vega/p-590fd123.js +1 -0
- package/dist/vega/p-5a7eabcc.js +1 -0
- package/dist/vega/p-5e56f3bd.js +1 -0
- package/dist/vega/p-5f377954.js +1 -1
- package/dist/vega/p-612c9374.entry.js +1 -0
- package/dist/vega/p-6408d3dc.entry.js +1 -0
- package/dist/vega/{p-a2a34239.entry.js → p-6585bddc.entry.js} +2 -2
- package/dist/vega/p-6603081a.entry.js +1 -0
- package/dist/vega/p-6e5db02b.js +1 -0
- package/dist/vega/p-6f90d444.js +1 -0
- package/dist/vega/p-7303fff2.entry.js +1 -0
- package/dist/vega/p-7b648a05.entry.js +1 -0
- package/dist/vega/p-7c0b4c36.js +1 -0
- package/dist/vega/p-81b21503.entry.js +1 -0
- package/dist/vega/p-8fae8f9e.js +1 -0
- package/dist/vega/p-924b4e24.js +1 -0
- package/dist/vega/{p-ee2e4bff.entry.js → p-94459733.entry.js} +1 -1
- package/dist/vega/p-a05ca459.entry.js +1 -0
- package/dist/vega/p-a3e80fb2.entry.js +1 -0
- package/dist/vega/p-a7a46358.entry.js +1 -0
- package/dist/vega/{p-34bd9204.js → p-a9e1123a.js} +1 -1
- package/dist/vega/p-abd7aeaa.js +1 -0
- package/dist/vega/{p-267cde46.entry.js → p-b071be5c.entry.js} +1 -1
- package/dist/vega/p-b24da503.entry.js +1 -0
- package/dist/vega/p-b44f3309.js +1 -0
- package/dist/vega/p-b9051ad2.js +1 -0
- package/dist/vega/{p-20326c64.js → p-bd0116f9.js} +1 -1
- package/dist/vega/{p-4ab0d645.js → p-c253d09c.js} +1 -1
- package/dist/vega/p-c56acdd5.entry.js +1 -0
- package/dist/vega/p-cdbbdcc2.js +1 -0
- package/dist/vega/p-d1a06058.entry.js +1 -0
- package/dist/vega/{p-348e95ba.js → p-d2ff56d8.js} +1 -1
- package/dist/vega/p-d51b04ce.entry.js +1 -0
- package/dist/vega/p-e0446879.js +1 -0
- package/dist/vega/p-e08b6542.entry.js +1 -0
- package/dist/vega/p-e0d3ca2d.js +1 -0
- package/dist/vega/{p-e9a5bd12.entry.js → p-f1ebe86b.entry.js} +1 -1
- package/dist/vega/p-f396c69a.js +1 -0
- package/dist/vega/p-fda6c178.entry.js +1 -0
- package/dist/vega/p-ffac4b8c.entry.js +1 -0
- 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/collection/helpers/validator/test/rules/object-array-required-rule.test.js +0 -7
- 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-12fe63c1.entry.js +0 -1
- package/dist/vega/p-1b67c443.entry.js +0 -1
- package/dist/vega/p-1d93b3a9.js +0 -1
- package/dist/vega/p-23fd9401.entry.js +0 -1
- package/dist/vega/p-2fecbcf9.entry.js +0 -1
- package/dist/vega/p-3152031c.js +0 -1
- package/dist/vega/p-3cb90bdf.entry.js +0 -1
- package/dist/vega/p-3e8f9fcf.entry.js +0 -1
- package/dist/vega/p-497f2f86.entry.js +0 -1
- package/dist/vega/p-50eabdca.entry.js +0 -1
- package/dist/vega/p-52a8a4f8.js +0 -1
- package/dist/vega/p-6419e13e.entry.js +0 -1
- package/dist/vega/p-66b9e86d.entry.js +0 -1
- package/dist/vega/p-74958b1a.js +0 -1
- package/dist/vega/p-7baa4fae.entry.js +0 -1
- package/dist/vega/p-7edcb8d0.entry.js +0 -1
- package/dist/vega/p-904b489a.entry.js +0 -1
- package/dist/vega/p-9689ad99.entry.js +0 -1
- package/dist/vega/p-9728d571.entry.js +0 -1
- package/dist/vega/p-a7e078ac.entry.js +0 -1
- package/dist/vega/p-a7f40a65.entry.js +0 -1
- package/dist/vega/p-a8a809e1.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-b517ed15.js +0 -1
- package/dist/vega/p-b809f3d7.entry.js +0 -1
- package/dist/vega/p-ba2833c0.entry.js +0 -1
- package/dist/vega/p-bf4996d5.entry.js +0 -1
- package/dist/vega/p-cb4fd6e1.entry.js +0 -1
- package/dist/vega/p-e9785742.entry.js +0 -1
- package/dist/vega/p-ecaf4cfa.entry.js +0 -1
- package/dist/vega/p-f41102cd.js +0 -1
- package/dist/vega/p-f5b0ce61.js +0 -1
- package/dist/vega/p-f86ec91b.js +0 -1
- /package/dist/types/{helpers/validator/test/rules/object-array-required-rule.test.d.ts → components/vega-rich-text-editor/test/dto/action-handle-strategies/action-handle-strategy-registry.test.d.ts} +0 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { MergeTwoBlocksNodesAction } from '../../actions/merge-two-blocks-nodes-action';
|
|
2
|
+
import { RemoveChildAction } from '../../actions/remove-child-action';
|
|
3
|
+
import { UpdateTextAction } from '../../actions/update-text-action';
|
|
4
|
+
import { RTETextNode } from '../../nodes/text-node';
|
|
5
|
+
import { BlockDeleteNodeContentStrategy } from './block-delete-node-content-strategy';
|
|
6
|
+
/**
|
|
7
|
+
* The text block delete text content strategy.
|
|
8
|
+
*/
|
|
9
|
+
export class BlockDeleteTextContentStrategy extends BlockDeleteNodeContentStrategy {
|
|
10
|
+
/**
|
|
11
|
+
* @inheritDoc
|
|
12
|
+
*/
|
|
13
|
+
handleAction(action, target) {
|
|
14
|
+
this.deleteNodeContent(action, target);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Handle the delete text logic when press delete key.
|
|
18
|
+
*
|
|
19
|
+
* @param {DeleteBlockContentAction} action - ModifyContentAction
|
|
20
|
+
* @param {RTETextBlock} target - Current text block
|
|
21
|
+
*/
|
|
22
|
+
deleteNodeContent(action, target) {
|
|
23
|
+
const startContainerNode = action.startContainerNode;
|
|
24
|
+
const startOffset = action.startOffset;
|
|
25
|
+
if (startOffset !== 0 && !startContainerNode.isEmpty()) {
|
|
26
|
+
const newText = startContainerNode.text.slice(0, startOffset - 1) +
|
|
27
|
+
startContainerNode.text.slice(startOffset);
|
|
28
|
+
startContainerNode.apply(new UpdateTextAction(newText));
|
|
29
|
+
if (newText) {
|
|
30
|
+
action.previousNode = startContainerNode;
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const previousNode = this.getPreviousNode(startContainerNode);
|
|
35
|
+
// Remove the last character will not delete paragraph, the paragraph will removed after press delete again
|
|
36
|
+
if ((previousNode && previousNode.parentBlock === target && previousNode['text'] === '\n') ||
|
|
37
|
+
target.nodes.length === 1) {
|
|
38
|
+
action.previousNode = startContainerNode;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
target.apply(new RemoveChildAction(startContainerNode));
|
|
43
|
+
action.previousNode = previousNode;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
let previousNode = this.getPreviousNode(startContainerNode);
|
|
50
|
+
let nextNode = null;
|
|
51
|
+
if (target.nodes.length && previousNode && previousNode.parentBlock !== target) {
|
|
52
|
+
if (startContainerNode.isEmpty()) {
|
|
53
|
+
target.apply(new RemoveChildAction(startContainerNode));
|
|
54
|
+
}
|
|
55
|
+
previousNode.parentBlock.apply(new MergeTwoBlocksNodesAction(target));
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
if (this.isContentFirstNode(startContainerNode) && startContainerNode.isEmpty()) {
|
|
59
|
+
nextNode = this.getNextNode(startContainerNode);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Remove line break
|
|
63
|
+
*
|
|
64
|
+
* @example caret at the first line
|
|
65
|
+
* \n
|
|
66
|
+
* test
|
|
67
|
+
*/
|
|
68
|
+
if (startContainerNode.isEmpty()) {
|
|
69
|
+
target.apply(new RemoveChildAction(startContainerNode));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Remove line break
|
|
73
|
+
*
|
|
74
|
+
* @example caret at the begin of second line
|
|
75
|
+
* \n
|
|
76
|
+
* test
|
|
77
|
+
*/
|
|
78
|
+
if (previousNode instanceof RTETextNode && previousNode.isEmpty()) {
|
|
79
|
+
const shouldRemoveNode = previousNode;
|
|
80
|
+
previousNode = this.getPreviousNode(previousNode);
|
|
81
|
+
shouldRemoveNode.parentBlock.apply(new RemoveChildAction(shouldRemoveNode));
|
|
82
|
+
if (!previousNode) {
|
|
83
|
+
nextNode = startContainerNode;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//Remove the paragraph block if the content is empty
|
|
88
|
+
if (target.nodes.length === 0) {
|
|
89
|
+
target.parent.apply(new RemoveChildAction(target));
|
|
90
|
+
}
|
|
91
|
+
if (previousNode) {
|
|
92
|
+
action.previousNode = previousNode;
|
|
93
|
+
}
|
|
94
|
+
else if (nextNode) {
|
|
95
|
+
action.nextNode = nextNode;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BlockInsertBlocksBeforeStrategy } from './block-insert-blocks-before-strategy';
|
|
2
|
+
/**
|
|
3
|
+
* Insert block array at the behind of the block strategy.
|
|
4
|
+
*/
|
|
5
|
+
export class BlockInsertBlocksAfterStrategy extends BlockInsertBlocksBeforeStrategy {
|
|
6
|
+
/**
|
|
7
|
+
* @inheritDoc
|
|
8
|
+
*/
|
|
9
|
+
handleAction(action, target) {
|
|
10
|
+
this.replaceBlockWithBlocks(target, action.referBlock, [
|
|
11
|
+
action.referBlock,
|
|
12
|
+
...action.blocksToBeInserted,
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
2
|
+
/**
|
|
3
|
+
* Insert block array at the front of the block strategy.
|
|
4
|
+
*/
|
|
5
|
+
export class BlockInsertBlocksBeforeStrategy extends ActionHandleStrategy {
|
|
6
|
+
/**
|
|
7
|
+
* @inheritDoc
|
|
8
|
+
*/
|
|
9
|
+
handleAction(action, target) {
|
|
10
|
+
this.replaceBlockWithBlocks(target, action.referBlock, [
|
|
11
|
+
...action.blocksToBeInserted,
|
|
12
|
+
action.referBlock,
|
|
13
|
+
]);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Replaces a specific block with an array of blocks within a RTEContentBlock array.
|
|
17
|
+
*
|
|
18
|
+
* @param {RTEListBlock|VegaRTEContent} target - The list block or the VegaRTEContent instance.
|
|
19
|
+
* @param {RTEBlock} referBlock - Used as a reference block to identify the block that needs to be replaced in the `blocks` array.
|
|
20
|
+
* @param {RTEBlock[]} blocks - An array of RTEBlock objects that you want to replace the `referBlock` with in the `blocks` array.
|
|
21
|
+
*/
|
|
22
|
+
replaceBlockWithBlocks(target, referBlock, blocks) {
|
|
23
|
+
if (target.blocks) {
|
|
24
|
+
blocks.forEach((block) => {
|
|
25
|
+
block.parent = target;
|
|
26
|
+
});
|
|
27
|
+
const arrayFixed = target.blocks;
|
|
28
|
+
target.blocks = arrayFixed.flatMap((block) => {
|
|
29
|
+
if (block === referBlock) {
|
|
30
|
+
return blocks;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
return block;
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { InsertBlocksAfterAction } from '../../actions/insert-blocks-after-block';
|
|
2
|
+
import { InsertBlocksBeforeAction } from '../../actions/insert-blocks-before-block';
|
|
3
|
+
import { SplitBlockWithNodeAction } from '../../actions/split-block-with-node-action';
|
|
4
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
5
|
+
/**
|
|
6
|
+
* Insert a image block into the text block at special position strategy.
|
|
7
|
+
*/
|
|
8
|
+
export class BlockInsertImageIntoTextStrategy extends ActionHandleStrategy {
|
|
9
|
+
/**
|
|
10
|
+
* insertImage
|
|
11
|
+
*
|
|
12
|
+
* @param {InsertImageToBlockAction} action - Insert image action instance.
|
|
13
|
+
* @param {RTETextBlock} target - The text block.
|
|
14
|
+
*/
|
|
15
|
+
handleAction(action, target) {
|
|
16
|
+
const splitNode = action.splitPointNode;
|
|
17
|
+
const startOffsetOfNode = action.startOffsetOfNode;
|
|
18
|
+
const newImageBlock = action.imageBlockToBeInserted;
|
|
19
|
+
if (this.isCaretPositionAtTextBlockEnd(target, splitNode, startOffsetOfNode)) {
|
|
20
|
+
target.parent.apply(new InsertBlocksAfterAction(target, newImageBlock));
|
|
21
|
+
}
|
|
22
|
+
else if (this.isCaretPositionAtTextBlockStart(target, splitNode, startOffsetOfNode)) {
|
|
23
|
+
target.parent.apply(new InsertBlocksBeforeAction(target, newImageBlock));
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
const splitBlockAction = new SplitBlockWithNodeAction(splitNode, startOffsetOfNode);
|
|
27
|
+
target.apply(splitBlockAction);
|
|
28
|
+
target.parent.apply(new InsertBlocksAfterAction(target, newImageBlock));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { generateUUID } from '../../../../../utils/misc';
|
|
2
|
+
import { ReplaceChildNodesAction } from '../../actions/replace-child-nodes-action';
|
|
3
|
+
import { RTETextNode } from '../../nodes/text-node';
|
|
4
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
5
|
+
/**
|
|
6
|
+
* Insert a line break node into current text block at special position strategy.
|
|
7
|
+
*/
|
|
8
|
+
export class BlockInsertLineBreakStrategy extends ActionHandleStrategy {
|
|
9
|
+
/**
|
|
10
|
+
* @inheritDoc
|
|
11
|
+
*/
|
|
12
|
+
handleAction(action, target) {
|
|
13
|
+
action.lineBreakNode = this.lineBreakSingleBlock(action.startContainerNode, action.startOffset, target);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* lineBreakSingleBlock
|
|
17
|
+
*
|
|
18
|
+
* @param {RTETextNode} splitNode -
|
|
19
|
+
* @param {number} startOffsetOfNode -
|
|
20
|
+
* @param {RTETextBlock} target -
|
|
21
|
+
* @returns {Nullable<RTETextNode>} Nullable<RTETextNode>
|
|
22
|
+
*/
|
|
23
|
+
lineBreakSingleBlock(splitNode, startOffsetOfNode, target) {
|
|
24
|
+
if (splitNode) {
|
|
25
|
+
const lineBreakNode = new RTETextNode(generateUUID(), '\n', target);
|
|
26
|
+
const beforeText = splitNode.text.slice(0, startOffsetOfNode);
|
|
27
|
+
const afterText = splitNode.text.slice(startOffsetOfNode);
|
|
28
|
+
const nodesSplitIndex = target.nodes.indexOf(splitNode);
|
|
29
|
+
if (nodesSplitIndex > -1) {
|
|
30
|
+
const beforeNodes = target.nodes.slice(0, nodesSplitIndex);
|
|
31
|
+
const afterNodes = target.nodes.slice(nodesSplitIndex + 1);
|
|
32
|
+
if (beforeText) {
|
|
33
|
+
beforeNodes.push(splitNode.cloneWithText(beforeText));
|
|
34
|
+
}
|
|
35
|
+
if (afterText) {
|
|
36
|
+
afterNodes.unshift(splitNode.cloneWithText(afterText));
|
|
37
|
+
}
|
|
38
|
+
this.mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target);
|
|
39
|
+
}
|
|
40
|
+
return lineBreakNode;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* mergeLineBreakNodes
|
|
45
|
+
*
|
|
46
|
+
* @param {RTENode[]} beforeNodes -
|
|
47
|
+
* @param {RTETextNode} lineBreakNode -
|
|
48
|
+
* @param {RTENode[]} afterNodes -
|
|
49
|
+
* @param {RTETextBlock} target -
|
|
50
|
+
*/
|
|
51
|
+
mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target) {
|
|
52
|
+
if (afterNodes.length === 0 || (afterNodes[0] && afterNodes[0].text === '')) {
|
|
53
|
+
afterNodes.push(new RTETextNode(generateUUID(), '\n', target, beforeNodes[beforeNodes.length - 1] && beforeNodes[beforeNodes.length - 1].annotationMap));
|
|
54
|
+
}
|
|
55
|
+
target.apply(new ReplaceChildNodesAction([...beforeNodes, lineBreakNode, ...afterNodes]));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { generateUUID } from '../../../../../utils/misc';
|
|
2
|
+
import { RemoveChildAction } from '../../actions/remove-child-action';
|
|
3
|
+
import { ReplaceChildNodesAction } from '../../actions/replace-child-nodes-action';
|
|
4
|
+
import { RTETextNode } from '../../nodes/text-node';
|
|
5
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
6
|
+
/**
|
|
7
|
+
* Insert a line break node into multiple blocks selection at special position strategy.
|
|
8
|
+
*/
|
|
9
|
+
export class BlockInsertLineBreakWithBlocksStrategy extends ActionHandleStrategy {
|
|
10
|
+
/**
|
|
11
|
+
* @inheritDoc
|
|
12
|
+
*/
|
|
13
|
+
handleAction(action, target) {
|
|
14
|
+
action.lineBreakNode = this.lineBreakMultipleBlocks(action.selectedBlocks, target);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* lineBreakMultipleBlocks
|
|
18
|
+
*
|
|
19
|
+
* @param {RTEBlock[]} selectedBlocks -
|
|
20
|
+
* @param {RTETextBlock} target -
|
|
21
|
+
* @returns {Nullable<RTETextNode>} Nullable<RTETextNode>
|
|
22
|
+
*/
|
|
23
|
+
lineBreakMultipleBlocks(selectedBlocks, target) {
|
|
24
|
+
const beforeNodes = target.nodes;
|
|
25
|
+
const lineBreakNode = new RTETextNode(generateUUID(), '\n', target);
|
|
26
|
+
const afterNodes = this.concatBlocksNodes(selectedBlocks.slice(1));
|
|
27
|
+
this.mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target);
|
|
28
|
+
return lineBreakNode;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Concat the child nodes of multiple RTEBlocks if both are not images.
|
|
32
|
+
*
|
|
33
|
+
* @param {RTEBlock[]} blocks - multiple block of content in a rich text editor, such as a paragraph, heading, image, etc.
|
|
34
|
+
* @returns {RTENode[]} Array of connected block nodes
|
|
35
|
+
*/
|
|
36
|
+
concatBlocksNodes(blocks) {
|
|
37
|
+
const nodes = [];
|
|
38
|
+
blocks.map((block) => {
|
|
39
|
+
if (block.type !== 'image') {
|
|
40
|
+
nodes.push(...block['nodes']);
|
|
41
|
+
block.parent.apply(new RemoveChildAction(block));
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
return nodes;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* mergeLineBreakNodes
|
|
48
|
+
*
|
|
49
|
+
* @param {RTENode[]} beforeNodes -
|
|
50
|
+
* @param {RTETextNode} lineBreakNode -
|
|
51
|
+
* @param {RTENode[]} afterNodes -
|
|
52
|
+
* @param {RTETextBlock} target -
|
|
53
|
+
*/
|
|
54
|
+
mergeLineBreakNodes(beforeNodes, lineBreakNode, afterNodes, target) {
|
|
55
|
+
if (afterNodes.length === 0 || (afterNodes[0] && afterNodes[0].text === '')) {
|
|
56
|
+
afterNodes.push(new RTETextNode(generateUUID(), '\n', target, beforeNodes[beforeNodes.length - 1] && beforeNodes[beforeNodes.length - 1].annotationMap));
|
|
57
|
+
}
|
|
58
|
+
target.apply(new ReplaceChildNodesAction([...beforeNodes, lineBreakNode, ...afterNodes]));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { AppendChildNodesAction } from '../../actions/append-child-nodes-action';
|
|
2
|
+
import { InsertBlocksAfterAction } from '../../actions/insert-blocks-after-block';
|
|
3
|
+
import { InsertBlocksBeforeAction } from '../../actions/insert-blocks-before-block';
|
|
4
|
+
import { SplitBlockWithNodeAction } from '../../actions/split-block-with-node-action';
|
|
5
|
+
import { NodeAnnotationTypeEnum } from '../../annotations/node-annotation.abstract';
|
|
6
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
7
|
+
/**
|
|
8
|
+
* Insert new paragraph into current text block at special position.
|
|
9
|
+
*/
|
|
10
|
+
export class BlockInsertNewParagraphStrategy extends ActionHandleStrategy {
|
|
11
|
+
/**
|
|
12
|
+
* @inheritDoc
|
|
13
|
+
*/
|
|
14
|
+
handleAction(action, target) {
|
|
15
|
+
action.newBlock = this.breakSingleTextBlock(action.startContainerNode, action.startOffset, target);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* breakSingleTextBlock
|
|
19
|
+
*
|
|
20
|
+
* @param {RTETextNode} splitNode -
|
|
21
|
+
* @param {number} startOffsetOfNode -
|
|
22
|
+
* @param {RTETextBlock} target -
|
|
23
|
+
* @returns {Nullable<RTEBlock>} Nullable<RTEBlock>
|
|
24
|
+
*/
|
|
25
|
+
breakSingleTextBlock(splitNode, startOffsetOfNode, target) {
|
|
26
|
+
const newParagraph = this.copyInlineStyleToNewParagraph(splitNode, target);
|
|
27
|
+
if (this.isCaretPositionAtTextBlockEnd(target, splitNode, startOffsetOfNode)) {
|
|
28
|
+
target.parent.apply(new InsertBlocksAfterAction(target, newParagraph));
|
|
29
|
+
}
|
|
30
|
+
else if (this.isCaretPositionAtTextBlockStart(target, splitNode, startOffsetOfNode)) {
|
|
31
|
+
target.parent.apply(new InsertBlocksBeforeAction(target, newParagraph));
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const splitBlockAction = new SplitBlockWithNodeAction(splitNode, startOffsetOfNode);
|
|
35
|
+
target.apply(splitBlockAction);
|
|
36
|
+
return splitBlockAction.newBlock;
|
|
37
|
+
}
|
|
38
|
+
return newParagraph;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* copyInlineStyleToNewParagraph
|
|
42
|
+
*
|
|
43
|
+
* @param {RTETextNode} needCopedNode - The text node.
|
|
44
|
+
* @param {RTETextBlock} target - The text block.
|
|
45
|
+
* @returns {RTETextBlock} - The new paragraph.
|
|
46
|
+
*/
|
|
47
|
+
copyInlineStyleToNewParagraph(needCopedNode, target) {
|
|
48
|
+
const textNode = needCopedNode.cloneWithText('');
|
|
49
|
+
// The link annotation don't need inherited
|
|
50
|
+
textNode.annotationMap.delete(NodeAnnotationTypeEnum.LINK);
|
|
51
|
+
const newParagraph = target.createNewParagraph();
|
|
52
|
+
newParagraph.apply(new AppendChildNodesAction([textNode]));
|
|
53
|
+
return newParagraph;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BlockReplaceNodeWithNodesStrategy } from './block-replace-node-with-nodes-strategy';
|
|
2
|
+
/**
|
|
3
|
+
* Insert some text nodes at the behind of the node strategy.
|
|
4
|
+
*/
|
|
5
|
+
export class BlockInsertNodesAfterNodeStrategy extends BlockReplaceNodeWithNodesStrategy {
|
|
6
|
+
/**
|
|
7
|
+
* @inheritDoc
|
|
8
|
+
*/
|
|
9
|
+
handleAction(action, target) {
|
|
10
|
+
const referNode = action.referNode;
|
|
11
|
+
const nodes = [referNode, ...action.nodesToBeInserted];
|
|
12
|
+
this.replaceNodeWithNodes(target, referNode, nodes);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { BlockReplaceNodeWithNodesStrategy } from './block-replace-node-with-nodes-strategy';
|
|
2
|
+
/**
|
|
3
|
+
* Insert some text nodes at the before of the node strategy.
|
|
4
|
+
*/
|
|
5
|
+
export class BlockInsertNodesBeforeNodeStrategy extends BlockReplaceNodeWithNodesStrategy {
|
|
6
|
+
/**
|
|
7
|
+
* @inheritDoc
|
|
8
|
+
*/
|
|
9
|
+
handleAction(action, target) {
|
|
10
|
+
const referNode = action.referNode;
|
|
11
|
+
const nodes = [...action.nodesToBeInserted, referNode];
|
|
12
|
+
this.replaceNodeWithNodes(target, referNode, nodes);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AppendChildNodesAction } from '../../actions/append-child-nodes-action';
|
|
2
|
+
import { RemoveChildAction } from '../../actions/remove-child-action';
|
|
3
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
4
|
+
/**
|
|
5
|
+
* Append the second block child nodes to the first block child nodes and remove the second block strategy.
|
|
6
|
+
*/
|
|
7
|
+
export class BlockMergeNodesStrategy extends ActionHandleStrategy {
|
|
8
|
+
/**
|
|
9
|
+
* Merges the child nodes of two RTEBlocks if they have the same type or both are not images.
|
|
10
|
+
*
|
|
11
|
+
* @param {MergeTwoBlocksNodesAction} action - The merge block nodes action instance.
|
|
12
|
+
* @param {RTETextBlock | RTEImageBlock} target - The first text block or image block.
|
|
13
|
+
*/
|
|
14
|
+
handleAction(action, target) {
|
|
15
|
+
const anotherBlock = action.blockNeedToBeMerged;
|
|
16
|
+
if (target.type === anotherBlock.type || (target.type !== 'image' && anotherBlock.type !== 'image')) {
|
|
17
|
+
let shouldMergeNodes = anotherBlock['nodes'];
|
|
18
|
+
if (anotherBlock['type'] !== 'image') {
|
|
19
|
+
shouldMergeNodes = anotherBlock['nodes'].filter((node) => node.text);
|
|
20
|
+
}
|
|
21
|
+
target.apply(new AppendChildNodesAction(shouldMergeNodes));
|
|
22
|
+
anotherBlock.parent.apply(new RemoveChildAction(anotherBlock));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
2
|
+
/**
|
|
3
|
+
* List block or VegaRTEContent remove child block strategy.
|
|
4
|
+
*/
|
|
5
|
+
export class BlockRemoveChildBlockStrategy extends ActionHandleStrategy {
|
|
6
|
+
/**
|
|
7
|
+
* @inheritDoc
|
|
8
|
+
*/
|
|
9
|
+
handleAction(action, target) {
|
|
10
|
+
const blockToBeRemoved = action.entityToBeRemoved;
|
|
11
|
+
if (target.blocks) {
|
|
12
|
+
target.blocks = target.blocks.filter((block) => block !== blockToBeRemoved);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { RemoveChildAction } from '../../actions/remove-child-action';
|
|
2
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
3
|
+
/**
|
|
4
|
+
* Remove the node from the text block or image block strategy.
|
|
5
|
+
*/
|
|
6
|
+
export class BlockRemoveNodeStrategy extends ActionHandleStrategy {
|
|
7
|
+
/**
|
|
8
|
+
* Remove the text node from the parent text block or remove the image node from the parent image block.
|
|
9
|
+
* Remove the block if the block nodes is empty after delete the current node.
|
|
10
|
+
*
|
|
11
|
+
* @param {RemoveChildAction} action - The remove child action instance.
|
|
12
|
+
* @param {RTETextBlock | RTEImageBlock} target - The parent block of the node that will be removed.
|
|
13
|
+
*/
|
|
14
|
+
handleAction(action, target) {
|
|
15
|
+
const arrayFixed = target.nodes;
|
|
16
|
+
target.nodes = arrayFixed.filter((node) => node !== action.entityToBeRemoved);
|
|
17
|
+
if (target.nodes.length === 0 && target.parent) {
|
|
18
|
+
target.parent.apply(new RemoveChildAction(target));
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
2
|
+
/**
|
|
3
|
+
* Replace the node with new node array strategy.
|
|
4
|
+
*/
|
|
5
|
+
export class BlockReplaceNodeWithNodesStrategy extends ActionHandleStrategy {
|
|
6
|
+
/**
|
|
7
|
+
* Replace the current node to the new node array.
|
|
8
|
+
*
|
|
9
|
+
* @param {RTEBlock} target - The image block or the text block.
|
|
10
|
+
* @param {RTENode} referNode - The text node or the image node.
|
|
11
|
+
* @param {RTENode[]} newNodes - The array of the text node or the image node.
|
|
12
|
+
*/
|
|
13
|
+
replaceNodeWithNodes(target, referNode, newNodes) {
|
|
14
|
+
if (target['nodes']) {
|
|
15
|
+
newNodes.forEach((node) => {
|
|
16
|
+
node.parentBlock = target;
|
|
17
|
+
});
|
|
18
|
+
target['nodes'] = target['nodes'].flatMap((node) => {
|
|
19
|
+
if (node === referNode) {
|
|
20
|
+
return newNodes;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
return node;
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { AppendChildNodesAction } from '../../actions/append-child-nodes-action';
|
|
2
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
3
|
+
/**
|
|
4
|
+
* Remove all nodes and append new nodes strategy.
|
|
5
|
+
*/
|
|
6
|
+
export class BlockReplaceNodesStrategy extends ActionHandleStrategy {
|
|
7
|
+
/**
|
|
8
|
+
* Empty the text block or image block nodes and add new nodes.
|
|
9
|
+
*
|
|
10
|
+
* @param {ReplaceChildNodesAction} action - The replace child nodes action instance.
|
|
11
|
+
* @param {RTETextBlock | RTEImageBlock} target - The text block or the image block.
|
|
12
|
+
*/
|
|
13
|
+
handleAction(action, target) {
|
|
14
|
+
target.nodes = [];
|
|
15
|
+
target.apply(new AppendChildNodesAction(action.newChildNodes));
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { AppendChildNodesAction } from '../../actions/append-child-nodes-action';
|
|
2
|
+
import { InsertBlocksAfterAction } from '../../actions/insert-blocks-after-block';
|
|
3
|
+
import { ReplaceChildNodesAction } from '../../actions/replace-child-nodes-action';
|
|
4
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
5
|
+
/**
|
|
6
|
+
* Split the current image block with a special position strategy.
|
|
7
|
+
*/
|
|
8
|
+
export class BlockSplitWithImageNodeStrategy extends ActionHandleStrategy {
|
|
9
|
+
/**
|
|
10
|
+
* @inheritDoc
|
|
11
|
+
*/
|
|
12
|
+
handleAction(action, target) {
|
|
13
|
+
action.newBlock = this.splitImageNodes(action.splitPointNode, action.startOffsetOfNode, target);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* The image offset should be 0 or 1
|
|
17
|
+
* <vega-rich-text-image-editor><img /></vega-rich-text-image-editor>
|
|
18
|
+
*
|
|
19
|
+
* @param {RTEImageNode} imageNode The split point image node.
|
|
20
|
+
* @param {number} imageOffset The cursor point 0 | 1.
|
|
21
|
+
* @param {RTEImageBlock} target The image block.
|
|
22
|
+
* @returns {Nullable<RTEBlock>} The new block after split
|
|
23
|
+
*/
|
|
24
|
+
splitImageNodes(imageNode, imageOffset, target) {
|
|
25
|
+
const nodesSplitIndex = target.nodes.indexOf(imageNode);
|
|
26
|
+
if (nodesSplitIndex > -1) {
|
|
27
|
+
const beforeNodes = target.nodes.slice(0, nodesSplitIndex + imageOffset);
|
|
28
|
+
const afterNodes = target.nodes.slice(nodesSplitIndex + imageOffset);
|
|
29
|
+
target.apply(new ReplaceChildNodesAction(beforeNodes));
|
|
30
|
+
const newBlock = this.cloneWithNodes(afterNodes, target);
|
|
31
|
+
target.parent.apply(new InsertBlocksAfterAction(target, newBlock));
|
|
32
|
+
return newBlock;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Creates a new RTEImageBlock instance with the provided RTEImageNode instances appended to it.
|
|
37
|
+
*
|
|
38
|
+
* @param {RTEImageNode[]} nodes - An array of RTEImageNode objects that will be used to create a new RTEImageBlock instance.
|
|
39
|
+
* @param {RTEImageBlock} target The image block.
|
|
40
|
+
* @returns {RTEImageBlock} A new `RTEImageBlock` object with the provided `nodes` appended to it.
|
|
41
|
+
*/
|
|
42
|
+
cloneWithNodes(nodes, target) {
|
|
43
|
+
const block = target.createNewImageBlock();
|
|
44
|
+
block.nodes = [];
|
|
45
|
+
block.apply(new AppendChildNodesAction(nodes));
|
|
46
|
+
return block;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { InsertBlocksAfterAction } from '../../actions/insert-blocks-after-block';
|
|
2
|
+
import { ReplaceChildNodesAction } from '../../actions/replace-child-nodes-action';
|
|
3
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
4
|
+
/**
|
|
5
|
+
* Split the current node with a special position strategy.
|
|
6
|
+
*/
|
|
7
|
+
export class BlockSplitWithTextNodeStrategy extends ActionHandleStrategy {
|
|
8
|
+
/**
|
|
9
|
+
* @inheritDoc
|
|
10
|
+
*/
|
|
11
|
+
handleAction(action, target) {
|
|
12
|
+
action.newBlock = this.splitTextNodeBlock(action.splitPointNode, action.startOffsetOfNode, target);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Splits a text node at a specified offset within a block of nodes and returns a new block with the split nodes.
|
|
16
|
+
*
|
|
17
|
+
* @param {RTETextNode} splitNode - The text node that will be split
|
|
18
|
+
* @param {number} startOffsetOfNode - The index at which will split the text content of the `splitNode`.
|
|
19
|
+
* @param {RTETextBlock} textBlock - The text block need to be splited.
|
|
20
|
+
* @returns {Nullable<RTEBlock>} return either an RTEBlock object or null.
|
|
21
|
+
*/
|
|
22
|
+
splitTextNodeBlock(splitNode, startOffsetOfNode, textBlock) {
|
|
23
|
+
if (splitNode) {
|
|
24
|
+
const beforeText = splitNode.text.slice(0, startOffsetOfNode);
|
|
25
|
+
const afterText = splitNode.text.slice(startOffsetOfNode);
|
|
26
|
+
const nodesSplitIndex = textBlock.nodes.indexOf(splitNode);
|
|
27
|
+
if (nodesSplitIndex > -1) {
|
|
28
|
+
const beforeNodes = textBlock.nodes.slice(0, nodesSplitIndex);
|
|
29
|
+
const afterNodes = textBlock.nodes.slice(nodesSplitIndex + 1);
|
|
30
|
+
if (beforeText) {
|
|
31
|
+
beforeNodes.push(splitNode.cloneWithText(beforeText));
|
|
32
|
+
}
|
|
33
|
+
if (afterText) {
|
|
34
|
+
afterNodes.unshift(splitNode.cloneWithText(afterText));
|
|
35
|
+
}
|
|
36
|
+
textBlock.apply(new ReplaceChildNodesAction(beforeNodes));
|
|
37
|
+
const newBlock = textBlock.cloneWithNodes(afterNodes);
|
|
38
|
+
textBlock.parent.apply(new InsertBlocksAfterAction(textBlock, newBlock));
|
|
39
|
+
return newBlock;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AppendChildNodesAction } from '../../actions/append-child-nodes-action';
|
|
2
|
+
import { InsertBlocksAfterAction } from '../../actions/insert-blocks-after-block';
|
|
3
|
+
import { RemoveChildAction } from '../../actions/remove-child-action';
|
|
4
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
5
|
+
/**
|
|
6
|
+
* Convert the selected blocks to list strategy.
|
|
7
|
+
*/
|
|
8
|
+
export class BlockTransformToListStrategy extends ActionHandleStrategy {
|
|
9
|
+
/**
|
|
10
|
+
* This method will create a empty list block and append all selected blocks as list item block.
|
|
11
|
+
*
|
|
12
|
+
* @param {TransformListAction} action - The transform list action instance.
|
|
13
|
+
* @param {RTETextBlock} target - The first item of the selected block.
|
|
14
|
+
*/
|
|
15
|
+
handleAction(action, target) {
|
|
16
|
+
const contentState = target.parent;
|
|
17
|
+
const bulletList = contentState.createList(action.listType);
|
|
18
|
+
const selectedBlocks = action.selectedBlocks;
|
|
19
|
+
const listItems = selectedBlocks.map((block) => contentState.toListItem(block));
|
|
20
|
+
bulletList.apply(new AppendChildNodesAction(listItems));
|
|
21
|
+
contentState.apply(new InsertBlocksAfterAction(action.selectedBlocks[0], bulletList));
|
|
22
|
+
selectedBlocks.forEach((block) => {
|
|
23
|
+
block.parent.apply(new RemoveChildAction(block));
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AppendChildNodesAction } from '../../actions/append-child-nodes-action';
|
|
2
|
+
import { InsertBlocksAfterAction } from '../../actions/insert-blocks-after-block';
|
|
3
|
+
import { InsertBlocksBeforeAction } from '../../actions/insert-blocks-before-block';
|
|
4
|
+
import { SplitBlockWithNodeAction } from '../../actions/split-block-with-node-action';
|
|
5
|
+
import { ActionHandleStrategy } from '../action-handle-strategy.abstract';
|
|
6
|
+
/**
|
|
7
|
+
* Insert a image node at the special position of image block.
|
|
8
|
+
*/
|
|
9
|
+
export class ImageBlockInsertImageStrategy extends ActionHandleStrategy {
|
|
10
|
+
/**
|
|
11
|
+
* @inheritDoc
|
|
12
|
+
*/
|
|
13
|
+
handleAction(action, target) {
|
|
14
|
+
const splitNode = action.splitPointNode;
|
|
15
|
+
const startOffsetOfNode = action.startOffsetOfNode;
|
|
16
|
+
const newImageBlock = action.imageBlockToBeInserted;
|
|
17
|
+
const newImageNodes = newImageBlock.nodes;
|
|
18
|
+
if (target.nodes.length < 1) {
|
|
19
|
+
target.apply(new AppendChildNodesAction(newImageNodes));
|
|
20
|
+
}
|
|
21
|
+
else if (this.isCaretPositionAtImageBlockEnd(target, splitNode, startOffsetOfNode)) {
|
|
22
|
+
target.parent.apply(new InsertBlocksAfterAction(target, newImageBlock));
|
|
23
|
+
}
|
|
24
|
+
else if (this.isCaretPositionAtImageBlockStart(target, splitNode, startOffsetOfNode)) {
|
|
25
|
+
target.parent.apply(new InsertBlocksBeforeAction(target, newImageBlock));
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
target.apply(new SplitBlockWithNodeAction(splitNode, startOffsetOfNode));
|
|
29
|
+
target.parent.apply(new InsertBlocksAfterAction(target, newImageBlock));
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|