forked from vitest-dev/vitest
/
index.ts
33 lines (30 loc) · 896 Bytes
/
index.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import type { Ref } from 'vue-demi'
import { isRef, ref } from 'vue-demi'
/**
* A boolean ref with a toggler
*
* @see https://vueuse.org/useToggle
* @param [initialValue=false]
*/
export function useToggle(value: Ref<boolean>): (value?: boolean) => boolean
export function useToggle(initialValue?: boolean): [Ref<boolean>, (value?: boolean) => boolean]
export function useToggle(initialValue: boolean | Ref<boolean> = false) {
if (isRef(initialValue)) {
return (value?: boolean) => {
initialValue.value = typeof value === 'boolean'
? value
: !initialValue.value
return initialValue.value
}
}
else {
const boolean = ref(initialValue)
const toggle = (value?: boolean) => {
boolean.value = typeof value === 'boolean'
? value
: !boolean.value
return boolean.value
}
return [boolean, toggle] as const
}
}