From fdf67a7dc4fba53b9766591e4aab831e75c13e75 Mon Sep 17 00:00:00 2001 From: chris <kokosias@yahoo.gr> Date: Fri, 22 Jan 2021 01:01:31 +0200 Subject: [PATCH] fix(find-and-replace): move to next view if no matches found --- .../findAndReplace/FindComponent.js | 25 +++++++++++-------- .../src/components/findAndReplace/helpers.js | 1 - 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/wax-prosemirror-components/src/components/findAndReplace/FindComponent.js b/wax-prosemirror-components/src/components/findAndReplace/FindComponent.js index 26ddd651a..f7e1a0bb0 100644 --- a/wax-prosemirror-components/src/components/findAndReplace/FindComponent.js +++ b/wax-prosemirror-components/src/components/findAndReplace/FindComponent.js @@ -94,11 +94,13 @@ const Svg = styled.svg.attrs(() => ({ width: 24px; `; +var lastActiveViewId; +var lastSelection; const FindComponent = ({ close, expand, setPreviousSearcValue }) => { const { app, view, activeViewId } = useContext(WaxContext); const searchRef = useRef(null); - const [lastActiveViewId, setlastActiveViewId] = useState(); - const [lastSelection, setLastSelection] = useState(); + // const [lastActiveViewId, setlastActiveViewId] = useState(); + // const [lastSelection, setLastSelection] = useState(); const [searchValue, setSearchValue] = useState(''); const [counterText, setCounterText] = useState('0 of 0'); @@ -123,9 +125,10 @@ const FindComponent = ({ close, expand, setPreviousSearcValue }) => { useEffect(() => { if (view[activeViewId].state.selection.from !== 0) { - setLastSelection(view[activeViewId].state.selection); - setlastActiveViewId(activeViewId); + lastSelection = view[activeViewId].state.selection; + lastActiveViewId = activeViewId; } + delayedSearch(); if (isFirstRun) { setTimeout(() => { @@ -190,6 +193,7 @@ const FindComponent = ({ close, expand, setPreviousSearcValue }) => { const resultsFrom = helpers.getResultsFrom(results); const notesIds = helpers.getNotesIds(view.main); + /* if no matches are found on focused view */ if (!resultsFrom[lastActiveViewId]) { view[findViewWithMatches(results)].dispatch( view[findViewWithMatches(results)].state.tr.setSelection( @@ -199,11 +203,10 @@ const FindComponent = ({ close, expand, setPreviousSearcValue }) => { ), ); view[findViewWithMatches(results)].focus(); - setlastActiveViewId(findViewWithMatches(results)); - console.log(lastActiveViewId); + lastActiveViewId = findViewWithMatches(results); + lastSelection = view[lastActiveViewId].state.selection; } - console.log(results[lastActiveViewId], lastActiveViewId); const found = helpers.getClosestMatch( lastSelection.from, resultsFrom[lastActiveViewId], @@ -231,8 +234,8 @@ const FindComponent = ({ close, expand, setPreviousSearcValue }) => { notesIds.indexOf(lastActiveViewId) === notesIds.length - 1 && results.main.length > 0 ) { - setLastSelection(view[activeViewId].state.selection); - setlastActiveViewId(activeViewId); + lastSelection = view[activeViewId].state.selection; + lastActiveViewId = activeViewId; helpers.moveToMatch(view, 'main', results, 0); helpers.clearViewSelection(view, lastActiveViewId); } else { @@ -242,8 +245,8 @@ const FindComponent = ({ close, expand, setPreviousSearcValue }) => { notesIds[i] !== lastActiveViewId ) { helpers.moveToMatch(view, notesIds[i], results, 0); - setLastSelection(view[activeViewId].state.selection); - setlastActiveViewId(activeViewId); + lastSelection = view[activeViewId].state.selection; + lastActiveViewId = activeViewId; helpers.clearViewSelection(view, lastActiveViewId); break; diff --git a/wax-prosemirror-components/src/components/findAndReplace/helpers.js b/wax-prosemirror-components/src/components/findAndReplace/helpers.js index 07ae42afd..1b3f53836 100644 --- a/wax-prosemirror-components/src/components/findAndReplace/helpers.js +++ b/wax-prosemirror-components/src/components/findAndReplace/helpers.js @@ -107,7 +107,6 @@ const getResultsFrom = results => { }; const getClosestMatch = (selectionFrom, results, greater = true) => { - console.log(results); return results.reduce((a, b) => { const greaterSmaller = greater ? a > b : a < b; const aDiff = Math.abs(a - selectionFrom); -- GitLab