@dnb/eufemia
Version:
DNB Eufemia Design System UI Library
39 lines (38 loc) • 1.34 kB
JavaScript
;
"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