1 | 'use strict';
|
2 |
|
3 | var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
|
4 | var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
|
5 | var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
|
6 | var React = require('react');
|
7 |
|
8 | var _excluded = ["defaultInputValue", "defaultMenuIsOpen", "defaultValue", "inputValue", "menuIsOpen", "onChange", "onInputChange", "onMenuClose", "onMenuOpen", "value"];
|
9 | function 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 |
|
75 | exports.useStateManager = useStateManager;
|