import {computed, ComputedRef, Ref, UnwrapRef, WritableComputedRef} from "vue"; import {ComputedGetter, ComputedSetter, WritableComputedOptions} from "@vue/reactivity"; import {useState} from "./index"; import {SetStateAction} from "./misc/types"; import {IHookStateInitAction} from "./misc/hookState"; export type ToComputedRef = [T] extends [ComputedRef] ? T : ComputedRef; export default function useComputedState(value: T): [ToComputedRef, (prevState: SetStateAction) => void] export default function useComputedState(value: IHookStateInitAction): [ToComputedRef, (prevState: SetStateAction) => void] export default function useComputedState(value: T): [ComputedRef>, (prevState: SetStateAction) => void] export default function useComputedState(): [ComputedRef, (prevState: SetStateAction) => void] // for internal export default function useComputedState(initialState?: unknown) { const [state, setState] = useState(initialState); return [ computed(() => { return state.value; }), setState ]; }