UNPKG

@wordpress/components

Version:
48 lines (42 loc) 1.13 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useControlledValue = useControlledValue; var _element = require("@wordpress/element"); /** * WordPress dependencies */ /** * Simplified and improved implementation of useControlledState. * * @param props * @param props.defaultValue * @param props.value * @param props.onChange * @return The controlled value and the value setter. */ function useControlledValue(_ref) { let { defaultValue, onChange, value: valueProp } = _ref; const hasValue = typeof valueProp !== 'undefined'; const initialValue = hasValue ? valueProp : defaultValue; const [state, setState] = (0, _element.useState)(initialValue); const value = hasValue ? valueProp : state; let setValue; if (hasValue && typeof onChange === 'function') { setValue = onChange; } else if (!hasValue && typeof onChange === 'function') { setValue = nextValue => { onChange(nextValue); setState(nextValue); }; } else { setValue = setState; } return [value, setValue]; } //# sourceMappingURL=use-controlled-value.js.map