import dynamicValue from './dynamicValue'; import { DynamicValue } from './utilityTypes'; export function createTinyState( initialValue: SetValueInput, ): TinyState { let value: S; resetValue(); return () => [value, setValue, resetValue]; function setValue(nextValue: SetValueInput) { value = dynamicValue(nextValue, value); } function resetValue() { setValue(dynamicValue(initialValue)); } } export type TinyState = () => [ value: S, setValue: (next: SetValueInput) => void, resetValue: () => void, ]; type SetValueInput = DynamicValue;