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
			| 
								 
											3 years ago
										 
									 | 
							
								'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;
							 |