From f6b070783a7da4c768a9ddcb6ad25ac4bccf7d4d Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Sun, 10 May 2020 16:04:46 +0300
Subject: [PATCH] set meta for backspace

---
 .../src/ShortCutsService/ShortCuts.js         | 20 ++++++++++--
 .../track-changes/trackedTransaction.js       | 31 +++++++++++--------
 2 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/wax-prosemirror-services/src/ShortCutsService/ShortCuts.js b/wax-prosemirror-services/src/ShortCutsService/ShortCuts.js
index 63f28ab0a..5309a5d50 100644
--- a/wax-prosemirror-services/src/ShortCutsService/ShortCuts.js
+++ b/wax-prosemirror-services/src/ShortCutsService/ShortCuts.js
@@ -15,9 +15,25 @@ import {
   setBlockType,
   chainCommands,
   exitCode,
-  selectParentNode
+  selectParentNode,
+  joinBackward,
+  selectNodeBackward,
+  deleteSelection
 } from "prosemirror-commands";
 
+const backSpace = chainCommands(
+  deleteSelection,
+  joinBackward,
+  selectNodeBackward
+);
+
+const addInputRulebackSpace = (state, dispatch, view) =>
+  backSpace(
+    state,
+    tr => dispatch(tr.setMeta("inputType", "deleteContentBackward")),
+    view
+  );
+
 @injectable()
 class ShortCuts {
   constructor(plugins, schema) {
@@ -65,7 +81,7 @@ class ShortCuts {
     return {
       "Mod-z": undo,
       "Shift-Mod-z": redo,
-      Backspace: undoInputRule,
+      Backspace: addInputRulebackSpace,
       "Mod-y": redo,
       Escape: selectParentNode,
       "Mod-Enter": chainCommands(exitCode, this.insertBreak),
diff --git a/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js b/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
index 74f9aa347..ce0933097 100644
--- a/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
+++ b/wax-prosemirror-services/src/TrackChangeService/track-changes/trackedTransaction.js
@@ -64,26 +64,31 @@ const trackedTransaction = (tr, state, user) => {
     newTr.setMeta(tr.getMeta("uiEvent"));
   }
 
-  // if (tr.selectionSet) {
-  if (
-    tr.selection instanceof TextSelection &&
-    (tr.selection.from < state.selection.from ||
-      tr.getMeta("inputType") === "deleteContentBackward")
-  ) {
-    const caretPos = map.map(tr.selection.from, -1);
-    newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
-  } else {
-    const caretPos = map.map(tr.selection.from, -1);
-    newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
-    // newTr.setSelection(tr.selection.map(newTr.doc, map));
+  if (tr.selectionSet) {
+    if (
+      tr.selection instanceof TextSelection &&
+      (tr.selection.from < state.selection.from ||
+        tr.getMeta("inputType") === "deleteContentBackward")
+    ) {
+      const caretPos = map.map(tr.selection.from, -1);
+      newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
+    } else {
+      newTr.setSelection(tr.selection.map(newTr.doc, map));
+    }
   }
-  // }
   if (tr.storedMarksSet) {
     newTr.setStoredMarks(tr.storedMarks);
   }
   if (tr.scrolledIntoView) {
     newTr.scrollIntoView();
   }
+  if (
+    tr.selection instanceof TextSelection &&
+    tr.selection.from < state.selection.from
+  ) {
+    const caretPos = map.map(tr.selection.from, -1);
+    newTr.setSelection(new TextSelection(newTr.doc.resolve(caretPos)));
+  }
 
   return newTr;
 };
-- 
GitLab