You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							76 lines
						
					
					
						
							3.2 KiB
						
					
					
				
			
		
		
	
	
							76 lines
						
					
					
						
							3.2 KiB
						
					
					
				| 'use strict';
 | |
| 
 | |
| var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
 | |
| var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
 | |
| var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
 | |
| var React = require('react');
 | |
| 
 | |
| var _excluded = ["defaultInputValue", "defaultMenuIsOpen", "defaultValue", "inputValue", "menuIsOpen", "onChange", "onInputChange", "onMenuClose", "onMenuOpen", "value"];
 | |
| function useStateManager(_ref) {
 | |
|   var _ref$defaultInputValu = _ref.defaultInputValue,
 | |
|     defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,
 | |
|     _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,
 | |
|     defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,
 | |
|     _ref$defaultValue = _ref.defaultValue,
 | |
|     defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,
 | |
|     propsInputValue = _ref.inputValue,
 | |
|     propsMenuIsOpen = _ref.menuIsOpen,
 | |
|     propsOnChange = _ref.onChange,
 | |
|     propsOnInputChange = _ref.onInputChange,
 | |
|     propsOnMenuClose = _ref.onMenuClose,
 | |
|     propsOnMenuOpen = _ref.onMenuOpen,
 | |
|     propsValue = _ref.value,
 | |
|     restSelectProps = _objectWithoutProperties(_ref, _excluded);
 | |
|   var _useState = React.useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),
 | |
|     _useState2 = _slicedToArray(_useState, 2),
 | |
|     stateInputValue = _useState2[0],
 | |
|     setStateInputValue = _useState2[1];
 | |
|   var _useState3 = React.useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),
 | |
|     _useState4 = _slicedToArray(_useState3, 2),
 | |
|     stateMenuIsOpen = _useState4[0],
 | |
|     setStateMenuIsOpen = _useState4[1];
 | |
|   var _useState5 = React.useState(propsValue !== undefined ? propsValue : defaultValue),
 | |
|     _useState6 = _slicedToArray(_useState5, 2),
 | |
|     stateValue = _useState6[0],
 | |
|     setStateValue = _useState6[1];
 | |
|   var onChange = React.useCallback(function (value, actionMeta) {
 | |
|     if (typeof propsOnChange === 'function') {
 | |
|       propsOnChange(value, actionMeta);
 | |
|     }
 | |
|     setStateValue(value);
 | |
|   }, [propsOnChange]);
 | |
|   var onInputChange = React.useCallback(function (value, actionMeta) {
 | |
|     var newValue;
 | |
|     if (typeof propsOnInputChange === 'function') {
 | |
|       newValue = propsOnInputChange(value, actionMeta);
 | |
|     }
 | |
|     setStateInputValue(newValue !== undefined ? newValue : value);
 | |
|   }, [propsOnInputChange]);
 | |
|   var onMenuOpen = React.useCallback(function () {
 | |
|     if (typeof propsOnMenuOpen === 'function') {
 | |
|       propsOnMenuOpen();
 | |
|     }
 | |
|     setStateMenuIsOpen(true);
 | |
|   }, [propsOnMenuOpen]);
 | |
|   var onMenuClose = React.useCallback(function () {
 | |
|     if (typeof propsOnMenuClose === 'function') {
 | |
|       propsOnMenuClose();
 | |
|     }
 | |
|     setStateMenuIsOpen(false);
 | |
|   }, [propsOnMenuClose]);
 | |
|   var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;
 | |
|   var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;
 | |
|   var value = propsValue !== undefined ? propsValue : stateValue;
 | |
|   return _objectSpread(_objectSpread({}, restSelectProps), {}, {
 | |
|     inputValue: inputValue,
 | |
|     menuIsOpen: menuIsOpen,
 | |
|     onChange: onChange,
 | |
|     onInputChange: onInputChange,
 | |
|     onMenuClose: onMenuClose,
 | |
|     onMenuOpen: onMenuOpen,
 | |
|     value: value
 | |
|   });
 | |
| }
 | |
| 
 | |
| exports.useStateManager = useStateManager;
 |