From 416c64be6b2d0c866ae5147be1a9f8b7a0246e0b Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Sun, 11 Apr 2021 04:08:54 +0300 Subject: [PATCH] only save on changes --- .../components/comments/ConnectedComment.js | 18 ++++++++++-------- wax-prosemirror-core/src/WaxView.js | 17 +++++++++++++---- .../src/plugins/placeholder.js | 16 ++++++++-------- 3 files changed, 31 insertions(+), 20 deletions(-) diff --git a/wax-prosemirror-components/src/components/comments/ConnectedComment.js b/wax-prosemirror-components/src/components/comments/ConnectedComment.js index acb054b89..ccbd8e6a7 100644 --- a/wax-prosemirror-components/src/components/comments/ConnectedComment.js +++ b/wax-prosemirror-components/src/components/comments/ConnectedComment.js @@ -74,14 +74,16 @@ export default ({ comment, top, commentId, recalculateTops }) => { allCommentsWithSameId.forEach(singleComment => { dispatch( - tr.addMark( - singleComment.pos, - singleComment.pos + singleComment.nodeSize, - commentMark.create({ - ...((comment && comment.attrs) || {}), - conversation: comment.attrs.conversation, - }), - ), + tr + .addMark( + singleComment.pos, + singleComment.pos + singleComment.nodeSize, + commentMark.create({ + ...((comment && comment.attrs) || {}), + conversation: comment.attrs.conversation, + }), + ) + .setMeta('forceUpdate', true), ); }); activeView.focus(); diff --git a/wax-prosemirror-core/src/WaxView.js b/wax-prosemirror-core/src/WaxView.js index b195a3a64..4f539788c 100644 --- a/wax-prosemirror-core/src/WaxView.js +++ b/wax-prosemirror-core/src/WaxView.js @@ -1,4 +1,10 @@ -import React, { useRef, useContext, useCallback, useMemo } from 'react'; +import React, { + useRef, + useContext, + useCallback, + useMemo, + useState, +} from 'react'; import applyDevTools from 'prosemirror-dev-tools'; import { EditorState } from 'prosemirror-state'; @@ -10,12 +16,14 @@ import { trackedTransaction } from 'wax-prosemirror-services'; import { WaxContext } from './WaxContext'; import transformPasted from './helpers/TransformPasted'; +let previousDoc; + export default props => { const { readonly, onBlur, options, debug, autoFocus, user } = props; const editorRef = useRef(); let view; const context = useContext(WaxContext); - + const [previousState, setPreviousState] = useState(); const setEditorRef = useCallback( node => { if (editorRef.current) { @@ -75,6 +83,7 @@ export default props => { ? trackedTransaction(transaction, view.state, user) : transaction; + previousDoc = view.state.doc; const state = view.state.apply(tr); view.updateState(state); @@ -90,8 +99,8 @@ export default props => { 'main', ); } - - props.onChange(state.doc.content); + if (view.state.doc !== previousDoc || tr.getMeta('forceUpdate')) + props.onChange(state.doc.content); }; const editor = <div ref={setEditorRef} />; diff --git a/wax-prosemirror-core/src/plugins/placeholder.js b/wax-prosemirror-core/src/plugins/placeholder.js index 9a1595255..de3fd8058 100644 --- a/wax-prosemirror-core/src/plugins/placeholder.js +++ b/wax-prosemirror-core/src/plugins/placeholder.js @@ -1,7 +1,7 @@ -import { Plugin, PluginKey } from "prosemirror-state"; -import { Decoration, DecorationSet } from "prosemirror-view"; +import { Plugin, PluginKey } from 'prosemirror-state'; +import { Decoration, DecorationSet } from 'prosemirror-view'; -const placeHolderText = new PluginKey("placeHolderText"); +const placeHolderText = new PluginKey('placeHolderText'); export default props => { return new Plugin({ @@ -17,16 +17,16 @@ export default props => { ) { decorations.push( Decoration.node(pos, pos + node.nodeSize, { - class: "empty-node", - "data-content": props.content - }) + class: 'empty-node', + 'data-content': props.content, + }), ); } }; state.doc.descendants(decorate); return DecorationSet.create(state.doc, decorations); - } - } + }, + }, }); }; -- GitLab