File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import { useEffect , useRef , useState } from 'react'
2+
3+ export default function useFocus < U extends HTMLElement > ( ) {
4+ const [ isFocusing , setIsFocusing ] = useState ( false )
5+ const ref = useRef < U > ( null )
6+
7+ useEffect ( ( ) => {
8+ const element = ref . current
9+ if ( ! element ) return
10+
11+ const handleFocus = ( ) => {
12+ setIsFocusing ( true )
13+ }
14+ const handleBlur = ( ) => {
15+ setIsFocusing ( false )
16+ }
17+
18+ element . addEventListener ( 'focus' , handleFocus )
19+ element . addEventListener ( 'blur' , handleBlur )
20+
21+ return ( ) => {
22+ if ( element ) {
23+ element . removeEventListener ( 'focus' , handleFocus )
24+ element . removeEventListener ( 'blur' , handleBlur )
25+ }
26+ }
27+ } , [ ref ] )
28+
29+ return { isFocusing, ref }
30+ }
31+
32+ // const { ref: focusRef, isFocusing } = useFocus<HTMLInputElement>();
Original file line number Diff line number Diff line change 1+ import { useEffect , useRef , useState } from 'react'
2+
3+ export default function useHover < U extends HTMLElement > ( ) {
4+ const [ isHovering , setIsHovering ] = useState ( false )
5+ const ref = useRef < U > ( null )
6+
7+ useEffect ( ( ) => {
8+ const element = ref . current
9+ if ( ! element ) return
10+
11+ const handleMouseEnter = ( ) => {
12+ setIsHovering ( true )
13+ }
14+ const handleMouseLeave = ( ) => {
15+ setIsHovering ( false )
16+ }
17+
18+ element . addEventListener ( 'mouseenter' , handleMouseEnter )
19+ element . addEventListener ( 'mouseleave' , handleMouseLeave )
20+
21+ return ( ) => {
22+ if ( element ) {
23+ element . removeEventListener ( 'mouseenter' , handleMouseEnter )
24+ element . removeEventListener ( 'mouseleave' , handleMouseLeave )
25+ }
26+ }
27+ } , [ ref ] )
28+
29+ return { isHovering, ref }
30+ }
31+
32+ // const { ref: hoverRef, isHovering } = useHover<HTMLDivElement>();
Original file line number Diff line number Diff line change 1+ import { useEffect , useState } from 'react'
2+
3+ export default function useMounted ( ) {
4+ const [ mounted , setMounted ] = useState ( false )
5+
6+ useEffect ( ( ) => {
7+ setMounted ( true )
8+ } , [ ] )
9+
10+ return mounted
11+ }
12+
13+ // const mounted = useMounted();
You can’t perform that action at this time.
0 commit comments