From ce33d16ace1dad6476691c83a287c73e6e758de2 Mon Sep 17 00:00:00 2001
From: chris <kokosias@yahoo.gr>
Date: Mon, 9 Nov 2020 13:06:54 +0200
Subject: [PATCH] filter characters

---
 .../SpecialCharactersComponent.js             | 32 ++++++++++++++++---
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/wax-prosemirror-components/src/components/specialCharacters/SpecialCharactersComponent.js b/wax-prosemirror-components/src/components/specialCharacters/SpecialCharactersComponent.js
index beaa9e642..03058cfed 100644
--- a/wax-prosemirror-components/src/components/specialCharacters/SpecialCharactersComponent.js
+++ b/wax-prosemirror-components/src/components/specialCharacters/SpecialCharactersComponent.js
@@ -1,10 +1,16 @@
 /* eslint react/prop-types: 0 */
-import React, { useRef, useState, useContext } from 'react';
+import React, {
+  useRef,
+  useState,
+  useContext,
+  useCallback,
+  useEffect,
+} from 'react';
 import styled from 'styled-components';
 import { grid } from '@pubsweet/ui-toolkit';
 import { v4 as uuidv4 } from 'uuid';
 import { WaxContext } from 'wax-prosemirror-core';
-import { filter, groupBy } from 'lodash';
+import { filter, groupBy, debounce } from 'lodash';
 import Icon from '../../helpers/Icon';
 import CharactersList from './CharactersList';
 
@@ -74,6 +80,7 @@ const SpecialCharacter = styled.div`
   border: 1px solid black;
   border-radius: 50%;
   span {
+    font-size: 16px;
     text-align: center;
     padding-top: 3px;
   }
@@ -91,8 +98,15 @@ const SpecialCharactersComponent = ({ close }) => {
   );
   const onChange = () => {
     setSearchValue(searchRef.current.value);
+  };
+
+  const delayedSearch = useCallback(
+    debounce(() => searchCharacters(), 300),
+    [searchValue],
+  );
+
+  const searchCharacters = () => {
     const filtertedSpecialCharacters = filter(CharactersList, value => {
-      console.log(value);
       if (value.name.toLowerCase().includes(searchValue.toLowerCase()))
         return value.name;
       return false;
@@ -100,6 +114,10 @@ const SpecialCharactersComponent = ({ close }) => {
     setSpecialCharactersList(filtertedSpecialCharacters);
   };
 
+  useEffect(() => {
+    delayedSearch();
+  }, [searchValue, delayedSearch]);
+
   const insertCharacter = () => {};
 
   const renderList = () => {
@@ -110,9 +128,13 @@ const SpecialCharactersComponent = ({ close }) => {
         <SpecialCharactersGroup key={key}>
           <GroupTitle> {key} </GroupTitle>
           <GroupCharacters>
-            {groupedCharacters[key].map((item, index) => {
+            {groupBy(specialCharactersList, 'group')[key].map((item, index) => {
               return (
-                <SpecialCharacter key={uuidv4()} onMouseDown={insertCharacter}>
+                <SpecialCharacter
+                  key={uuidv4()}
+                  onMouseDown={insertCharacter}
+                  title={item.name}
+                >
                   <span>{item.unicode}</span>
                 </SpecialCharacter>
               );
-- 
GitLab