UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

34 lines (33 loc) 1.18 kB
"use client"; import { useCallback, useEffect, useReducer, useRef } from 'react'; export function useSegmentedFieldValues({ inputs, defaultValues }) { const valuesRef = useRef(defaultValues ? defaultValues : createDefaultValues(inputs)); const [, forceUpdate] = useReducer(() => ({}), {}); const previousDefaultValuesRef = useRef(defaultValues); useEffect(() => { if (defaultValues && defaultValues !== previousDefaultValuesRef.current) { const previousValues = previousDefaultValuesRef.current; const hasChanges = !previousValues || Object.keys(defaultValues).some(key => previousValues[key] !== defaultValues[key]); if (hasChanges) { valuesRef.current = defaultValues; forceUpdate(); } previousDefaultValuesRef.current = defaultValues; } }, [defaultValues]); const onChange = useCallback(updatedValues => { valuesRef.current = updatedValues; forceUpdate(); }, []); return [valuesRef.current, onChange]; } function createDefaultValues(inputs) { return inputs.reduce((values, input) => { values[input.id] = ''; return values; }, {}); } //# sourceMappingURL=useSegmentedFieldValues.js.map