From 1d3c6ea2c65605a2226e24fb570f8723485ef199 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Wed, 14 Apr 2021 14:12:16 +0300
Subject: [PATCH] fix find marking

---
 wax-prosemirror-components/package.json       |  2 +-
 .../ExpandedFindAndReplaceComponent.js        | 15 +++---
 .../findAndReplace/FindComponent.js           | 54 ++-----------------
 .../src/helpers/useDebounce.js                | 19 +++++++
 wax-prosemirror-core/package.json             |  2 +-
 wax-prosemirror-plugins/package.json          |  2 +-
 wax-prosemirror-schema/package.json           |  2 +-
 wax-prosemirror-services/package.json         |  2 +-
 wax-prosemirror-utilities/package.json        |  2 +-
 9 files changed, 39 insertions(+), 61 deletions(-)
 create mode 100644 wax-prosemirror-components/src/helpers/useDebounce.js

diff --git a/wax-prosemirror-components/package.json b/wax-prosemirror-components/package.json
index 27c88fbc0..19956e888 100644
--- a/wax-prosemirror-components/package.json
+++ b/wax-prosemirror-components/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.43",
   "description": "Wax prosemirror UI components",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "files": [
     "dist"
   ],
diff --git a/wax-prosemirror-components/src/components/findAndReplace/ExpandedFindAndReplaceComponent.js b/wax-prosemirror-components/src/components/findAndReplace/ExpandedFindAndReplaceComponent.js
index ab026e261..37436a96a 100644
--- a/wax-prosemirror-components/src/components/findAndReplace/ExpandedFindAndReplaceComponent.js
+++ b/wax-prosemirror-components/src/components/findAndReplace/ExpandedFindAndReplaceComponent.js
@@ -14,6 +14,7 @@ import { grid, th } from '@pubsweet/ui-toolkit';
 import Icon from '../../helpers/Icon';
 import CheckBox from '../../ui/inputs/CheckBox';
 import helpers from './helpers';
+import useDebounce from '../../helpers/useDebounce';
 
 const Wrapper = styled.div`
   background: #fff;
@@ -165,21 +166,23 @@ const ExpandedFindAndReplaceComponent = ({
     allStates.push(singleView.state);
   });
 
-  const delayedSearch = useCallback(
-    debounce(() => searchDocument(), 300),
-    [searchValue, matchCaseSearch],
-  );
+  const debouncedSearchTerm = useDebounce(searchValue, 300);
+
+  // const delayedSearch = useCallback(
+  //   debounce(() => searchDocument(), 300),
+  //   [searchValue, matchCaseSearch],
+  // );
 
   const onChangeSearchInput = () => {
     setSearchValue(searchRef.current.value);
   };
 
   useEffect(() => {
-    delayedSearch();
+    searchDocument();
     let counter = 0;
     counter = helpers.getMatchesByView(view, searchValue, matchCaseSearch);
     setCounterSearches(counter);
-  }, [searchValue, delayedSearch, matchCaseSearch, JSON.stringify(allStates)]);
+  }, [debouncedSearchTerm, matchCaseSearch, JSON.stringify(allStates)]);
 
   const setCounterSearches = counter => {
     if (counter === 0) return setCounterText('0 of 0');
diff --git a/wax-prosemirror-components/src/components/findAndReplace/FindComponent.js b/wax-prosemirror-components/src/components/findAndReplace/FindComponent.js
index 3f103e40a..2a7b421c6 100644
--- a/wax-prosemirror-components/src/components/findAndReplace/FindComponent.js
+++ b/wax-prosemirror-components/src/components/findAndReplace/FindComponent.js
@@ -1,18 +1,13 @@
 /* eslint react/prop-types: 0 */
 
-import React, {
-  useState,
-  useRef,
-  useContext,
-  useCallback,
-  useEffect,
-} from 'react';
-import { debounce, each, eachRight } from 'lodash';
+import React, { useState, useRef, useContext, useEffect } from 'react';
+import { each, eachRight } from 'lodash';
 import styled from 'styled-components';
 import { grid } from '@pubsweet/ui-toolkit';
 import { WaxContext } from 'wax-prosemirror-core';
 import Icon from '../../helpers/Icon';
 import helpers from './helpers';
+import useDebounce from '../../helpers/useDebounce';
 
 const Wrapper = styled.div`
   background: #fff;
