From ddffd256724735433076cafdfad0ae398331d6a4 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Fri, 28 Jun 2024 19:35:26 +0300 Subject: [PATCH] fix updating context --- wax-prosemirror-core/src/Wax.js | 4 +- wax-prosemirror-core/src/useWaxView.js | 64 ++++++++----------- .../components/FullScreenButton.js | 1 - .../NumericalAnswerDropDownCompontent.js | 11 ---- 4 files changed, 31 insertions(+), 49 deletions(-) diff --git a/wax-prosemirror-core/src/Wax.js b/wax-prosemirror-core/src/Wax.js index bb3e37b3e..cf035dba6 100644 --- a/wax-prosemirror-core/src/Wax.js +++ b/wax-prosemirror-core/src/Wax.js @@ -56,13 +56,14 @@ const Wax = forwardRef((props, innerViewRef) => { const [application, setApplication] = useState(); const [WaxLayout, setWaxLayout] = useState(null); const configHash = createConfigWithHash(config); - + console.log(configHash); useEffect(() => { const newApplication = createApplication(props); setApplication(newApplication); const Layout = newApplication.container.get('Layout'); if (layout) Layout.setLayout(layout); setWaxLayout(Layout.layoutComponent); + setTimeout(() => {}, 100); }, [configHash]); const finalOnChange = content => { @@ -78,6 +79,7 @@ const Wax = forwardRef((props, innerViewRef) => { autoFocus={autoFocus} browserSpellCheck={browserSpellCheck} className={className} + configHash={configHash} customValues={customValues} fileUpload={fileUpload} innerViewRef={innerViewRef} diff --git a/wax-prosemirror-core/src/useWaxView.js b/wax-prosemirror-core/src/useWaxView.js index b70051292..8844d3504 100644 --- a/wax-prosemirror-core/src/useWaxView.js +++ b/wax-prosemirror-core/src/useWaxView.js @@ -9,6 +9,7 @@ import helpers from './helpers/helpers'; import './styles/styles.css'; let previousDoc; +let currentCofingHash; const useWaxView = props => { const { @@ -18,6 +19,7 @@ const useWaxView = props => { autoFocus, user, innerViewRef, + configHash, targetFormat, serializer, scrollMargin, @@ -58,17 +60,6 @@ const useWaxView = props => { attributes: { spellcheck: browserSpellCheck ? 'true' : 'false', }, - handleDOMEvents: { - focus() { - // return udpateEditorContext(view); - }, - mousedown: () => { - return udpateEditorContext(view); - }, - }, - handleKeyDown: () => { - return udpateEditorContext(view); - }, }); setWaxView(view); @@ -90,17 +81,6 @@ const useWaxView = props => { return () => (view = null); }, []); - const udpateEditorContext = editorView => { - setTimeout(() => { - context.updateView( - { - main: editorView, - }, - 'main', - ); - }, 50); - }; - useImperativeHandle(innerViewRef, () => ({ getContent() { return helpers.getDocContent(schema, serializer, targetFormat, context); @@ -108,24 +88,36 @@ const useWaxView = props => { })); const dispatchTransaction = transaction => { - const { TrackChange } = props; - const tr = - TrackChange && TrackChange.enabled - ? trackedTransaction(transaction, view.state, user, context) - : transaction; + if (currentCofingHash === configHash) { + const { TrackChange } = props; + const tr = + TrackChange && TrackChange.enabled + ? trackedTransaction(transaction, view.state, user, context) + : transaction; - if (!view) return; + if (!view) return; - previousDoc = view.state.doc; - const state = view.state.apply(tr); - view.updateState(state); + previousDoc = view.state.doc; + const state = view.state.apply(tr); + view.updateState(state); - context.setTransaction(transaction); + context.setTransaction(transaction); - const docContent = - targetFormat === 'JSON' ? state.doc.toJSON() : state.doc.content; - if (!previousDoc.eq(view.state.doc) || tr.getMeta('forceUpdate')) - onChange(docContent); + context.updateView( + { + main: view, + }, + 'main', + ); + + const docContent = + targetFormat === 'JSON' ? state.doc.toJSON() : state.doc.content; + if (!previousDoc.eq(view.state.doc) || tr.getMeta('forceUpdate')) + onChange(docContent); + } + setTimeout(() => { + currentCofingHash = configHash; + }, 100); }; return WaxView; diff --git a/wax-prosemirror-services/src/FullScreenService/components/FullScreenButton.js b/wax-prosemirror-services/src/FullScreenService/components/FullScreenButton.js index c744d370f..0a57885a9 100644 --- a/wax-prosemirror-services/src/FullScreenService/components/FullScreenButton.js +++ b/wax-prosemirror-services/src/FullScreenService/components/FullScreenButton.js @@ -15,7 +15,6 @@ const FullScreenButton = ({ view = {}, item }) => { const { state } = view; const handleMouseDown = e => { - context.updateView({}, 'main'); e.preventDefault(); Object.assign(options, { fullScreen: !options.fullScreen }); activeView.dispatch( diff --git a/wax-questions-service/src/NumericalAnswerService/components/NumericalAnswerDropDownCompontent.js b/wax-questions-service/src/NumericalAnswerService/components/NumericalAnswerDropDownCompontent.js index 249bd2e58..c80ea7c78 100644 --- a/wax-questions-service/src/NumericalAnswerService/components/NumericalAnswerDropDownCompontent.js +++ b/wax-questions-service/src/NumericalAnswerService/components/NumericalAnswerDropDownCompontent.js @@ -140,7 +140,6 @@ const NumericalAnswerDropDownCompontent = ({ node }) => { const onKeyDown = (e, index) => { e.preventDefault(); - updateWaxView(); // arrow down if (e.keyCode === 40) { if (index === itemRefs.current.length - 1) { @@ -192,7 +191,6 @@ const NumericalAnswerDropDownCompontent = ({ node }) => { }; const onChange = option => { - updateWaxView(); context.setOption({ [node.attrs.id]: { numericalAnswer: option.value } }); setLabel(option.label); openCloseMenu(); @@ -200,15 +198,6 @@ const NumericalAnswerDropDownCompontent = ({ node }) => { activeView.focus(); }; - const updateWaxView = () => { - context.updateView( - { - main: context.pmViews.main, - }, - 'main', - ); - }; - const NumericalAnswerDropDown = useMemo( () => ( <Wrapper disabled={isDisabled} ref={wrapperRef}> -- GitLab