Download frontend-components/plotly/src/utils/useClickOutside.tsx from CatPtain/OpenBB: direct link, hf CLI and curl.
- Browser
- Download file 1.39 kB
-
https://huggingface.co/spaces/CatPtain/OpenBB/resolve/main/frontend-components/plotly/src/utils/useClickOutside.tsx
- Command line
-
hf download hf://spaces/CatPtain/OpenBB/frontend-components/plotly/src/utils/useClickOutside.tsx
-
curl -L -o useClickOutside.tsx https://huggingface.co/spaces/CatPtain/OpenBB/resolve/main/frontend-components/plotly/src/utils/useClickOutside.tsx
1.39 kB
| import { RefObject, useEffect } from "react"; | |
| export default function useOnClickOutside( | |
| ref: RefObject<HTMLElement>, | |
| handler: (event: MouseEvent | TouchEvent) => void | |
| ) { | |
| useEffect(() => { | |
| const listener = (event: MouseEvent | TouchEvent) => { | |
| // Do nothing if clicking ref's element or descendent elements | |
| if (!ref.current || ref.current.contains(event.target as Node)) { | |
| return; | |
| } | |
| handler(event); | |
| }; | |
| document.addEventListener("mousedown", listener); | |
| document.addEventListener("touchstart", listener); | |
| return () => { | |
| document.removeEventListener("mousedown", listener); | |
| document.removeEventListener("touchstart", listener); | |
| }; | |
| }, [ref, handler]); | |
| } | |
| export function useOnClickInside( | |
| ref: RefObject<HTMLElement>, | |
| handler: (event: MouseEvent | TouchEvent) => void | |
| ) { | |
| useEffect(() => { | |
| const listener = (event: MouseEvent | TouchEvent) => { | |
| // Do nothing if clicking ref's element or descendent elements | |
| if (ref.current && ref.current.contains(event.target as Node)) { | |
| handler(event); | |
| } | |
| }; | |
| document.addEventListener("mousedown", listener); | |
| document.addEventListener("touchstart", listener); | |
| return () => { | |
| document.removeEventListener("mousedown", listener); | |
| document.removeEventListener("touchstart", listener); | |
| }; | |
| }, [ref, handler]); | |
| } | |