UNPKG

remix-validated-form

Version:

Form component and utils for easy form validation in remix

33 lines (32 loc) 944 B
import { useEffect, useLayoutEffect, useRef } from "react"; import * as R from "remeda"; export const omit = (obj, ...keys) => { const result = { ...obj }; for (const key of keys) { delete result[key]; } return result; }; export const mergeRefs = (refs) => { return (value) => { refs.filter(Boolean).forEach((ref) => { if (typeof ref === "function") { ref(value); } else if (ref != null) { ref.current = value; } }); }; }; export const useIsomorphicLayoutEffect = typeof window !== "undefined" ? useLayoutEffect : useEffect; export const useDeepEqualsMemo = (item) => { const ref = useRef(item); const areEqual = ref.current === item || R.equals(ref.current, item); useEffect(() => { if (!areEqual) { ref.current = item; } }); return areEqual ? ref.current : item; };