Total Complexity | 1 |
Complexity/F | 0 |
Lines of Code | 27 |
Function Count | 0 |
Duplicated Lines | 0 |
Ratio | 0 % |
Coverage | 46.15% |
Changes | 0 |
1 | import { useState, useRef } from 'react'; |
||
2 | |||
3 | 6 | const DEFAULT_DELAY = 2000; |
|
4 | |||
5 | 6 | export const useStateFlagTimeout = (setTimeout, clearTimeout) => (initialValue = false, delay = DEFAULT_DELAY) => { |
|
6 | const [ flag, setFlag ] = useState(initialValue); |
||
7 | const timeout = useRef(undefined); |
||
8 | const callback = () => { |
||
9 | setFlag(!initialValue); |
||
10 | |||
11 | 2 | if (timeout.current) { |
|
12 | clearTimeout(timeout.current); |
||
13 | } |
||
14 | |||
15 | timeout.current = setTimeout(() => setFlag(initialValue), delay); |
||
16 | }; |
||
17 | |||
18 | return [ flag, callback ]; |
||
19 | }; |
||
20 | |||
21 | // Return [ flag, toggle, enable, disable ] |
||
22 | 6 | export const useToggle = (initialValue = false) => { |
|
23 | 149 | const [ flag, setFlag ] = useState(initialValue); |
|
24 | |||
25 | 149 | return [ flag, () => setFlag(!flag), () => setFlag(true), () => setFlag(false) ]; |
|
26 | }; |
||
27 |