From 4699409a42c9c6ac80467d6a3ba477171f699458 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Thu, 6 Aug 2020 18:55:39 +0300 Subject: [PATCH] dispatch in a sinlge transaction --- .../AcceptTrackChange.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js index 7afad204f..48192a422 100644 --- a/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js +++ b/wax-prosemirror-services/src/TrackChangeService/AcceptTrackChangeService/AcceptTrackChange.js @@ -1,3 +1,6 @@ +import { Mapping, RemoveMarkStep } from 'prosemirror-transform'; +import { minBy, maxBy } from 'lodash'; + import { injectable } from 'inversify'; import Tools from '../../lib/Tools'; @@ -10,9 +13,12 @@ class AcceptTrackChange extends Tools { get run() { return (state, dispatch) => { const { + tr, selection: { from, to }, } = state; + const map = new Mapping(); + state.doc.nodesBetween(from, to, (node, pos) => { if ( node.marks && @@ -21,15 +27,16 @@ class AcceptTrackChange extends Tools { const insertionMark = node.marks.find( mark => mark.type.name === 'insertion', ); - dispatch( - state.tr.removeMark( - insertionMark.pos, - insertionMark.pos + node.nodeSize, - state.schema.marks.insertion, + tr.step( + new RemoveMarkStep( + map.map(maxBy(pos, from)), + map.map(minBy(pos + node.nodeSize, to)), + insertionMark, ), ); } }); + dispatch(tr); }; } -- GitLab