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.
		
		
		
		
		
			
		
			
				
					
					
						
							326 lines
						
					
					
						
							11 KiB
						
					
					
				
			
		
		
	
	
							326 lines
						
					
					
						
							11 KiB
						
					
					
				| 'use strict';
 | |
| 
 | |
| Object.defineProperty(exports, '__esModule', { value: true });
 | |
| 
 | |
| var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
 | |
| var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
 | |
| var memoizeOne = require('memoize-one');
 | |
| var index$1 = require('../../dist/index-5b950e59.cjs.dev.js');
 | |
| var React = require('react');
 | |
| var _extends = require('@babel/runtime/helpers/extends');
 | |
| var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
 | |
| var reactTransitionGroup = require('react-transition-group');
 | |
| require('@emotion/react');
 | |
| require('@babel/runtime/helpers/typeof');
 | |
| require('@babel/runtime/helpers/taggedTemplateLiteral');
 | |
| require('@babel/runtime/helpers/defineProperty');
 | |
| require('react-dom');
 | |
| require('@floating-ui/dom');
 | |
| require('use-isomorphic-layout-effect');
 | |
| 
 | |
| function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
 | |
| 
 | |
| function _interopNamespace(e) {
 | |
|   if (e && e.__esModule) return e;
 | |
|   var n = Object.create(null);
 | |
|   if (e) {
 | |
|     Object.keys(e).forEach(function (k) {
 | |
|       if (k !== 'default') {
 | |
|         var d = Object.getOwnPropertyDescriptor(e, k);
 | |
|         Object.defineProperty(n, k, d.get ? d : {
 | |
|           enumerable: true,
 | |
|           get: function () {
 | |
|             return e[k];
 | |
|           }
 | |
|         });
 | |
|       }
 | |
|     });
 | |
|   }
 | |
|   n['default'] = e;
 | |
|   return Object.freeze(n);
 | |
| }
 | |
| 
 | |
| var memoizeOne__default = /*#__PURE__*/_interopDefault(memoizeOne);
 | |
| var React__namespace = /*#__PURE__*/_interopNamespace(React);
 | |
| 
 | |
| var _excluded$4 = ["in", "onExited", "appear", "enter", "exit"];
 | |
| // strip transition props off before spreading onto select component
 | |
| var AnimatedInput = function AnimatedInput(WrappedComponent) {
 | |
|   return function (_ref) {
 | |
|     _ref.in;
 | |
|       _ref.onExited;
 | |
|       _ref.appear;
 | |
|       _ref.enter;
 | |
|       _ref.exit;
 | |
|       var props = _objectWithoutProperties(_ref, _excluded$4);
 | |
|     return /*#__PURE__*/React__namespace.createElement(WrappedComponent, props);
 | |
|   };
 | |
| };
 | |
| 
 | |
| var _excluded$3 = ["component", "duration", "in", "onExited"];
 | |
| var Fade = function Fade(_ref) {
 | |
|   var Tag = _ref.component,
 | |
|     _ref$duration = _ref.duration,
 | |
|     duration = _ref$duration === void 0 ? 1 : _ref$duration,
 | |
|     inProp = _ref.in;
 | |
|     _ref.onExited;
 | |
|     var props = _objectWithoutProperties(_ref, _excluded$3);
 | |
|   var nodeRef = React.useRef(null);
 | |
|   var transition = {
 | |
|     entering: {
 | |
|       opacity: 0
 | |
|     },
 | |
|     entered: {
 | |
|       opacity: 1,
 | |
|       transition: "opacity ".concat(duration, "ms")
 | |
|     },
 | |
|     exiting: {
 | |
|       opacity: 0
 | |
|     },
 | |
|     exited: {
 | |
|       opacity: 0
 | |
|     }
 | |
|   };
 | |
|   return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.Transition, {
 | |
|     mountOnEnter: true,
 | |
|     unmountOnExit: true,
 | |
|     in: inProp,
 | |
|     timeout: duration,
 | |
|     nodeRef: nodeRef
 | |
|   }, function (state) {
 | |
|     var innerProps = {
 | |
|       style: _objectSpread({}, transition[state]),
 | |
|       ref: nodeRef
 | |
|     };
 | |
|     return /*#__PURE__*/React__namespace.createElement(Tag, _extends({
 | |
|       innerProps: innerProps
 | |
|     }, props));
 | |
|   });
 | |
| };
 | |
| 
 | |
| // ==============================
 | |
| // Collapse Transition
 | |
| // ==============================
 | |
| 
 | |
| var collapseDuration = 260;
 | |
| // wrap each MultiValue with a collapse transition; decreases width until
 | |
| // finally removing from DOM
 | |
