downshift
Version:
A set of primitives to build simple, flexible, WAI-ARIA compliant React autocomplete components
3 lines (2 loc) • 24.1 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t(e.Downshift={},e.React)}(this,function(e,t){"use strict";var n="default"in t?t.default:t;function o(e,t){if(null==e)return{};var n,o,r={},i=Object.keys(e);for(o=0;o<i.length;o++)n=i[o],t.indexOf(n)>=0||(r[n]=e[n]);return r}function r(){return(r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function s(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}function u(e,t){return e(t={exports:{}},t.exports),t.exports}var l=u(function(e,t){Object.defineProperty(t,"__esModule",{value:!0});var n="function"==typeof Symbol&&Symbol.for,o=n?Symbol.for("react.element"):60103,r=n?Symbol.for("react.portal"):60106,i=n?Symbol.for("react.fragment"):60107,s=n?Symbol.for("react.strict_mode"):60108,u=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,a=n?Symbol.for("react.context"):60110,p=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,c=n?Symbol.for("react.forward_ref"):60112,h=n?Symbol.for("react.suspense"):60113,f=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116;function m(e){if("object"==typeof e&&null!==e){var t=e.$$typeof;switch(t){case o:switch(e=e.type){case p:case d:case i:case u:case s:case h:return e;default:switch(e=e&&e.$$typeof){case a:case c:case l:return e;default:return t}}case g:case f:case r:return t}}}function v(e){return m(e)===d}t.typeOf=m,t.AsyncMode=p,t.ConcurrentMode=d,t.ContextConsumer=a,t.ContextProvider=l,t.Element=o,t.ForwardRef=c,t.Fragment=i,t.Lazy=g,t.Memo=f,t.Portal=r,t.Profiler=u,t.StrictMode=s,t.Suspense=h,t.isValidElementType=function(e){return"string"==typeof e||"function"==typeof e||e===i||e===d||e===u||e===s||e===h||"object"==typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===f||e.$$typeof===l||e.$$typeof===a||e.$$typeof===c)},t.isAsyncMode=function(e){return v(e)||m(e)===p},t.isConcurrentMode=v,t.isContextConsumer=function(e){return m(e)===a},t.isContextProvider=function(e){return m(e)===l},t.isElement=function(e){return"object"==typeof e&&null!==e&&e.$$typeof===o},t.isForwardRef=function(e){return m(e)===c},t.isFragment=function(e){return m(e)===i},t.isLazy=function(e){return m(e)===g},t.isMemo=function(e){return m(e)===f},t.isPortal=function(e){return m(e)===r},t.isProfiler=function(e){return m(e)===u},t.isStrictMode=function(e){return m(e)===s},t.isSuspense=function(e){return m(e)===h}});s(l);l.typeOf,l.AsyncMode,l.ConcurrentMode,l.ContextConsumer,l.ContextProvider,l.Element,l.ForwardRef,l.Fragment,l.Lazy,l.Memo,l.Portal,l.Profiler,l.StrictMode,l.Suspense,l.isValidElementType,l.isAsyncMode,l.isConcurrentMode,l.isContextConsumer,l.isContextProvider,l.isElement,l.isForwardRef,l.isFragment,l.isLazy,l.isMemo,l.isPortal,l.isProfiler,l.isStrictMode,l.isSuspense;var a=u(function(){});s(a);a.typeOf,a.AsyncMode,a.ConcurrentMode,a.ContextConsumer,a.ContextProvider,a.Element,a.ForwardRef,a.Fragment,a.Lazy,a.Memo,a.Portal,a.Profiler,a.StrictMode,a.Suspense,a.isValidElementType,a.isAsyncMode,a.isConcurrentMode,a.isContextConsumer,a.isContextProvider,a.isElement,a.isForwardRef,a.isFragment,a.isLazy,a.isMemo,a.isPortal,a.isProfiler,a.isStrictMode,a.isSuspense,u(function(e){e.exports=l}).isForwardRef;var p=Object.getOwnPropertySymbols,d=Object.prototype.hasOwnProperty,c=Object.prototype.propertyIsEnumerable;(function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return t[e]}).join(""))return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(e){o[e]=e}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},o)).join("")}catch(e){return!1}})()&&Object.assign;var h="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";Function.call.bind(Object.prototype.hasOwnProperty);function f(){}function g(){}g.resetWarningCache=f;u(function(e){e.exports=function(){function e(e,t,n,o,r,i){if(i!==h){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:g,resetWarningCache:f};return n.PropTypes=n,n}()});var m="undefined"==typeof document?null:document.getElementById("a11y-status-message"),v=[];function y(e){var t=v[v.length-1]===e;v=t?[].concat(v,[e]):[e];for(var n=function(){if(m)return m;return(m=document.createElement("div")).setAttribute("id","a11y-status-message"),m.setAttribute("role","status"),m.setAttribute("aria-live","polite"),m.setAttribute("aria-relevant","additions text"),Object.assign(m.style,{border:"0",clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:"0",position:"absolute",width:"1px"}),document.body.appendChild(m),m}();n.lastChild;)n.removeChild(n.firstChild);v.filter(Boolean).forEach(function(e,t){n.appendChild(function(e,t){var n=t===v.length-1?"block":"none",o=document.createElement("div");return o.style.display=n,o.textContent=e,o}(e,t))})}var I=0,S=2,b=3,w=4,C=5,x=6,O=7,P=8,M=9,H=10,E=11,D=12,T=13,R=14,k=Object.freeze({unknown:I,mouseUp:1,itemMouseEnter:S,keyDownArrowUp:b,keyDownArrowDown:w,keyDownEscape:C,keyDownEnter:x,keyDownHome:O,keyDownEnd:P,clickItem:M,blurInput:H,changeInput:E,keyDownSpaceButton:D,clickButton:T,blurButton:R,controlledPropUpdatedSelectedItem:15,touchEnd:16});function A(e){return null!=e&&"object"==typeof e&&1===e.nodeType}function j(e,t){return(!t||"hidden"!==e)&&("visible"!==e&&"clip"!==e)}function V(e,t){if(e.clientHeight<e.scrollHeight||e.clientWidth<e.scrollWidth){var n=getComputedStyle(e,null);return j(n.overflowY,t)||j(n.overflowX,t)}return!1}function K(e,t,n,o,r,i,s,u){return i<e&&s>t||i>e&&s<t?0:i<=e&&u<=n||s>=t&&u>=n?i-e-o:s>t&&u<n||i<e&&u>n?s-t+r:0}var _=function(e,t){var n=t.scrollMode,o=t.block,r=t.inline,i=t.boundary,s=t.skipOverflowHiddenElements,u="function"==typeof i?i:function(e){return e!==i};if(!A(e))throw new TypeError("Invalid target");for(var l=document.scrollingElement||document.documentElement,a=[],p=e;A(p)&&u(p);){if((p=p.parentNode)===l){a.push(p);break}p===document.body&&V(p)&&!V(document.documentElement)||V(p,s)&&a.push(p)}for(var d=window.visualViewport?visualViewport.width:innerWidth,c=window.visualViewport?visualViewport.height:innerHeight,h=window.scrollX||pageXOffset,f=window.scrollY||pageYOffset,g=e.getBoundingClientRect(),m=g.height,v=g.width,y=g.top,I=g.right,S=g.bottom,b=g.left,w="start"===o||"nearest"===o?y:"end"===o?S:y+m/2,C="center"===r?b+v/2:"end"===r?I:b,x=[],O=0;O<a.length;O++){var P=a[O],M=P.getBoundingClientRect(),H=M.height,E=M.width,D=M.top,T=M.right,R=M.bottom,k=M.left;if("if-needed"===n&&y>=0&&b>=0&&S<=c&&I<=d&&y>=D&&S<=R&&b>=k&&I<=T)return x;var j=getComputedStyle(P),_=parseInt(j.borderLeftWidth,10),L=parseInt(j.borderTopWidth,10),B=parseInt(j.borderRightWidth,10),F=parseInt(j.borderBottomWidth,10),$=0,N=0,U="offsetWidth"in P?P.offsetWidth-P.clientWidth-_-B:0,W="offsetHeight"in P?P.offsetHeight-P.clientHeight-L-F:0;if(l===P)$="start"===o?w:"end"===o?w-c:"nearest"===o?K(f,f+c,c,L,F,f+w,f+w+m,m):w-c/2,N="start"===r?C:"center"===r?C-d/2:"end"===r?C-d:K(h,h+d,d,_,B,h+C,h+C+v,v),$=Math.max(0,$+f),N=Math.max(0,N+h);else{$="start"===o?w-D-L:"end"===o?w-R+F+W:"nearest"===o?K(D,R,H,L,F+W,w,w+m,m):w-(D+H/2)+W/2,N="start"===r?C-k-_:"center"===r?C-(k+E/2)+U/2:"end"===r?C-T+B+U:K(k,T,E,_,B+U,C,C+v,v);var z=P.scrollLeft,q=P.scrollTop;w+=q-($=Math.max(0,Math.min(q+$,P.scrollHeight-H+W))),C+=z-(N=Math.max(0,Math.min(z+N,P.scrollWidth-E+U)))}x.push({el:P,top:$,left:N})}return x},L=0;function B(e){return"function"==typeof e?e:F}function F(){}function $(e,t){return e===t||e.contains&&e.contains(t)}function N(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(e){for(var n=arguments.length,o=new Array(n>1?n-1:0),r=1;r<n;r++)o[r-1]=arguments[r];return t.some(function(t){return t&&t.apply(void 0,[e].concat(o)),e.preventDownshiftDefault||e.hasOwnProperty("nativeEvent")&&e.nativeEvent.preventDownshiftDefault})}}function U(e,t){return!(e=Array.isArray(e)?e[0]:e)&&t?t:e}var W=["highlightedIndex","inputValue","isOpen","selectedItem","type"];function z(e){void 0===e&&(e={});var t={};return W.forEach(function(n){e.hasOwnProperty(n)&&(t[n]=e[n])}),t}function q(e){var t=e.key,n=e.keyCode;return n>=37&&n<=40&&0!==t.indexOf("Arrow")?"Arrow"+t:t}function Y(e,t,n){var o=n-1;("number"!=typeof t||t<0||t>=n)&&(t=e>0?-1:o+1);var r=t+e;return r<0?r=o:r>o&&(r=0),r}var X=function(e){var t,s;function u(t){var n=e.call(this,t)||this;n.id=n.props.id||"downshift-"+String(L++),n.menuId=n.props.menuId||n.id+"-menu",n.labelId=n.props.labelId||n.id+"-label",n.inputId=n.props.inputId||n.id+"-input",n.getItemId=n.props.getItemId||function(e){return n.id+"-item-"+e},n.input=null,n.items=[],n.itemCount=null,n.previousResultCount=0,n.timeoutIds=[],n.internalSetTimeout=function(e,t){var o=setTimeout(function(){n.timeoutIds=n.timeoutIds.filter(function(e){return e!==o}),e()},t);n.timeoutIds.push(o)},n.setItemCount=function(e){n.itemCount=e},n.unsetItemCount=function(){n.itemCount=null},n.setHighlightedIndex=function(e,t){void 0===e&&(e=n.props.defaultHighlightedIndex),void 0===t&&(t={}),t=z(t),n.internalSetState(r({highlightedIndex:e},t))},n.clearSelection=function(e){n.internalSetState({selectedItem:null,inputValue:"",highlightedIndex:n.props.defaultHighlightedIndex,isOpen:n.props.defaultIsOpen},e)},n.selectItem=function(e,t,o){t=z(t),n.internalSetState(r({isOpen:n.props.defaultIsOpen,highlightedIndex:n.props.defaultHighlightedIndex,selectedItem:e,inputValue:n.props.itemToString(e)},t),o)},n.selectItemAtIndex=function(e,t,o){var r=n.items[e];null!=r&&n.selectItem(r,t,o)},n.selectHighlightedItem=function(e,t){return n.selectItemAtIndex(n.getState().highlightedIndex,e,t)},n.internalSetState=function(e,t){var o,i,s={},u="function"==typeof e;return!u&&e.hasOwnProperty("inputValue")&&n.props.onInputValueChange(e.inputValue,r({},n.getStateAndHelpers(),e)),n.setState(function(t){t=n.getState(t);var l=u?e(t):e;l=n.props.stateReducer(t,l),o=l.hasOwnProperty("selectedItem");var a={},p={};return o&&l.selectedItem!==t.selectedItem&&(i=l.selectedItem),l.type=l.type||I,Object.keys(l).forEach(function(e){t[e]!==l[e]&&(s[e]=l[e]),"type"!==e&&(p[e]=l[e],n.isControlledProp(e)||(a[e]=l[e]))}),u&&l.hasOwnProperty("inputValue")&&n.props.onInputValueChange(l.inputValue,r({},n.getStateAndHelpers(),l)),a},function(){B(t)(),Object.keys(s).length>1&&n.props.onStateChange(s,n.getStateAndHelpers()),o&&n.props.onSelect(e.selectedItem,n.getStateAndHelpers()),void 0!==i&&n.props.onChange(i,n.getStateAndHelpers()),n.props.onUserAction(s,n.getStateAndHelpers())})},n.rootRef=function(e){return n._rootNode=e},n.getRootProps=function(e,t){var i,s=void 0===e?{}:e,u=s.refKey,l=void 0===u?"ref":u,a=o(s,["refKey"]),p=(void 0===t?{}:t).suppressRefError,d=void 0!==p&&p;n.getRootProps.called=!0,n.getRootProps.refKey=l,n.getRootProps.suppressRefError=d;var c=n.getState().isOpen;return r(((i={})[l]=n.rootRef,i.role="combobox",i["aria-expanded"]=c,i["aria-haspopup"]="listbox",i["aria-owns"]=c?n.menuId:null,i["aria-labelledby"]=n.labelId,i),a)},n.keyDownHandlers={ArrowDown:function(e){var t=this;if(e.preventDefault(),this.getState().isOpen){var n=e.shiftKey?5:1;this.moveHighlightedIndex(n,{type:w})}else this.internalSetState({isOpen:!0,type:w},function(){var e=t.getItemCount();e>0&&t.setHighlightedIndex(Y(1,t.getState().highlightedIndex,e),{type:w})})},ArrowUp:function(e){var t=this;if(e.preventDefault(),this.getState().isOpen){var n=e.shiftKey?-5:-1;this.moveHighlightedIndex(n,{type:b})}else this.internalSetState({isOpen:!0,type:b},function(){var e=t.getItemCount();e>0&&t.setHighlightedIndex(Y(-1,t.getState().highlightedIndex,e),{type:w})})},Enter:function(e){var t=this.getState(),n=t.isOpen,o=t.highlightedIndex;if(n&&null!=o){e.preventDefault();var r=this.items[o],i=this.getItemNodeFromIndex(o);if(null==r||i&&i.hasAttribute("disabled"))return;this.selectHighlightedItem({type:x})}},Escape:function(e){e.preventDefault(),this.reset({type:C})}},n.buttonKeyDownHandlers=r({},n.keyDownHandlers,{" ":function(e){e.preventDefault(),this.toggleMenu({type:D})}}),n.inputKeyDownHandlers=r({},n.keyDownHandlers,{Home:function(e){this.highlightFirstOrLastIndex(e,!0,{type:O})},End:function(e){this.highlightFirstOrLastIndex(e,!1,{type:P})}}),n.getToggleButtonProps=function(e){var t=void 0===e?{}:e,i=t.onClick,s=(t.onPress,t.onKeyDown),u=t.onKeyUp,l=t.onBlur,a=o(t,["onClick","onPress","onKeyDown","onKeyUp","onBlur"]),p=n.getState().isOpen,d={onClick:N(i,n.buttonHandleClick),onKeyDown:N(s,n.buttonHandleKeyDown),onKeyUp:N(u,n.buttonHandleKeyUp),onBlur:N(l,n.buttonHandleBlur)};return r({type:"button",role:"button","aria-label":p?"close menu":"open menu","aria-haspopup":!0,"data-toggle":!0},a.disabled?{}:d,a)},n.buttonHandleKeyUp=function(e){e.preventDefault()},n.buttonHandleKeyDown=function(e){var t=q(e);n.buttonKeyDownHandlers[t]&&n.buttonKeyDownHandlers[t].call(i(n),e)},n.buttonHandleClick=function(e){e.preventDefault(),n.props.environment.document.activeElement===n.props.environment.document.body&&e.target.focus(),n.internalSetTimeout(function(){return n.toggleMenu({type:T})})},n.buttonHandleBlur=function(e){var t=e.target;n.internalSetTimeout(function(){n.isMouseDown||null!=n.props.environment.document.activeElement&&n.props.environment.document.activeElement.id===n.inputId||n.props.environment.document.activeElement===t||n.reset({type:R})})},n.getLabelProps=function(e){return r({htmlFor:n.inputId,id:n.labelId},e)},n.getInputProps=function(e){var t=void 0===e?{}:e,i=t.onKeyDown,s=t.onBlur,u=t.onChange,l=t.onInput,a=(t.onChangeText,o(t,["onKeyDown","onBlur","onChange","onInput","onChangeText"])),p={};var d,c=n.getState(),h=c.inputValue,f=c.isOpen,g=c.highlightedIndex;a.disabled||((d={}).onChange=N(u,l,n.inputHandleChange),d.onKeyDown=N(i,n.inputHandleKeyDown),d.onBlur=N(s,n.inputHandleBlur),p=d);return r({"aria-autocomplete":"list","aria-activedescendant":f&&"number"==typeof g&&g>=0?n.getItemId(g):null,"aria-controls":f?n.menuId:null,"aria-labelledby":n.labelId,autoComplete:"off",value:h,id:n.inputId},p,a)},n.inputHandleKeyDown=function(e){var t=q(e);t&&n.inputKeyDownHandlers[t]&&n.inputKeyDownHandlers[t].call(i(n),e)},n.inputHandleChange=function(e){n.internalSetState({type:E,isOpen:!0,inputValue:e.target.value,highlightedIndex:n.props.defaultHighlightedIndex})},n.inputHandleTextChange=function(e){n.internalSetState({type:E,isOpen:!0,inputValue:e,highlightedIndex:n.props.defaultHighlightedIndex})},n.inputHandleBlur=function(){n.internalSetTimeout(function(){var e=n.props.environment.document&&!!n.props.environment.document.activeElement&&!!n.props.environment.document.activeElement.dataset&&n.props.environment.document.activeElement.dataset.toggle&&n._rootNode&&n._rootNode.contains(n.props.environment.document.activeElement);n.isMouseDown||e||n.reset({type:H})})},n.menuRef=function(e){n._menuNode=e},n.getMenuProps=function(e,t){var i,s=void 0===e?{}:e,u=s.refKey,l=void 0===u?"ref":u,a=s.ref,p=o(s,["refKey","ref"]),d=(void 0===t?{}:t).suppressRefError,c=void 0!==d&&d;return n.getMenuProps.called=!0,n.getMenuProps.refKey=l,n.getMenuProps.suppressRefError=c,r(((i={})[l]=function(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];return function(){for(var e=arguments.length,n=new Array(e),o=0;o<e;o++)n[o]=arguments[o];t.forEach(function(e){e&&e.apply(void 0,n)})}}(a,n.menuRef),i.role="listbox",i["aria-labelledby"]=p&&p["aria-label"]?null:n.labelId,i.id=n.menuId,i),p)},n.getItemProps=function(e){var t,i=void 0===e?{}:e,s=i.onMouseMove,u=i.onMouseDown,l=i.onClick,a=(i.onPress,i.index),p=i.item,d=void 0===p?void 0:p,c=o(i,["onMouseMove","onMouseDown","onClick","onPress","index","item"]);void 0===a?(n.items.push(d),a=n.items.indexOf(d)):n.items[a]=d;var h=l,f=((t={onMouseMove:N(s,function(){a!==n.getState().highlightedIndex&&(n.setHighlightedIndex(a,{type:S}),n.avoidScrolling=!0,n.internalSetTimeout(function(){return n.avoidScrolling=!1},250))}),onMouseDown:N(u,function(e){e.preventDefault()})}).onClick=N(h,function(){n.selectItemAtIndex(a,{type:M})}),t),g=c.disabled?{onMouseDown:f.onMouseDown}:f;return r({id:n.getItemId(a),role:"option","aria-selected":n.getState().highlightedIndex===a},g,c)},n.clearItems=function(){n.items=[]},n.reset=function(e,t){void 0===e&&(e={}),e=z(e),n.internalSetState(function(t){var o=t.selectedItem;return r({isOpen:n.props.defaultIsOpen,highlightedIndex:n.props.defaultHighlightedIndex,inputValue:n.props.itemToString(o)},e)},t)},n.toggleMenu=function(e,t){void 0===e&&(e={}),e=z(e),n.internalSetState(function(t){var o=t.isOpen;return r({isOpen:!o},o&&{highlightedIndex:n.props.defaultHighlightedIndex},e)},function(){var o=n.getState(),r=o.isOpen,i=o.highlightedIndex;r&&n.getItemCount()>0&&"number"==typeof i&&n.setHighlightedIndex(i,e),B(t)()})},n.openMenu=function(e){n.internalSetState({isOpen:!0},e)},n.closeMenu=function(e){n.internalSetState({isOpen:!1},e)},n.updateStatus=function(e,t){var n;function o(){n&&clearTimeout(n)}function r(){for(var r=arguments.length,i=new Array(r),s=0;s<r;s++)i[s]=arguments[s];o(),n=setTimeout(function(){n=null,e.apply(void 0,i)},t)}return r.cancel=o,r}(function(){var e=n.getState(),t=n.items[e.highlightedIndex],o=n.getItemCount(),i=n.props.getA11yStatusMessage(r({itemToString:n.props.itemToString,previousResultCount:n.previousResultCount,resultCount:o,highlightedItem:t},e));n.previousResultCount=o,y(i)},200);var s=n.props,u=s.defaultHighlightedIndex,l=s.initialHighlightedIndex,a=void 0===l?u:l,p=s.defaultIsOpen,d=s.initialIsOpen,c=void 0===d?p:d,h=s.initialInputValue,f=void 0===h?"":h,g=s.initialSelectedItem,m=void 0===g?null:g,v=n.getState({highlightedIndex:a,isOpen:c,inputValue:f,selectedItem:m});return null!=v.selectedItem&&void 0===n.props.initialInputValue&&(v.inputValue=n.props.itemToString(v.selectedItem)),n.state=v,n}s=e,(t=u).prototype=Object.create(s.prototype),t.prototype.constructor=t,t.__proto__=s;var l=u.prototype;return l.internalClearTimeouts=function(){this.timeoutIds.forEach(function(e){clearTimeout(e)}),this.timeoutIds=[]},l.getState=function(e){var t=this;return void 0===e&&(e=this.state),Object.keys(e).reduce(function(n,o){return n[o]=t.isControlledProp(o)?t.props[o]:e[o],n},{})},l.isControlledProp=function(e){return void 0!==this.props[e]},l.getItemCount=function(){var e=this.items.length;return null!=this.itemCount?e=this.itemCount:void 0!==this.props.itemCount&&(e=this.props.itemCount),e},l.getItemNodeFromIndex=function(e){return this.props.environment.document.getElementById(this.getItemId(e))},l.scrollHighlightedItemIntoView=function(){var e=this.getItemNodeFromIndex(this.getState().highlightedIndex);this.props.scrollIntoView(e,this._menuNode)},l.moveHighlightedIndex=function(e,t){var n=this.getItemCount();if(n>0){var o=Y(e,this.getState().highlightedIndex,n);this.setHighlightedIndex(o,t)}},l.highlightFirstOrLastIndex=function(e,t,n){var o=this.getItemCount()-1;o<0||!this.getState().isOpen||(e.preventDefault(),this.setHighlightedIndex(t?0:o,n))},l.getStateAndHelpers=function(){var e=this.getState(),t=e.highlightedIndex,n=e.inputValue,o=e.selectedItem,r=e.isOpen,i=this.props.itemToString,s=this.id,u=this.getRootProps,l=this.getToggleButtonProps,a=this.getLabelProps,p=this.getMenuProps,d=this.getInputProps,c=this.getItemProps,h=this.openMenu,f=this.closeMenu,g=this.toggleMenu,m=this.selectItem,v=this.selectItemAtIndex,y=this.selectHighlightedItem,I=this.setHighlightedIndex,S=this.clearSelection,b=this.clearItems;return{getRootProps:u,getToggleButtonProps:l,getLabelProps:a,getMenuProps:p,getInputProps:d,getItemProps:c,reset:this.reset,openMenu:h,closeMenu:f,toggleMenu:g,selectItem:m,selectItemAtIndex:v,selectHighlightedItem:y,setHighlightedIndex:I,clearSelection:S,clearItems:b,setItemCount:this.setItemCount,unsetItemCount:this.unsetItemCount,setState:this.internalSetState,itemToString:i,id:s,highlightedIndex:t,inputValue:n,isOpen:r,selectedItem:o}},l.componentDidMount=function(){var e=this,t=function(t,n){void 0===n&&(n=!0);var o=e.props.environment.document;return[e._rootNode,e._menuNode].some(function(e){return e&&($(e,t)||n&&$(e,o.activeElement))})},n=function(){e.isMouseDown=!0},o=function(n){e.isMouseDown=!1,!t(n.target)&&e.getState().isOpen&&e.reset({type:1},function(){return e.props.onOuterClick(e.getStateAndHelpers())})},r=function(){e.isTouchMove=!1},i=function(){e.isTouchMove=!0},s=function(n){var o=t(n.target,!1);e.isTouchMove||o||!e.getState().isOpen||e.reset({type:16},function(){return e.props.onOuterClick(e.getStateAndHelpers())})};this.props.environment.addEventListener("mousedown",n),this.props.environment.addEventListener("mouseup",o),this.props.environment.addEventListener("touchstart",r),this.props.environment.addEventListener("touchmove",i),this.props.environment.addEventListener("touchend",s),this.cleanup=function(){e.internalClearTimeouts(),e.updateStatus.cancel(),e.props.environment.removeEventListener("mousedown",n),e.props.environment.removeEventListener("mouseup",o),e.props.environment.removeEventListener("touchstart",r),e.props.environment.removeEventListener("touchmove",i),e.props.environment.removeEventListener("touchend",s)}},l.shouldScroll=function(e,t){var n=(void 0===this.props.highlightedIndex?this.getState():this.props).highlightedIndex,o=(void 0===t.highlightedIndex?e:t).highlightedIndex;return n&&this.getState().isOpen&&!e.isOpen||n!==o},l.componentDidUpdate=function(e,t){this.isControlledProp("selectedItem")&&this.props.selectedItemChanged(e.selectedItem,this.props.selectedItem)&&this.internalSetState({type:15,inputValue:this.props.itemToString(this.props.selectedItem)}),!this.avoidScrolling&&this.shouldScroll(t,e)&&this.scrollHighlightedItemIntoView(),this.updateStatus()},l.componentWillUnmount=function(){this.cleanup()},l.render=function(){var e=U(this.props.children,F);this.clearItems(),this.getRootProps.called=!1,this.getRootProps.refKey=void 0,this.getRootProps.suppressRefError=void 0,this.getMenuProps.called=!1,this.getMenuProps.refKey=void 0,this.getMenuProps.suppressRefError=void 0,this.getLabelProps.called=!1,this.getInputProps.called=!1;var t=U(e(this.getStateAndHelpers()));return t?this.getRootProps.called||this.props.suppressRefError?t:function(e){return"string"==typeof e.type}(t)?n.cloneElement(t,this.getRootProps(function(e){return e.props}(t))):void 0:null},u}(t.Component);X.defaultProps={defaultHighlightedIndex:null,defaultIsOpen:!1,getA11yStatusMessage:function(e){var t=e.isOpen,n=e.selectedItem,o=e.resultCount,r=e.previousResultCount,i=e.itemToString;return t?o?o!==r?o+" result"+(1===o?" is":"s are")+" available, use up and down arrow keys to navigate. Press Enter key to select.":"":"No results are available.":n?i(n):""},itemToString:function(e){return null==e?"":String(e)},onStateChange:F,onInputValueChange:F,onUserAction:F,onChange:F,onSelect:F,onOuterClick:F,selectedItemChanged:function(e,t){return e!==t},environment:"undefined"==typeof window?{}:window,stateReducer:function(e,t){return t},suppressRefError:!1,scrollIntoView:function(e,t){null!==e&&_(e,{boundary:t,block:"nearest",scrollMode:"if-needed"}).forEach(function(e){var t=e.el,n=e.top,o=e.left;t.scrollTop=n,t.scrollLeft=o})}},X.stateChangeTypes=k,e.default=X,e.resetIdCounter=function(){L=0},Object.defineProperty(e,"__esModule",{value:!0})});
//# sourceMappingURL=downshift.umd.min.js.map