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.

42 lines (41 loc) 1.27 kB
import { shallowEqual } from "@mantine/hooks"; import { useRef, useContext, useMemo } from "react"; import { ComponentStateContext } from "../../context/context.js"; import { FormContext } from "./FormProvider.js"; const useFormInputs = () => { const memoizedInputComponents = useRef([]); const { formTypeByID } = useContext(FormContext); const componentState = useContext(ComponentStateContext); let inputComponents = Object.keys(formTypeByID).map((id) => componentState.components[id]); if (shallowEqual(inputComponents, memoizedInputComponents.current)) { inputComponents = memoizedInputComponents.current; } memoizedInputComponents.current = inputComponents; return useMemo(() => { const formInputs = {}; for (const component of inputComponents) { formInputs[component.id] = { state: component, type: formTypeByID[component.id] }; } return formInputs; }, [formTypeByID, inputComponents]); }; const adaptInputsToValues = (formInputs) => { const values = {}; for (const [id, s] of Object.entries(formInputs)) { const { state } = s; values[id] = state.value; } return values; }; export { adaptInputsToValues, useFormInputs }; //# sourceMappingURL=useFormInputs.js.map