UNPKG

3.25 kBJavaScriptView Raw
1import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';
2import _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';
3import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
4import { useState, useCallback } from 'react';
5
6var _excluded = ["defaultInputValue", "defaultMenuIsOpen", "defaultValue", "inputValue", "menuIsOpen", "onChange", "onInputChange", "onMenuClose", "onMenuOpen", "value"];
7function useStateManager(_ref) {
8 var _ref$defaultInputValu = _ref.defaultInputValue,
9 defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,
10 _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,
11 defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,
12 _ref$defaultValue = _ref.defaultValue,
13 defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,
14 propsInputValue = _ref.inputValue,
15 propsMenuIsOpen = _ref.menuIsOpen,
16 propsOnChange = _ref.onChange,
17 propsOnInputChange = _ref.onInputChange,
18 propsOnMenuClose = _ref.onMenuClose,
19 propsOnMenuOpen = _ref.onMenuOpen,
20 propsValue = _ref.value,
21 restSelectProps = _objectWithoutProperties(_ref, _excluded);
22 var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),
23 _useState2 = _slicedToArray(_useState, 2),
24 stateInputValue = _useState2[0],
25 setStateInputValue = _useState2[1];
26 var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),
27 _useState4 = _slicedToArray(_useState3, 2),
28 stateMenuIsOpen = _useState4[0],
29 setStateMenuIsOpen = _useState4[1];
30 var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),
31 _useState6 = _slicedToArray(_useState5, 2),
32 stateValue = _useState6[0],
33 setStateValue = _useState6[1];
34 var onChange = useCallback(function (value, actionMeta) {
35 if (typeof propsOnChange === 'function') {
36 propsOnChange(value, actionMeta);
37 }
38 setStateValue(value);
39 }, [propsOnChange]);
40 var onInputChange = useCallback(function (value, actionMeta) {
41 var newValue;
42 if (typeof propsOnInputChange === 'function') {
43 newValue = propsOnInputChange(value, actionMeta);
44 }
45 setStateInputValue(newValue !== undefined ? newValue : value);
46 }, [propsOnInputChange]);
47 var onMenuOpen = useCallback(function () {
48 if (typeof propsOnMenuOpen === 'function') {
49 propsOnMenuOpen();
50 }
51 setStateMenuIsOpen(true);
52 }, [propsOnMenuOpen]);
53 var onMenuClose = useCallback(function () {
54 if (typeof propsOnMenuClose === 'function') {
55 propsOnMenuClose();
56 }
57 setStateMenuIsOpen(false);
58 }, [propsOnMenuClose]);
59 var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;
60 var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;
61 var value = propsValue !== undefined ? propsValue : stateValue;
62 return _objectSpread(_objectSpread({}, restSelectProps), {}, {
63 inputValue: inputValue,
64 menuIsOpen: menuIsOpen,
65 onChange: onChange,
66 onInputChange: onInputChange,
67 onMenuClose: onMenuClose,
68 onMenuOpen: onMenuOpen,
69 value: value
70 });
71}
72
73export { useStateManager as u };