UNPKG

@dnb/eufemia

Version:

DNB Eufemia Design System UI Library

39 lines (38 loc) 1.34 kB
"use strict"; "use client"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSegmentedFieldValues = useSegmentedFieldValues; var _react = require("react"); function useSegmentedFieldValues({ inputs, defaultValues }) { const valuesRef = (0, _react.useRef)(defaultValues ? defaultValues : createDefaultValues(inputs)); const [, forceUpdate] = (0, _react.useReducer)(() => ({}), {}); const previousDefaultValuesRef = (0, _react.useRef)(defaultValues); (0, _react.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 = (0, _react.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