| var Collapse = function Collapse(_ref2) {
 | |
|   var children = _ref2.children,
 | |
|     _in = _ref2.in,
 | |
|     _onExited = _ref2.onExited;
 | |
|   var ref = React.useRef(null);
 | |
|   var _useState = React.useState('auto'),
 | |
|     _useState2 = _slicedToArray(_useState, 2),
 | |
|     width = _useState2[0],
 | |
|     setWidth = _useState2[1];
 | |
|   React.useEffect(function () {
 | |
|     var el = ref.current;
 | |
|     if (!el) return;
 | |
| 
 | |
|     /*
 | |
|       Here we're invoking requestAnimationFrame with a callback invoking our
 | |
|       call to getBoundingClientRect and setState in order to resolve an edge case
 | |
|       around portalling. Certain portalling solutions briefly remove children from the DOM
 | |
|       before appending them to the target node. This is to avoid us trying to call getBoundingClientrect
 | |
|       while the Select component is in this state.
 | |
|     */
 | |
|     // cannot use `offsetWidth` because it is rounded
 | |
|     var rafId = window.requestAnimationFrame(function () {
 | |
|       return setWidth(el.getBoundingClientRect().width);
 | |
|     });
 | |
|     return function () {
 | |
|       return window.cancelAnimationFrame(rafId);
 | |
|     };
 | |
|   }, []);
 | |
|   var getStyleFromStatus = function getStyleFromStatus(status) {
 | |
|     switch (status) {
 | |
|       default:
 | |
|         return {
 | |
|           width: width
 | |
|         };
 | |
|       case 'exiting':
 | |
|         return {
 | |
|           width: 0,
 | |
|           transition: "width ".concat(collapseDuration, "ms ease-out")
 | |
|         };
 | |
|       case 'exited':
 | |
|         return {
 | |
|           width: 0
 | |
|         };
 | |
|     }
 | |
|   };
 | |
|   return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.Transition, {
 | |
|     enter: false,
 | |
|     mountOnEnter: true,
 | |
|     unmountOnExit: true,
 | |
|     in: _in,
 | |
|     onExited: function onExited() {
 | |
|       var el = ref.current;
 | |
|       if (!el) return;
 | |
|       _onExited === null || _onExited === void 0 ? void 0 : _onExited(el);
 | |
|     },
 | |
|     timeout: collapseDuration,
 | |
|     nodeRef: ref
 | |
|   }, function (status) {
 | |
|     return /*#__PURE__*/React__namespace.createElement("div", {
 | |
|       ref: ref,
 | |
|       style: _objectSpread({
 | |
|         overflow: 'hidden',
 | |
|         whiteSpace: 'nowrap'
 | |
|       }, getStyleFromStatus(status))
 | |
|     }, children);
 | |
|   });
 | |
| };
 | |
| 
 | |
| var _excluded$2 = ["in", "onExited"];
 | |
| // strip transition props off before spreading onto actual component
 | |
| 
 | |
| var AnimatedMultiValue = function AnimatedMultiValue(WrappedComponent) {
 | |
|   return function (_ref) {
 | |
|     var inProp = _ref.in,
 | |
|       onExited = _ref.onExited,
 | |
|       props = _objectWithoutProperties(_ref, _excluded$2);
 | |
|     return /*#__PURE__*/React__namespace.createElement(Collapse, {
 | |
|       in: inProp,
 | |
|       onExited: onExited
 | |
|     }, /*#__PURE__*/React__namespace.createElement(WrappedComponent, _extends({
 | |
|       cropWithEllipsis: inProp
 | |
|     }, props)));
 | |
|   };
 | |
| };
 | |
| 
 | |
| // fade in when last multi-value removed, otherwise instant
 | |
| var AnimatedPlaceholder = function AnimatedPlaceholder(WrappedComponent) {
 | |
|   return function (props) {
 | |
|     return /*#__PURE__*/React__namespace.createElement(Fade, _extends({
 | |
|       component: WrappedComponent,
 | |
|       duration: props.isMulti ? collapseDuration : 1
 | |
|     }, props));
 | |
|   };
 | |
| };
 | |
| 
 | |
| // instant fade; all transition-group children must be transitions
 | |
| 
 | |
| var AnimatedSingleValue = function AnimatedSingleValue(WrappedComponent) {
 | |
|   return function (props) {
 | |
|     return /*#__PURE__*/React__namespace.createElement(Fade, _extends({
 | |
|       component: WrappedComponent
 | |
|     }, props));
 | |
|   };
 | |
| };
 | |
| 
 | |
| var _excluded$1 = ["component"],
 | |
|   _excluded2 = ["children"];
 | |
| // make ValueContainer a transition group
 | |
| var AnimatedValueContainer = function AnimatedValueContainer(WrappedComponent) {
 | |
|   return function (props) {
 | |
|     return props.isMulti ? /*#__PURE__*/React__namespace.createElement(IsMultiValueContainer, _extends({
 | |
|       component: WrappedComponent
 | |
|     }, props)) : /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.TransitionGroup, _extends({
 | |
|       component: WrappedComponent
 | |
|     }, props));
 | |
|   };
 | |
| };
 | |
| var IsMultiValueContainer = function IsMultiValueContainer(_ref) {
 | |
|   var component = _ref.component,
 | |
|     restProps = _objectWithoutProperties(_ref, _excluded$1);
 | |
|   var multiProps = useIsMultiValueContainer(restProps);
 | |
|   return /*#__PURE__*/React__namespace.createElement(reactTransitionGroup.TransitionGroup, _extends({
 | |
|     component: component
 | |
|   }, multiProps));
 | |
| };
 | |