@@ -100,38 +95,6 @@ const Svg = styled.svg.attrs(() => ({
   width: 24px;
 `;
 
-const useDebounce = (value, delay) => {
-  // State and setters for debounced value
-  const [debouncedValue, setDebouncedValue] = useState(value);
-
-  useEffect(
-    () => {
-      // Set debouncedValue to value (passed in) after the specified delay
-      const handler = setTimeout(() => {
-        setDebouncedValue(value);
-      }, delay);
-
-      // Return a cleanup function that will be called every time ...
-      // ... useEffect is re-called. useEffect will only be re-called ...
-      // ... if value changes (see the inputs array below).
-      // This is how we prevent debouncedValue from changing if value is ...
-      // ... changed within the delay period. Timeout gets cleared and restarted.
-      // To put it in context, if the user is typing within our app's ...
-      // ... search box, we don't want the debouncedValue to update until ...
-      // ... they've stopped typing for more than 500ms.
-      return () => {
-        clearTimeout(handler);
-      };
-    },
-    // Only re-call effect if value changes
-    // You could also add the "delay" var to inputs array if you ...
-    // ... need to be able to change that dynamically.
-    [value],
-  );
-
-  return debouncedValue;
-};
-
 const FindComponent = ({
   close,
   expand,
@@ -157,10 +120,6 @@ const FindComponent = ({
     allStates.push(singleView.state);
   });
 
-  // const delayedSearch = useCallback(searchDocument(), [
-  //   (debouncedSearchTerm, matchCaseSearch, activeViewId),
-  // ]);
-
   const onChange = () => {
     setSearchValue(searchRef.current.value);
   };
@@ -225,11 +184,8 @@ const FindComponent = ({
 
   const searchDocument = () => {
     let counter = 0;
-    if (searchValue === '') {
-      findAndReplacePlugin.props.setSearchText('');
-    } else {
-      findAndReplacePlugin.props.setSearchText(searchValue);
-    }
+    findAndReplacePlugin.props.setSearchText(searchValue);
+
     findAndReplacePlugin.props.setSearchMatchCase(matchCaseSearch);
     counter = helpers.getMatchesByView(view, searchValue, matchCaseSearch);
 
diff --git a/wax-prosemirror-components/src/helpers/useDebounce.js b/wax-prosemirror-components/src/helpers/useDebounce.js
new file mode 100644
index 000000000..63a074583
--- /dev/null
+++ b/wax-prosemirror-components/src/helpers/useDebounce.js
@@ -0,0 +1,19 @@
+import React, { useState, useEffect } from 'react';
+
+const useDebounce = (value, delay) => {
+  const [debouncedValue, setDebouncedValue] = useState(value);
+
+  useEffect(() => {
+    const handler = setTimeout(() => {
+      setDebouncedValue(value);
+    }, delay);
+
+    return () => {
+      clearTimeout(handler);
+    };
+  }, [value]);
+
+  return debouncedValue;
+};
+
+export default useDebounce;
diff --git a/wax-prosemirror-core/package.json b/wax-prosemirror-core/package.json
index b61cdbf01..f1333a369 100644
--- a/wax-prosemirror-core/package.json
+++ b/wax-prosemirror-core/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.43",
   "description": "Wax prosemirror core",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "files": [
     "dist"
   ],
diff --git a/wax-prosemirror-plugins/package.json b/wax-prosemirror-plugins/package.json
index 52755b313..04eb3e89e 100644
--- a/wax-prosemirror-plugins/package.json
+++ b/wax-prosemirror-plugins/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.43",
   "description": "Wax prosemirror plugins",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "files": [
     "dist"
   ],
diff --git a/wax-prosemirror-schema/package.json b/wax-prosemirror-schema/package.json
index a69f48741..c5aaf1444 100644
--- a/wax-prosemirror-schema/package.json
+++ b/wax-prosemirror-schema/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.43",
   "description": "Wax prosemirror schema",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "files": [
     "dist"
   ],
diff --git a/wax-prosemirror-services/package.json b/wax-prosemirror-services/package.json
index 79a224bfb..e1715d7cc 100644
--- a/wax-prosemirror-services/package.json
+++ b/wax-prosemirror-services/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.43",
   "description": "Wax prosemirror services",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "files": [
     "dist"
   ],
diff --git a/wax-prosemirror-utilities/package.json b/wax-prosemirror-utilities/package.json
index 1e4f33d6e..7fffb1f61 100644
--- a/wax-prosemirror-utilities/package.json
+++ b/wax-prosemirror-utilities/package.json
@@ -4,7 +4,7 @@
   "version": "0.0.43",
   "description": "Wax prosemirror utilities",
   "license": "MIT",
-  "main": "dist/index.js",
+  "main": "index.js",
   "files": [
     "dist"
   ],
-- 
GitLab