UNPKG

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