| var useIsMultiValueContainer = function useIsMultiValueContainer(_ref2) {
 | |
|   var children = _ref2.children,
 | |
|     props = _objectWithoutProperties(_ref2, _excluded2);
 | |
|   var isMulti = props.isMulti,
 | |
|     hasValue = props.hasValue,
 | |
|     innerProps = props.innerProps,
 | |
|     _props$selectProps = props.selectProps,
 | |
|     components = _props$selectProps.components,
 | |
|     controlShouldRenderValue = _props$selectProps.controlShouldRenderValue;
 | |
|   var _useState = React.useState(isMulti && controlShouldRenderValue && hasValue),
 | |
|     _useState2 = _slicedToArray(_useState, 2),
 | |
|     cssDisplayFlex = _useState2[0],
 | |
|     setCssDisplayFlex = _useState2[1];
 | |
|   var _useState3 = React.useState(false),
 | |
|     _useState4 = _slicedToArray(_useState3, 2),
 | |
|     removingValue = _useState4[0],
 | |
|     setRemovingValue = _useState4[1];
 | |
|   React.useEffect(function () {
 | |
|     if (hasValue && !cssDisplayFlex) {
 | |
|       setCssDisplayFlex(true);
 | |
|     }
 | |
|   }, [hasValue, cssDisplayFlex]);
 | |
|   React.useEffect(function () {
 | |
|     if (removingValue && !hasValue && cssDisplayFlex) {
 | |
|       setCssDisplayFlex(false);
 | |
|     }
 | |
|     setRemovingValue(false);
 | |
|   }, [removingValue, hasValue, cssDisplayFlex]);
 | |
|   var onExited = function onExited() {
 | |
|     return setRemovingValue(true);
 | |
|   };
 | |
|   var childMapper = function childMapper(child) {
 | |
|     if (isMulti && /*#__PURE__*/React__namespace.isValidElement(child)) {
 | |
|       // Add onExited callback to MultiValues
 | |
|       if (child.type === components.MultiValue) {
 | |
|         return /*#__PURE__*/React__namespace.cloneElement(child, {
 | |
|           onExited: onExited
 | |
|         });
 | |
|       }
 | |
|       // While container flexed, Input cursor is shown after Placeholder text,
 | |
|       // so remove Placeholder until display is set back to grid
 | |
|       if (child.type === components.Placeholder && cssDisplayFlex) {
 | |
|         return null;
 | |
|       }
 | |
|     }
 | |
|     return child;
 | |
|   };
 | |
|   var newInnerProps = _objectSpread(_objectSpread({}, innerProps), {}, {
 | |
|     style: _objectSpread(_objectSpread({}, innerProps === null || innerProps === void 0 ? void 0 : innerProps.style), {}, {
 | |
|       display: isMulti && hasValue || cssDisplayFlex ? 'flex' : 'grid'
 | |
|     })
 | |
|   });
 | |
|   var newProps = _objectSpread(_objectSpread({}, props), {}, {
 | |
|     innerProps: newInnerProps,
 | |
|     children: React__namespace.Children.toArray(children).map(childMapper)
 | |
|   });
 | |
|   return newProps;
 | |
| };
 | |
| 
 | |
| var _excluded = ["Input", "MultiValue", "Placeholder", "SingleValue", "ValueContainer"];
 | |
| var makeAnimated = function makeAnimated() {
 | |
|   var externalComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
 | |
|   var components = index$1.defaultComponents({
 | |
|     components: externalComponents
 | |
|   });
 | |
|   var Input = components.Input,
 | |
|     MultiValue = components.MultiValue,
 | |
|     Placeholder = components.Placeholder,
 | |
|     SingleValue = components.SingleValue,
 | |
|     ValueContainer = components.ValueContainer,
 | |
|     rest = _objectWithoutProperties(components, _excluded);
 | |
|   return _objectSpread({
 | |
|     Input: AnimatedInput(Input),
 | |
|     MultiValue: AnimatedMultiValue(MultiValue),
 | |
|     Placeholder: AnimatedPlaceholder(Placeholder),
 | |
|     SingleValue: AnimatedSingleValue(SingleValue),
 | |
|     ValueContainer: AnimatedValueContainer(ValueContainer)
 | |
|   }, rest);
 | |
| };
 | |
| var AnimatedComponents = makeAnimated();
 | |
| var Input = AnimatedComponents.Input;
 | |
| var MultiValue = AnimatedComponents.MultiValue;
 | |
| var Placeholder = AnimatedComponents.Placeholder;
 | |
| var SingleValue = AnimatedComponents.SingleValue;
 | |
| var ValueContainer = AnimatedComponents.ValueContainer;
 | |
| var index = memoizeOne__default['default'](makeAnimated);
 | |
| 
 | |
| exports.Input = Input;
 | |
| exports.MultiValue = MultiValue;
 | |
| exports.Placeholder = Placeholder;
 | |
| exports.SingleValue = SingleValue;
 | |
| exports.ValueContainer = ValueContainer;
 | |
| exports.default = index;
 |