UNPKG

@airplane/views

Version:

A React library for building Airplane views. Views components are optimized in style and functionality to produce internal apps that are easy to build and maintain.

41 lines (40 loc) 1.33 kB
import { useCallback, useMemo } from "react"; import { ComponentType, useSyncComponentState } from "../../context/context.js"; import { useFormInputs, adaptInputsToValues } from "./useFormInputs.js"; const useFormState = (id) => { const inputData = useFormInputs(); const reset = useCallback(() => { const inputResets = Object.values(inputData).map((input) => input.state.reset); for (const inputReset of inputResets) { inputReset(); } }, [inputData]); const values = useMemo(() => { return adaptInputsToValues(inputData); }, [inputData]); const setValues = useCallback((values2) => { Object.entries(values2).forEach(([id2, value]) => { var _a; const inputState = (_a = inputData[id2]) == null ? void 0 : _a.state; if (inputState) { inputState.setValue(value); } }); }, [inputData]); const state = useMemo(() => ({ id, /** The values of the form inputs as a map of input id => value. */ values, /** Sets the values of the form inputs from a map of input id => value. */ setValues, /** Resets each of the form inputs. */ reset, componentType: ComponentType.Form }), [id, values, reset, setValues]); useSyncComponentState(id, state); return state; }; export { useFormState }; //# sourceMappingURL=useFormState.js.map