import React, { useState, useEffect, useRef } from 'react' import Tooltip from './tooltip.js' import styles from './reactButton.module.css' import reactions from '../data/reactions.json' function useOutsideAlerter(ref, action) { useEffect(() => { function handleClickOutside(event) { if (ref.current && !ref.current.contains(event.target)) { action() } } document.addEventListener('mousedown', handleClickOutside) return () => { document.removeEventListener('mousedown', handleClickOutside) } }, [ref]) } function ExistingReacts({ existingReacts, onClick, uid }) { return ( <> {existingReacts && Object.keys(existingReacts).map((key) => { const currReact = existingReacts[key] const react = reactions[key] if (!react) { return null } return ( { e.stopPropagation() onClick(key, currReact.includes(uid)) }} > {react.emoji} {currReact.length} ) })} > ) } function RenderEmojis({ onClick }) { const [search, setSearch] = useState('') return ( <> { setSearch(event.target.value) }} /> {Object.keys(reactions).map((key) => { const reaction = reactions[key] if (!key.includes(search.toLowerCase())) { return null } return (