From 828cca7386149c0a83ecf3334b523cbb0e7e76c3 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Wed, 20 Dec 2023 16:16:57 +0200 Subject: [PATCH] fix fake cursor on backspace --- .../src/config/plugins/FakeCursorPlugin.js | 45 +++++++++++-------- wax-prosemirror-core/src/styles/styles.css | 2 +- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/wax-prosemirror-core/src/config/plugins/FakeCursorPlugin.js b/wax-prosemirror-core/src/config/plugins/FakeCursorPlugin.js index c53bd01f9..b4cb4734a 100644 --- a/wax-prosemirror-core/src/config/plugins/FakeCursorPlugin.js +++ b/wax-prosemirror-core/src/config/plugins/FakeCursorPlugin.js @@ -11,27 +11,34 @@ export default props => { init: (_, state) => {}, apply(tr, prev, _, newState) { let createDecoration; - const widget = document.createElement('span'); - widget.setAttribute('id', 'fake-cursor'); - if (newState.selection.from === newState.selection.to) { - createDecoration = DecorationSet.create(newState.doc, [ - Decoration.widget(newState.selection.from, widget, { - key: 'fakecursor', - }), - ]); - } - setTimeout(() => { - widget.setAttribute('contenteditable', true); - if ( - navigator.userAgent.includes('Firefox') && - newState.selection.$from.nodeBefore === null - ) { - widget.setAttribute('style', 'visibility:hidden'); - } else { - widget.setAttribute('style', 'display:none'); + if ( + tr.steps.length === 0 || + (tr.steps[0] && tr.steps[0].from === tr.steps[0].to) + ) { + const widget = document.createElement('span'); + widget.setAttribute('id', 'fake-cursor'); + + if (newState.selection.from === newState.selection.to) { + createDecoration = DecorationSet.create(newState.doc, [ + Decoration.widget(newState.selection.from, widget, { + key: 'fakecursor', + }), + ]); } - }); + setTimeout(() => { + widget.setAttribute('contenteditable', true); + if ( + navigator.userAgent.includes('Firefox') && + newState.selection.$from.nodeBefore === null + ) { + widget.setAttribute('style', 'visibility:hidden'); + } else { + widget.setAttribute('style', 'display:none'); + } + }); + } + return { createDecoration, }; diff --git a/wax-prosemirror-core/src/styles/styles.css b/wax-prosemirror-core/src/styles/styles.css index 802fced80..c8a9e456b 100644 --- a/wax-prosemirror-core/src/styles/styles.css +++ b/wax-prosemirror-core/src/styles/styles.css @@ -235,7 +235,7 @@ img.ProseMirror-separator { } span#fake-cursor::before { - display: inline; + display: inline-flex; content: ''; border-right: 1px solid black; height: 23px; -- GitLab