From e7329b3656c6a1345c6cca1868063176c854485b Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 6 Aug 2020 19:47:55 +0300 Subject: [PATCH] accept all deletions --- .../AcceptTrackChange.js | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js index 48192a422..9589c1b3c 100644 --- a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js +++ b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js @@ -1,4 +1,6 @@ -import { Mapping, RemoveMarkStep } from 'prosemirror-transform'; +import { Mapping, RemoveMarkStep, ReplaceStep } from 'prosemirror-transform'; +import { Slice } from 'prosemirror-model'; + import { minBy, maxBy } from 'lodash'; import { injectable } from 'inversify'; @@ -21,6 +23,17 @@ class AcceptTrackChange extends Tools { state.doc.nodesBetween(from, to, (node, pos) => { if ( + node.marks && + node.marks.find(mark => mark.type.name === 'deletion') + ) { + const deletionStep = new ReplaceStep( + map.map(Math.max(pos, from)), + map.map(Math.min(pos + node.nodeSize, to)), + Slice.empty, + ); + tr.step(deletionStep); + map.appendMap(deletionStep.getMap()); + } else if ( node.marks && node.marks.find(mark => mark.type.name === 'insertion') ) { @@ -29,13 +42,14 @@ class AcceptTrackChange extends Tools { ); tr.step( new RemoveMarkStep( - map.map(maxBy(pos, from)), - map.map(minBy(pos + node.nodeSize, to)), + map.map(Math.max(pos, from)), + map.map(Math.min(pos + node.nodeSize, to)), insertionMark, ), ); } }); + dispatch(tr); }; } -- GitLab