From aa9db1dbe94e214b5517d57e60a31a9f693ee03f Mon Sep 17 00:00:00 2001 From: Nick Kircos Date: Thu, 6 Oct 2016 16:43:24 -0600 Subject: [PATCH] Ran build --- dist/react-select.js | 58 +- dist/react-select.min.js | 4 +- examples/dist/app.js | 3602 ++-- examples/dist/bundle.js | 58 +- examples/dist/common.js | 30976 +++++++++++++++++----------------- examples/dist/standalone.js | 58 +- lib/Async.js | 20 +- lib/Creatable.js | 18 +- lib/Select.js | 20 +- 9 files changed, 17459 insertions(+), 17355 deletions(-) diff --git a/dist/react-select.js b/dist/react-select.js index c4a59600e4..27d93731ce 100644 --- a/dist/react-select.js +++ b/dist/react-select.js @@ -38,15 +38,17 @@ var propTypes = { children: _react2['default'].PropTypes.func.isRequired, // Child function responsible for creating the inner Select component; (props: Object): PropTypes.element ignoreAccents: _react2['default'].PropTypes.bool, // strip diacritics when filtering; defaults to true ignoreCase: _react2['default'].PropTypes.bool, // perform case-insensitive filtering; defaults to true - loadingPlaceholder: _react.PropTypes.string.isRequired, // replaces the placeholder while options are loading + loadingPlaceholder: _react2['default'].PropTypes.oneOfType([// replaces the placeholder while options are loading + _react2['default'].PropTypes.string, _react2['default'].PropTypes.node]), loadOptions: _react2['default'].PropTypes.func.isRequired, // callback to load options asynchronously; (inputValue: string, callback: Function): ?Promise options: _react.PropTypes.array.isRequired, // array of options placeholder: _react2['default'].PropTypes.oneOfType([// field placeholder, displayed when there's no value (shared with Select) _react2['default'].PropTypes.string, _react2['default'].PropTypes.node]), searchPromptText: _react2['default'].PropTypes.oneOfType([// label to prompt for search input - _react2['default'].PropTypes.string, _react2['default'].PropTypes.node]) -}; + _react2['default'].PropTypes.string, _react2['default'].PropTypes.node]), + onInputChange: _react2['default'].PropTypes.func }; +// optional for keeping track of what is being typed var defaultProps = { autoload: true, cache: {}, @@ -155,6 +157,7 @@ var Async = (function (_Component) { var _props2 = this.props; var ignoreAccents = _props2.ignoreAccents; var ignoreCase = _props2.ignoreCase; + var onInputChange = _props2.onInputChange; if (ignoreAccents) { inputValue = (0, _utilsStripDiacritics2['default'])(inputValue); @@ -164,11 +167,17 @@ var Async = (function (_Component) { inputValue = inputValue.toLowerCase(); } + if (onInputChange) { + onInputChange(inputValue); + } + return this.loadOptions(inputValue); } }, { key: 'render', value: function render() { + var _this3 = this; + var _props3 = this.props; var children = _props3.children; var loadingPlaceholder = _props3.loadingPlaceholder; @@ -181,7 +190,10 @@ var Async = (function (_Component) { var props = { noResultsText: isLoading ? loadingPlaceholder : searchPromptText, placeholder: isLoading ? loadingPlaceholder : placeholder, - options: isLoading ? [] : options + options: isLoading ? [] : options, + ref: function ref(_ref) { + return _this3.select = _ref; + } }; return children(_extends({}, this.props, props, { @@ -433,7 +445,9 @@ var Creatable = _react2['default'].createClass({ }, onInputKeyDown: function onInputKeyDown(event) { - var shouldKeyDownEventCreateNewOption = this.props.shouldKeyDownEventCreateNewOption; + var _props3 = this.props; + var shouldKeyDownEventCreateNewOption = _props3.shouldKeyDownEventCreateNewOption; + var onInputKeyDown = _props3.onInputKeyDown; var focusedOption = this.select.getFocusedOption(); @@ -442,6 +456,8 @@ var Creatable = _react2['default'].createClass({ // Prevent decorated Select from doing anything additional with this keyDown event event.preventDefault(); + } else if (onInputKeyDown) { + onInputKeyDown(event); } }, @@ -456,13 +472,13 @@ var Creatable = _react2['default'].createClass({ render: function render() { var _this = this; - var _props3 = this.props; - var _props3$children = _props3.children; - var children = _props3$children === undefined ? defaultChildren : _props3$children; - var newOptionCreator = _props3.newOptionCreator; - var shouldKeyDownEventCreateNewOption = _props3.shouldKeyDownEventCreateNewOption; + var _props4 = this.props; + var _props4$children = _props4.children; + var children = _props4$children === undefined ? defaultChildren : _props4$children; + var newOptionCreator = _props4.newOptionCreator; + var shouldKeyDownEventCreateNewOption = _props4.shouldKeyDownEventCreateNewOption; - var restProps = _objectWithoutProperties(_props3, ['children', 'newOptionCreator', 'shouldKeyDownEventCreateNewOption']); + var restProps = _objectWithoutProperties(_props4, ['children', 'newOptionCreator', 'shouldKeyDownEventCreateNewOption']); var props = _extends({}, restProps, { allowCreate: true, @@ -938,14 +954,26 @@ var Select = _react2['default'].createClass({ }, componentWillUnmount: function componentWillUnmount() { - document.removeEventListener('touchstart', this.handleTouchOutside); + if (!document.removeEventListener && document.detachEvent) { + document.detachEvent('ontouchstart', this.handleTouchOutside); + } else { + document.removeEventListener('touchstart', this.handleTouchOutside); + } }, toggleTouchOutsideEvent: function toggleTouchOutsideEvent(enabled) { if (enabled) { - document.addEventListener('touchstart', this.handleTouchOutside); + if (!document.addEventListener && document.attachEvent) { + document.attachEvent('ontouchstart', this.handleTouchOutside); + } else { + document.addEventListener('touchstart', this.handleTouchOutside); + } } else { - document.removeEventListener('touchstart', this.handleTouchOutside); + if (!document.removeEventListener && document.detachEvent) { + document.detachEvent('ontouchstart', this.handleTouchOutside); + } else { + document.removeEventListener('touchstart', this.handleTouchOutside); + } } }, @@ -1601,7 +1629,7 @@ var Select = _react2['default'].createClass({ } if (this.props.autosize) { - return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, inputProps, { minWidth: '5px' })); + return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, inputProps, { minWidth: '5' })); } return _react2['default'].createElement( 'div', diff --git a/dist/react-select.min.js b/dist/react-select.min.js index 6e7e8ee34e..83772b7b7b 100644 --- a/dist/react-select.min.js +++ b/dist/react-select.min.js @@ -1,2 +1,2 @@ -!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Select=e()}}(function(){return function e(t,u,n){function s(i,a){if(!u[i]){if(!t[i]){var r="function"==typeof require&&require;if(!a&&r)return r(i,!0);if(o)return o(i,!0);var l=new Error("Cannot find module '"+i+"'");throw l.code="MODULE_NOT_FOUND",l}var p=u[i]={exports:{}};t[i][0].call(p.exports,function(e){var u=t[i][1][e];return s(u?u:e)},p,p.exports,e,t,u,n)}return u[i].exports}for(var o="function"==typeof require&&require,i=0;i=0||Object.prototype.hasOwnProperty.call(e,n)&&(u[n]=e[n]);return u}function o(e){return f["default"].createElement(E["default"],e)}function i(e){var t=e.option,u=e.options,n=e.labelKey,s=e.valueKey;return 0===u.filter(function(e){return e[n]===t[n]||e[s]===t[s]}).length}function a(e){var t=e.label;return!!t}function r(e){var t=e.label,u=e.labelKey,n=e.valueKey,s={};return s[n]=t,s[u]=t,s.className="Select-create-option-placeholder",s}function l(e){return'Create option "'+e+'"'}function p(e){var t=e.keyCode;switch(t){case 9:case 13:case 188:return!0}return!1}var d=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(u[n]=e[n]);return u}function i(e,t,u){return t in e?Object.defineProperty(e,t,{value:u,enumerable:!0,configurable:!0,writable:!0}):e[t]=u,e}function a(e){var t=typeof e;return"string"===t?e:"object"===t?JSON.stringify(e):"number"===t||"boolean"===t?String(e):""}Object.defineProperty(u,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;ta.bottom||i.topt.offsetHeight&&!(t.scrollHeight-t.offsetHeight-t.scrollTop)&&this.props.onMenuScrollToBottom()}},handleRequired:function(e,t){return!e||(t?0===e.length:0===Object.keys(e).length)},getOptionLabel:function(e){return e[this.props.labelKey]},getValueArray:function(e,t){var u=this,n="object"==typeof t?t:this.props;if(n.multi){if("string"==typeof e&&(e=e.split(n.delimiter)),!Array.isArray(e)){if(null===e||void 0===e)return[];e=[e]}return e.map(function(e){return u.expandValue(e,n)}).filter(function(e){return e})}var s=this.expandValue(e,n);return s?[s]:[]},expandValue:function(e,t){var u=typeof e;if("string"!==u&&"number"!==u&&"boolean"!==u)return e;var n=t.options,s=t.valueKey;if(n)for(var o=0;o0?u-=1:u=t.length-1;else if("start"===e)u=0;else if("end"===e)u=t.length-1;else if("page_up"===e){var s=u-this.props.pageSize;u=s<0?0:s}else if("page_down"===e){var s=u+this.props.pageSize;u=s>t.length-1?t.length-1:s}u===-1&&(u=0),this.setState({focusedIndex:t[u].index,focusedOption:t[u].option})}},getFocusedOption:function(){return this._focusedOption},getInputValue:function(){return this.state.inputValue},selectFocusedOption:function(){if(this._focusedOption)return this.selectValue(this._focusedOption)},renderLoading:function(){if(this.props.isLoading)return p["default"].createElement("span",{className:"Select-loading-zone","aria-hidden":"true"},p["default"].createElement("span",{className:"Select-loading"}))},renderValue:function(e,t){var u=this,n=this.props.valueRenderer||this.getOptionLabel,s=this.props.valueComponent;if(!e.length)return this.state.inputValue?null:p["default"].createElement("div",{className:"Select-placeholder"},this.props.placeholder);var o=this.props.onValueClick?this.handleValueClick:null;return this.props.multi?e.map(function(e,t){return p["default"].createElement(s,{id:u._instancePrefix+"-value-"+t,instancePrefix:u._instancePrefix,disabled:u.props.disabled||e.clearableValue===!1,key:"value-"+t+"-"+e[u.props.valueKey],onClick:o,onRemove:u.removeValue,value:e},n(e,t),p["default"].createElement("span",{className:"Select-aria-only"}," "))}):this.state.inputValue?void 0:(t&&(o=null),p["default"].createElement(s,{id:this._instancePrefix+"-value-item",disabled:this.props.disabled,instancePrefix:this._instancePrefix,onClick:o,value:e[0]},n(e[0])))},renderInput:function(e,t){var u=this;if(this.props.inputRenderer)return this.props.inputRenderer();var n,s=(0,y["default"])("Select-input",this.props.inputProps.className),a=!!this.state.isOpen,l=(0,y["default"])((n={},i(n,this._instancePrefix+"-list",a),i(n,this._instancePrefix+"-backspace-remove-message",this.props.multi&&!this.props.disabled&&this.state.isFocused&&!this.state.inputValue),n)),d=r({},this.props.inputProps,{role:"combobox","aria-expanded":""+a,"aria-owns":l,"aria-haspopup":""+a,"aria-activedescendant":a?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value","aria-labelledby":this.props["aria-labelledby"],"aria-label":this.props["aria-label"],className:s,tabIndex:this.props.tabIndex,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,ref:function(e){return u.input=e},required:this.state.required,value:this.state.inputValue});if(this.props.disabled||!this.props.searchable){var c=this.props.inputProps,f=(c.inputClassName,o(c,["inputClassName"]));return p["default"].createElement("div",r({},f,{role:"combobox","aria-expanded":a,"aria-owns":a?this._instancePrefix+"-list":this._instancePrefix+"-value","aria-activedescendant":a?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value",className:s,tabIndex:this.props.tabIndex||0,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,ref:function(e){return u.input=e},"aria-readonly":""+!!this.props.disabled,style:{border:0,width:1,display:"inline-block"}}))}return this.props.autosize?p["default"].createElement(h["default"],r({},d,{minWidth:"5px"})):p["default"].createElement("div",{className:s},p["default"].createElement("input",d))},renderClear:function(){if(this.props.clearable&&this.props.value&&0!==this.props.value&&(!this.props.multi||this.props.value.length)&&!this.props.disabled&&!this.props.isLoading)return p["default"].createElement("span",{className:"Select-clear-zone",title:this.props.multi?this.props.clearAllText:this.props.clearValueText,"aria-label":this.props.multi?this.props.clearAllText:this.props.clearValueText,onMouseDown:this.clearValue,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEndClearValue},p["default"].createElement("span",{className:"Select-clear",dangerouslySetInnerHTML:{__html:"×"}}))},renderArrow:function(){var e=this.handleMouseDownOnArrow,t=this.props.arrowRenderer({onMouseDown:e});return p["default"].createElement("span",{className:"Select-arrow-zone",onMouseDown:e},t)},filterOptions:function _(e){var t=this.state.inputValue,u=this.props.options||[];if(this.props.filterOptions){var _="function"==typeof this.props.filterOptions?this.props.filterOptions:m["default"];return _(u,t,e,{filterOption:this.props.filterOption,ignoreAccents:this.props.ignoreAccents,ignoreCase:this.props.ignoreCase,labelKey:this.props.labelKey,matchPos:this.props.matchPos,matchProp:this.props.matchProp,valueKey:this.props.valueKey})}return u},onOptionRef:function(e,t){t&&(this.focused=e)},renderMenu:function(e,t,u){return e&&e.length?this.props.menuRenderer({focusedOption:u,focusOption:this.focusOption,instancePrefix:this._instancePrefix,labelKey:this.props.labelKey,onFocus:this.focusOption,onSelect:this.selectValue,optionClassName:this.props.optionClassName,optionComponent:this.props.optionComponent,optionRenderer:this.props.optionRenderer||this.getOptionLabel,options:e,selectValue:this.selectValue,valueArray:t,valueKey:this.props.valueKey,onOptionRef:this.onOptionRef}):this.props.noResultsText?p["default"].createElement("div",{className:"Select-noresults"},this.props.noResultsText):null},renderHiddenField:function(e){var t=this;if(this.props.name){if(this.props.joinValues){var u=e.map(function(e){return a(e[t.props.valueKey])}).join(this.props.delimiter);return p["default"].createElement("input",{type:"hidden",ref:function(e){return t.value=e},name:this.props.name,value:u,disabled:this.props.disabled})}return e.map(function(e,u){return p["default"].createElement("input",{key:"hidden."+u,type:"hidden",ref:"value"+u,name:t.props.name,value:a(e[t.props.valueKey]),disabled:t.props.disabled})})}},getFocusableOptionIndex:function(e){var t=this._visibleOptions;if(!t.length)return null;var u=this.state.focusedOption||e;if(u&&!u.disabled){var n=t.indexOf(u);if(n!==-1)return n}for(var s=0;s-1)return!1;if(n.filterOption)return n.filterOption.call(s,e,t);if(!t)return!0;var o=String(e[n.valueKey]),a=String(e[n.labelKey]);return n.ignoreAccents&&("label"!==n.matchProp&&(o=(0,i["default"])(o)),"value"!==n.matchProp&&(a=(0,i["default"])(a))),n.ignoreCase&&("label"!==n.matchProp&&(o=o.toLowerCase()),"value"!==n.matchProp&&(a=a.toLowerCase())),"start"===n.matchPos?"label"!==n.matchProp&&o.substr(0,t.length)===t||"value"!==n.matchProp&&a.substr(0,t.length)===t:"label"!==n.matchProp&&o.indexOf(t)>=0||"value"!==n.matchProp&&a.indexOf(t)>=0})}var o=e("./stripDiacritics"),i=n(o);t.exports=s},{"./stripDiacritics":10}],9:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}function n(e){var t=e.focusedOption,u=e.instancePrefix,n=(e.labelKey,e.onFocus),s=e.onSelect,i=e.optionClassName,r=e.optionComponent,l=e.optionRenderer,p=e.options,d=e.valueArray,c=e.valueKey,f=e.onOptionRef,h=r;return p.map(function(e,r){var p=d&&d.indexOf(e)>-1,E=e===t,y=(0,o["default"])(i,{"Select-option":!0,"is-selected":p,"is-focused":E,"is-disabled":e.disabled});return a["default"].createElement(h,{className:y,instancePrefix:u,isDisabled:e.disabled,isFocused:E,isSelected:p,key:"option-"+r+"-"+e[c],onFocus:n,onSelect:s,option:e,optionIndex:r,ref:function(e){f(e,E)}},l(e,r))})}var s="undefined"!=typeof window?window.classNames:"undefined"!=typeof e?e.classNames:null,o=u(s),i="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,a=u(i);t.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],10:[function(e,t,u){"use strict";var n=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}];t.exports=function(e){for(var t=0;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(u[n]=e[n]);return u}function o(e){return f["default"].createElement(E["default"],e)}function i(e){var t=e.option,u=e.options,n=e.labelKey,s=e.valueKey;return 0===u.filter(function(e){return e[n]===t[n]||e[s]===t[s]}).length}function a(e){var t=e.label;return!!t}function r(e){var t=e.label,u=e.labelKey,n=e.valueKey,s={};return s[n]=t,s[u]=t,s.className="Select-create-option-placeholder",s}function l(e){return'Create option "'+e+'"'}function p(e){var t=e.keyCode;switch(t){case 9:case 13:case 188:return!0}return!1}var d=Object.assign||function(e){for(var t=1;t=0||Object.prototype.hasOwnProperty.call(e,n)&&(u[n]=e[n]);return u}function i(e,t,u){return t in e?Object.defineProperty(e,t,{value:u,enumerable:!0,configurable:!0,writable:!0}):e[t]=u,e}function a(e){var t=typeof e;return"string"===t?e:"object"===t?JSON.stringify(e):"number"===t||"boolean"===t?String(e):""}Object.defineProperty(u,"__esModule",{value:!0});var r=Object.assign||function(e){for(var t=1;ta.bottom||i.topt.offsetHeight&&!(t.scrollHeight-t.offsetHeight-t.scrollTop)&&this.props.onMenuScrollToBottom()}},handleRequired:function(e,t){return!e||(t?0===e.length:0===Object.keys(e).length)},getOptionLabel:function(e){return e[this.props.labelKey]},getValueArray:function(e,t){var u=this,n="object"==typeof t?t:this.props;if(n.multi){if("string"==typeof e&&(e=e.split(n.delimiter)),!Array.isArray(e)){if(null===e||void 0===e)return[];e=[e]}return e.map(function(e){return u.expandValue(e,n)}).filter(function(e){return e})}var s=this.expandValue(e,n);return s?[s]:[]},expandValue:function(e,t){var u=typeof e;if("string"!==u&&"number"!==u&&"boolean"!==u)return e;var n=t.options,s=t.valueKey;if(n)for(var o=0;o0?u-=1:u=t.length-1;else if("start"===e)u=0;else if("end"===e)u=t.length-1;else if("page_up"===e){var s=u-this.props.pageSize;u=s<0?0:s}else if("page_down"===e){var s=u+this.props.pageSize;u=s>t.length-1?t.length-1:s}u===-1&&(u=0),this.setState({focusedIndex:t[u].index,focusedOption:t[u].option})}},getFocusedOption:function(){return this._focusedOption},getInputValue:function(){return this.state.inputValue},selectFocusedOption:function(){if(this._focusedOption)return this.selectValue(this._focusedOption)},renderLoading:function(){if(this.props.isLoading)return p["default"].createElement("span",{className:"Select-loading-zone","aria-hidden":"true"},p["default"].createElement("span",{className:"Select-loading"}))},renderValue:function(e,t){var u=this,n=this.props.valueRenderer||this.getOptionLabel,s=this.props.valueComponent;if(!e.length)return this.state.inputValue?null:p["default"].createElement("div",{className:"Select-placeholder"},this.props.placeholder);var o=this.props.onValueClick?this.handleValueClick:null;return this.props.multi?e.map(function(e,t){return p["default"].createElement(s,{id:u._instancePrefix+"-value-"+t,instancePrefix:u._instancePrefix,disabled:u.props.disabled||e.clearableValue===!1,key:"value-"+t+"-"+e[u.props.valueKey],onClick:o,onRemove:u.removeValue,value:e},n(e,t),p["default"].createElement("span",{className:"Select-aria-only"}," "))}):this.state.inputValue?void 0:(t&&(o=null),p["default"].createElement(s,{id:this._instancePrefix+"-value-item",disabled:this.props.disabled,instancePrefix:this._instancePrefix,onClick:o,value:e[0]},n(e[0])))},renderInput:function(e,t){var u=this;if(this.props.inputRenderer)return this.props.inputRenderer();var n,s=(0,y["default"])("Select-input",this.props.inputProps.className),a=!!this.state.isOpen,l=(0,y["default"])((n={},i(n,this._instancePrefix+"-list",a),i(n,this._instancePrefix+"-backspace-remove-message",this.props.multi&&!this.props.disabled&&this.state.isFocused&&!this.state.inputValue),n)),d=r({},this.props.inputProps,{role:"combobox","aria-expanded":""+a,"aria-owns":l,"aria-haspopup":""+a,"aria-activedescendant":a?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value","aria-labelledby":this.props["aria-labelledby"],"aria-label":this.props["aria-label"],className:s,tabIndex:this.props.tabIndex,onBlur:this.handleInputBlur,onChange:this.handleInputChange,onFocus:this.handleInputFocus,ref:function(e){return u.input=e},required:this.state.required,value:this.state.inputValue});if(this.props.disabled||!this.props.searchable){var c=this.props.inputProps,f=(c.inputClassName,o(c,["inputClassName"]));return p["default"].createElement("div",r({},f,{role:"combobox","aria-expanded":a,"aria-owns":a?this._instancePrefix+"-list":this._instancePrefix+"-value","aria-activedescendant":a?this._instancePrefix+"-option-"+t:this._instancePrefix+"-value",className:s,tabIndex:this.props.tabIndex||0,onBlur:this.handleInputBlur,onFocus:this.handleInputFocus,ref:function(e){return u.input=e},"aria-readonly":""+!!this.props.disabled,style:{border:0,width:1,display:"inline-block"}}))}return this.props.autosize?p["default"].createElement(h["default"],r({},d,{minWidth:"5"})):p["default"].createElement("div",{className:s},p["default"].createElement("input",d))},renderClear:function(){if(this.props.clearable&&this.props.value&&0!==this.props.value&&(!this.props.multi||this.props.value.length)&&!this.props.disabled&&!this.props.isLoading)return p["default"].createElement("span",{className:"Select-clear-zone",title:this.props.multi?this.props.clearAllText:this.props.clearValueText,"aria-label":this.props.multi?this.props.clearAllText:this.props.clearValueText,onMouseDown:this.clearValue,onTouchStart:this.handleTouchStart,onTouchMove:this.handleTouchMove,onTouchEnd:this.handleTouchEndClearValue},p["default"].createElement("span",{className:"Select-clear",dangerouslySetInnerHTML:{__html:"×"}}))},renderArrow:function(){var e=this.handleMouseDownOnArrow,t=this.props.arrowRenderer({onMouseDown:e});return p["default"].createElement("span",{className:"Select-arrow-zone",onMouseDown:e},t)},filterOptions:function _(e){var t=this.state.inputValue,u=this.props.options||[];if(this.props.filterOptions){var _="function"==typeof this.props.filterOptions?this.props.filterOptions:m["default"];return _(u,t,e,{filterOption:this.props.filterOption,ignoreAccents:this.props.ignoreAccents,ignoreCase:this.props.ignoreCase,labelKey:this.props.labelKey,matchPos:this.props.matchPos,matchProp:this.props.matchProp,valueKey:this.props.valueKey})}return u},onOptionRef:function(e,t){t&&(this.focused=e)},renderMenu:function(e,t,u){return e&&e.length?this.props.menuRenderer({focusedOption:u,focusOption:this.focusOption,instancePrefix:this._instancePrefix,labelKey:this.props.labelKey,onFocus:this.focusOption,onSelect:this.selectValue,optionClassName:this.props.optionClassName,optionComponent:this.props.optionComponent,optionRenderer:this.props.optionRenderer||this.getOptionLabel,options:e,selectValue:this.selectValue,valueArray:t,valueKey:this.props.valueKey,onOptionRef:this.onOptionRef}):this.props.noResultsText?p["default"].createElement("div",{className:"Select-noresults"},this.props.noResultsText):null},renderHiddenField:function(e){var t=this;if(this.props.name){if(this.props.joinValues){var u=e.map(function(e){return a(e[t.props.valueKey])}).join(this.props.delimiter);return p["default"].createElement("input",{type:"hidden",ref:function(e){return t.value=e},name:this.props.name,value:u,disabled:this.props.disabled})}return e.map(function(e,u){return p["default"].createElement("input",{key:"hidden."+u,type:"hidden",ref:"value"+u,name:t.props.name,value:a(e[t.props.valueKey]),disabled:t.props.disabled})})}},getFocusableOptionIndex:function(e){var t=this._visibleOptions;if(!t.length)return null;var u=this.state.focusedOption||e;if(u&&!u.disabled){var n=t.indexOf(u);if(n!==-1)return n}for(var s=0;s-1)return!1;if(n.filterOption)return n.filterOption.call(s,e,t);if(!t)return!0;var o=String(e[n.valueKey]),a=String(e[n.labelKey]);return n.ignoreAccents&&("label"!==n.matchProp&&(o=(0,i["default"])(o)),"value"!==n.matchProp&&(a=(0,i["default"])(a))),n.ignoreCase&&("label"!==n.matchProp&&(o=o.toLowerCase()),"value"!==n.matchProp&&(a=a.toLowerCase())),"start"===n.matchPos?"label"!==n.matchProp&&o.substr(0,t.length)===t||"value"!==n.matchProp&&a.substr(0,t.length)===t:"label"!==n.matchProp&&o.indexOf(t)>=0||"value"!==n.matchProp&&a.indexOf(t)>=0})}var o=e("./stripDiacritics"),i=n(o);t.exports=s},{"./stripDiacritics":10}],9:[function(e,t,u){(function(e){"use strict";function u(e){return e&&e.__esModule?e:{"default":e}}function n(e){var t=e.focusedOption,u=e.instancePrefix,n=(e.labelKey,e.onFocus),s=e.onSelect,i=e.optionClassName,r=e.optionComponent,l=e.optionRenderer,p=e.options,d=e.valueArray,c=e.valueKey,f=e.onOptionRef,h=r;return p.map(function(e,r){var p=d&&d.indexOf(e)>-1,E=e===t,y=(0,o["default"])(i,{"Select-option":!0,"is-selected":p,"is-focused":E,"is-disabled":e.disabled});return a["default"].createElement(h,{className:y,instancePrefix:u,isDisabled:e.disabled,isFocused:E,isSelected:p,key:"option-"+r+"-"+e[c],onFocus:n,onSelect:s,option:e,optionIndex:r,ref:function(e){f(e,E)}},l(e,r))})}var s="undefined"!=typeof window?window.classNames:"undefined"!=typeof e?e.classNames:null,o=u(s),i="undefined"!=typeof window?window.React:"undefined"!=typeof e?e.React:null,a=u(i);t.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],10:[function(e,t,u){"use strict";var n=[{base:"A",letters:/[\u0041\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F]/g},{base:"AA",letters:/[\uA732]/g},{base:"AE",letters:/[\u00C6\u01FC\u01E2]/g},{base:"AO",letters:/[\uA734]/g},{base:"AU",letters:/[\uA736]/g},{base:"AV",letters:/[\uA738\uA73A]/g},{base:"AY",letters:/[\uA73C]/g},{base:"B",letters:/[\u0042\u24B7\uFF22\u1E02\u1E04\u1E06\u0243\u0182\u0181]/g},{base:"C",letters:/[\u0043\u24B8\uFF23\u0106\u0108\u010A\u010C\u00C7\u1E08\u0187\u023B\uA73E]/g},{base:"D",letters:/[\u0044\u24B9\uFF24\u1E0A\u010E\u1E0C\u1E10\u1E12\u1E0E\u0110\u018B\u018A\u0189\uA779]/g},{base:"DZ",letters:/[\u01F1\u01C4]/g},{base:"Dz",letters:/[\u01F2\u01C5]/g},{base:"E",letters:/[\u0045\u24BA\uFF25\u00C8\u00C9\u00CA\u1EC0\u1EBE\u1EC4\u1EC2\u1EBC\u0112\u1E14\u1E16\u0114\u0116\u00CB\u1EBA\u011A\u0204\u0206\u1EB8\u1EC6\u0228\u1E1C\u0118\u1E18\u1E1A\u0190\u018E]/g},{base:"F",letters:/[\u0046\u24BB\uFF26\u1E1E\u0191\uA77B]/g},{base:"G",letters:/[\u0047\u24BC\uFF27\u01F4\u011C\u1E20\u011E\u0120\u01E6\u0122\u01E4\u0193\uA7A0\uA77D\uA77E]/g},{base:"H",letters:/[\u0048\u24BD\uFF28\u0124\u1E22\u1E26\u021E\u1E24\u1E28\u1E2A\u0126\u2C67\u2C75\uA78D]/g},{base:"I",letters:/[\u0049\u24BE\uFF29\u00CC\u00CD\u00CE\u0128\u012A\u012C\u0130\u00CF\u1E2E\u1EC8\u01CF\u0208\u020A\u1ECA\u012E\u1E2C\u0197]/g},{base:"J",letters:/[\u004A\u24BF\uFF2A\u0134\u0248]/g},{base:"K",letters:/[\u004B\u24C0\uFF2B\u1E30\u01E8\u1E32\u0136\u1E34\u0198\u2C69\uA740\uA742\uA744\uA7A2]/g},{base:"L",letters:/[\u004C\u24C1\uFF2C\u013F\u0139\u013D\u1E36\u1E38\u013B\u1E3C\u1E3A\u0141\u023D\u2C62\u2C60\uA748\uA746\uA780]/g},{base:"LJ",letters:/[\u01C7]/g},{base:"Lj",letters:/[\u01C8]/g},{base:"M",letters:/[\u004D\u24C2\uFF2D\u1E3E\u1E40\u1E42\u2C6E\u019C]/g},{base:"N",letters:/[\u004E\u24C3\uFF2E\u01F8\u0143\u00D1\u1E44\u0147\u1E46\u0145\u1E4A\u1E48\u0220\u019D\uA790\uA7A4]/g},{base:"NJ",letters:/[\u01CA]/g},{base:"Nj",letters:/[\u01CB]/g},{base:"O",letters:/[\u004F\u24C4\uFF2F\u00D2\u00D3\u00D4\u1ED2\u1ED0\u1ED6\u1ED4\u00D5\u1E4C\u022C\u1E4E\u014C\u1E50\u1E52\u014E\u022E\u0230\u00D6\u022A\u1ECE\u0150\u01D1\u020C\u020E\u01A0\u1EDC\u1EDA\u1EE0\u1EDE\u1EE2\u1ECC\u1ED8\u01EA\u01EC\u00D8\u01FE\u0186\u019F\uA74A\uA74C]/g},{base:"OI",letters:/[\u01A2]/g},{base:"OO",letters:/[\uA74E]/g},{base:"OU",letters:/[\u0222]/g},{base:"P",letters:/[\u0050\u24C5\uFF30\u1E54\u1E56\u01A4\u2C63\uA750\uA752\uA754]/g},{base:"Q",letters:/[\u0051\u24C6\uFF31\uA756\uA758\u024A]/g},{base:"R",letters:/[\u0052\u24C7\uFF32\u0154\u1E58\u0158\u0210\u0212\u1E5A\u1E5C\u0156\u1E5E\u024C\u2C64\uA75A\uA7A6\uA782]/g},{base:"S",letters:/[\u0053\u24C8\uFF33\u1E9E\u015A\u1E64\u015C\u1E60\u0160\u1E66\u1E62\u1E68\u0218\u015E\u2C7E\uA7A8\uA784]/g},{base:"T",letters:/[\u0054\u24C9\uFF34\u1E6A\u0164\u1E6C\u021A\u0162\u1E70\u1E6E\u0166\u01AC\u01AE\u023E\uA786]/g},{base:"TZ",letters:/[\uA728]/g},{base:"U",letters:/[\u0055\u24CA\uFF35\u00D9\u00DA\u00DB\u0168\u1E78\u016A\u1E7A\u016C\u00DC\u01DB\u01D7\u01D5\u01D9\u1EE6\u016E\u0170\u01D3\u0214\u0216\u01AF\u1EEA\u1EE8\u1EEE\u1EEC\u1EF0\u1EE4\u1E72\u0172\u1E76\u1E74\u0244]/g},{base:"V",letters:/[\u0056\u24CB\uFF36\u1E7C\u1E7E\u01B2\uA75E\u0245]/g},{base:"VY",letters:/[\uA760]/g},{base:"W",letters:/[\u0057\u24CC\uFF37\u1E80\u1E82\u0174\u1E86\u1E84\u1E88\u2C72]/g},{base:"X",letters:/[\u0058\u24CD\uFF38\u1E8A\u1E8C]/g},{base:"Y",letters:/[\u0059\u24CE\uFF39\u1EF2\u00DD\u0176\u1EF8\u0232\u1E8E\u0178\u1EF6\u1EF4\u01B3\u024E\u1EFE]/g},{base:"Z",letters:/[\u005A\u24CF\uFF3A\u0179\u1E90\u017B\u017D\u1E92\u1E94\u01B5\u0224\u2C7F\u2C6B\uA762]/g},{base:"a",letters:/[\u0061\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250]/g},{base:"aa",letters:/[\uA733]/g},{base:"ae",letters:/[\u00E6\u01FD\u01E3]/g},{base:"ao",letters:/[\uA735]/g},{base:"au",letters:/[\uA737]/g},{base:"av",letters:/[\uA739\uA73B]/g},{base:"ay",letters:/[\uA73D]/g},{base:"b",letters:/[\u0062\u24D1\uFF42\u1E03\u1E05\u1E07\u0180\u0183\u0253]/g},{base:"c",letters:/[\u0063\u24D2\uFF43\u0107\u0109\u010B\u010D\u00E7\u1E09\u0188\u023C\uA73F\u2184]/g},{base:"d",letters:/[\u0064\u24D3\uFF44\u1E0B\u010F\u1E0D\u1E11\u1E13\u1E0F\u0111\u018C\u0256\u0257\uA77A]/g},{base:"dz",letters:/[\u01F3\u01C6]/g},{base:"e",letters:/[\u0065\u24D4\uFF45\u00E8\u00E9\u00EA\u1EC1\u1EBF\u1EC5\u1EC3\u1EBD\u0113\u1E15\u1E17\u0115\u0117\u00EB\u1EBB\u011B\u0205\u0207\u1EB9\u1EC7\u0229\u1E1D\u0119\u1E19\u1E1B\u0247\u025B\u01DD]/g},{base:"f",letters:/[\u0066\u24D5\uFF46\u1E1F\u0192\uA77C]/g},{base:"g",letters:/[\u0067\u24D6\uFF47\u01F5\u011D\u1E21\u011F\u0121\u01E7\u0123\u01E5\u0260\uA7A1\u1D79\uA77F]/g},{base:"h",letters:/[\u0068\u24D7\uFF48\u0125\u1E23\u1E27\u021F\u1E25\u1E29\u1E2B\u1E96\u0127\u2C68\u2C76\u0265]/g},{base:"hv",letters:/[\u0195]/g},{base:"i",letters:/[\u0069\u24D8\uFF49\u00EC\u00ED\u00EE\u0129\u012B\u012D\u00EF\u1E2F\u1EC9\u01D0\u0209\u020B\u1ECB\u012F\u1E2D\u0268\u0131]/g},{base:"j",letters:/[\u006A\u24D9\uFF4A\u0135\u01F0\u0249]/g},{base:"k",letters:/[\u006B\u24DA\uFF4B\u1E31\u01E9\u1E33\u0137\u1E35\u0199\u2C6A\uA741\uA743\uA745\uA7A3]/g},{base:"l",letters:/[\u006C\u24DB\uFF4C\u0140\u013A\u013E\u1E37\u1E39\u013C\u1E3D\u1E3B\u017F\u0142\u019A\u026B\u2C61\uA749\uA781\uA747]/g},{base:"lj",letters:/[\u01C9]/g},{base:"m",letters:/[\u006D\u24DC\uFF4D\u1E3F\u1E41\u1E43\u0271\u026F]/g},{base:"n",letters:/[\u006E\u24DD\uFF4E\u01F9\u0144\u00F1\u1E45\u0148\u1E47\u0146\u1E4B\u1E49\u019E\u0272\u0149\uA791\uA7A5]/g},{base:"nj",letters:/[\u01CC]/g},{base:"o",letters:/[\u006F\u24DE\uFF4F\u00F2\u00F3\u00F4\u1ED3\u1ED1\u1ED7\u1ED5\u00F5\u1E4D\u022D\u1E4F\u014D\u1E51\u1E53\u014F\u022F\u0231\u00F6\u022B\u1ECF\u0151\u01D2\u020D\u020F\u01A1\u1EDD\u1EDB\u1EE1\u1EDF\u1EE3\u1ECD\u1ED9\u01EB\u01ED\u00F8\u01FF\u0254\uA74B\uA74D\u0275]/g},{base:"oi",letters:/[\u01A3]/g},{base:"ou",letters:/[\u0223]/g},{base:"oo",letters:/[\uA74F]/g},{base:"p",letters:/[\u0070\u24DF\uFF50\u1E55\u1E57\u01A5\u1D7D\uA751\uA753\uA755]/g},{base:"q",letters:/[\u0071\u24E0\uFF51\u024B\uA757\uA759]/g},{base:"r",letters:/[\u0072\u24E1\uFF52\u0155\u1E59\u0159\u0211\u0213\u1E5B\u1E5D\u0157\u1E5F\u024D\u027D\uA75B\uA7A7\uA783]/g},{base:"s",letters:/[\u0073\u24E2\uFF53\u00DF\u015B\u1E65\u015D\u1E61\u0161\u1E67\u1E63\u1E69\u0219\u015F\u023F\uA7A9\uA785\u1E9B]/g},{base:"t",letters:/[\u0074\u24E3\uFF54\u1E6B\u1E97\u0165\u1E6D\u021B\u0163\u1E71\u1E6F\u0167\u01AD\u0288\u2C66\uA787]/g},{base:"tz",letters:/[\uA729]/g},{base:"u",letters:/[\u0075\u24E4\uFF55\u00F9\u00FA\u00FB\u0169\u1E79\u016B\u1E7B\u016D\u00FC\u01DC\u01D8\u01D6\u01DA\u1EE7\u016F\u0171\u01D4\u0215\u0217\u01B0\u1EEB\u1EE9\u1EEF\u1EED\u1EF1\u1EE5\u1E73\u0173\u1E77\u1E75\u0289]/g},{base:"v",letters:/[\u0076\u24E5\uFF56\u1E7D\u1E7F\u028B\uA75F\u028C]/g},{base:"vy",letters:/[\uA761]/g},{base:"w",letters:/[\u0077\u24E6\uFF57\u1E81\u1E83\u0175\u1E87\u1E85\u1E98\u1E89\u2C73]/g},{base:"x",letters:/[\u0078\u24E7\uFF58\u1E8B\u1E8D]/g},{base:"y",letters:/[\u0079\u24E8\uFF59\u1EF3\u00FD\u0177\u1EF9\u0233\u1E8F\u00FF\u1EF7\u1E99\u1EF5\u01B4\u024F\u1EFF]/g},{base:"z",letters:/[\u007A\u24E9\uFF5A\u017A\u1E91\u017C\u017E\u1E93\u1E95\u01B6\u0225\u0240\u2C6C\uA763]/g}];t.exports=function(e){for(var t=0;t>> (32 - b)); - }, + function normalizeValue(value) { + if (typeof value !== 'string') { + value = String(value) + } + return value + } - // Bit-wise rotation right - rotr: function(n, b) { - return (n << (32 - b)) | (n >>> b); - }, + // Build a destructive iterator for the value list + function iteratorFor(items) { + var iterator = { + next: function() { + var value = items.shift() + return {done: value === undefined, value: value} + } + } - // Swap big-endian to little-endian and vice versa - endian: function(n) { - // If number given, swap endian - if (n.constructor == Number) { - return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00; + if (support.iterable) { + iterator[Symbol.iterator] = function() { + return iterator } + } - // Else, assume array and swap all items - for (var i = 0; i < n.length; i++) - n[i] = crypt.endian(n[i]); - return n; - }, + return iterator + } - // Generate an array of any length of random bytes - randomBytes: function(n) { - for (var bytes = []; n > 0; n--) - bytes.push(Math.floor(Math.random() * 256)); - return bytes; - }, + function Headers(headers) { + this.map = {} - // Convert a byte array to big-endian 32-bit words - bytesToWords: function(bytes) { - for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) - words[b >>> 5] |= bytes[i] << (24 - b % 32); - return words; - }, + if (headers instanceof Headers) { + headers.forEach(function(value, name) { + this.append(name, value) + }, this) - // Convert big-endian 32-bit words to a byte array - wordsToBytes: function(words) { - for (var bytes = [], b = 0; b < words.length * 32; b += 8) - bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); - return bytes; - }, + } else if (headers) { + Object.getOwnPropertyNames(headers).forEach(function(name) { + this.append(name, headers[name]) + }, this) + } + } - // Convert a byte array to a hex string - bytesToHex: function(bytes) { - for (var hex = [], i = 0; i < bytes.length; i++) { - hex.push((bytes[i] >>> 4).toString(16)); - hex.push((bytes[i] & 0xF).toString(16)); - } - return hex.join(''); - }, + Headers.prototype.append = function(name, value) { + name = normalizeName(name) + value = normalizeValue(value) + var list = this.map[name] + if (!list) { + list = [] + this.map[name] = list + } + list.push(value) + } - // Convert a hex string to a byte array - hexToBytes: function(hex) { - for (var bytes = [], c = 0; c < hex.length; c += 2) - bytes.push(parseInt(hex.substr(c, 2), 16)); - return bytes; - }, + Headers.prototype['delete'] = function(name) { + delete this.map[normalizeName(name)] + } - // Convert a byte array to a base-64 string - bytesToBase64: function(bytes) { - for (var base64 = [], i = 0; i < bytes.length; i += 3) { - var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; - for (var j = 0; j < 4; j++) - if (i * 8 + j * 6 <= bytes.length * 8) - base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); - else - base64.push('='); - } - return base64.join(''); - }, + Headers.prototype.get = function(name) { + var values = this.map[normalizeName(name)] + return values ? values[0] : null + } - // Convert a base-64 string to a byte array - base64ToBytes: function(base64) { - // Remove non-base-64 characters - base64 = base64.replace(/[^A-Z0-9+\/]/ig, ''); + Headers.prototype.getAll = function(name) { + return this.map[normalizeName(name)] || [] + } - for (var bytes = [], i = 0, imod4 = 0; i < base64.length; - imod4 = ++i % 4) { - if (imod4 == 0) continue; - bytes.push(((base64map.indexOf(base64.charAt(i - 1)) - & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) - | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); - } - return bytes; - } - }; + Headers.prototype.has = function(name) { + return this.map.hasOwnProperty(normalizeName(name)) + } - module.exports = crypt; -})(); + Headers.prototype.set = function(name, value) { + this.map[normalizeName(name)] = [normalizeValue(value)] + } -},{}],18:[function(require,module,exports){ -'use strict'; -module.exports = !!(typeof window !== 'undefined' && window.document && window.document.createElement); -},{}],19:[function(require,module,exports){ -'use strict'; + Headers.prototype.forEach = function(callback, thisArg) { + Object.getOwnPropertyNames(this.map).forEach(function(name) { + this.map[name].forEach(function(value) { + callback.call(thisArg, value, name, this) + }, this) + }, this) + } -var canUseDOM = require('./inDOM'); + Headers.prototype.keys = function() { + var items = [] + this.forEach(function(value, name) { items.push(name) }) + return iteratorFor(items) + } -var size; + Headers.prototype.values = function() { + var items = [] + this.forEach(function(value) { items.push(value) }) + return iteratorFor(items) + } -module.exports = function (recalc) { - if (!size || recalc) { - if (canUseDOM) { - var scrollDiv = document.createElement('div'); + Headers.prototype.entries = function() { + var items = [] + this.forEach(function(value, name) { items.push([name, value]) }) + return iteratorFor(items) + } - scrollDiv.style.position = 'absolute'; - scrollDiv.style.top = '-9999px'; - scrollDiv.style.width = '50px'; - scrollDiv.style.height = '50px'; - scrollDiv.style.overflow = 'scroll'; + if (support.iterable) { + Headers.prototype[Symbol.iterator] = Headers.prototype.entries + } - document.body.appendChild(scrollDiv); - size = scrollDiv.offsetWidth - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); + function consumed(body) { + if (body.bodyUsed) { + return Promise.reject(new TypeError('Already read')) } + body.bodyUsed = true } - return size; -}; -},{"./inDOM":18}],20:[function(require,module,exports){ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @typechecks - * - */ + function fileReaderReady(reader) { + return new Promise(function(resolve, reject) { + reader.onload = function() { + resolve(reader.result) + } + reader.onerror = function() { + reject(reader.error) + } + }) + } -/*eslint-disable no-self-compare */ + function readBlobAsArrayBuffer(blob) { + var reader = new FileReader() + reader.readAsArrayBuffer(blob) + return fileReaderReady(reader) + } -'use strict'; + function readBlobAsText(blob) { + var reader = new FileReader() + reader.readAsText(blob) + return fileReaderReady(reader) + } -var hasOwnProperty = Object.prototype.hasOwnProperty; + function Body() { + this.bodyUsed = false -/** - * inlined Object.is polyfill to avoid requiring consumers ship their own - * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is - */ -function is(x, y) { - // SameValue algorithm - if (x === y) { - // Steps 1-5, 7-10 - // Steps 6.b-6.e: +0 != -0 - return x !== 0 || 1 / x === 1 / y; - } else { - // Step 6.a: NaN == NaN - return x !== x && y !== y; - } -} + this._initBody = function(body) { + this._bodyInit = body + if (typeof body === 'string') { + this._bodyText = body + } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { + this._bodyBlob = body + } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { + this._bodyFormData = body + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this._bodyText = body.toString() + } else if (!body) { + this._bodyText = '' + } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) { + // Only support ArrayBuffers for POST method. + // Receiving ArrayBuffers happens via Blobs, instead. + } else { + throw new Error('unsupported BodyInit type') + } -/** - * Performs equality by iterating through keys on an object and returning false - * when any key has values which are not strictly equal between the arguments. - * Returns true when the values of all keys are strictly equal. - */ -function shallowEqual(objA, objB) { - if (is(objA, objB)) { - return true; - } + if (!this.headers.get('content-type')) { + if (typeof body === 'string') { + this.headers.set('content-type', 'text/plain;charset=UTF-8') + } else if (this._bodyBlob && this._bodyBlob.type) { + this.headers.set('content-type', this._bodyBlob.type) + } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { + this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8') + } + } + } - if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { - return false; - } + if (support.blob) { + this.blob = function() { + var rejected = consumed(this) + if (rejected) { + return rejected + } - var keysA = Object.keys(objA); - var keysB = Object.keys(objB); + if (this._bodyBlob) { + return Promise.resolve(this._bodyBlob) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as blob') + } else { + return Promise.resolve(new Blob([this._bodyText])) + } + } - if (keysA.length !== keysB.length) { - return false; - } + this.arrayBuffer = function() { + return this.blob().then(readBlobAsArrayBuffer) + } - // Test for A's keys different from B. - for (var i = 0; i < keysA.length; i++) { - if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { - return false; + this.text = function() { + var rejected = consumed(this) + if (rejected) { + return rejected + } + + if (this._bodyBlob) { + return readBlobAsText(this._bodyBlob) + } else if (this._bodyFormData) { + throw new Error('could not read FormData body as text') + } else { + return Promise.resolve(this._bodyText) + } + } + } else { + this.text = function() { + var rejected = consumed(this) + return rejected ? rejected : Promise.resolve(this._bodyText) + } } - } - return true; -} + if (support.formData) { + this.formData = function() { + return this.text().then(decode) + } + } -module.exports = shallowEqual; -},{}],21:[function(require,module,exports){ -/*! - * Determine if an object is a Buffer - * - * @author Feross Aboukhadijeh - * @license MIT - */ + this.json = function() { + return this.text().then(JSON.parse) + } -// The _isBuffer check is for Safari 5-7 support, because it's missing -// Object.prototype.constructor. Remove this eventually -module.exports = function (obj) { - return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) -} + return this + } -function isBuffer (obj) { - return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) -} + // HTTP methods whose capitalization should be normalized + var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'] -// For Node v0.10 support. Remove this eventually. -function isSlowBuffer (obj) { - return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) -} + function normalizeMethod(method) { + var upcased = method.toUpperCase() + return (methods.indexOf(upcased) > -1) ? upcased : method + } -},{}],22:[function(require,module,exports){ -module.exports = function() { - var mediaQuery; - if (typeof window !== "undefined" && window !== null) { - mediaQuery = "(-webkit-min-device-pixel-ratio: 1.25), (min--moz-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 5/4), (min-resolution: 1.25dppx)"; - if (window.devicePixelRatio > 1.25) { - return true; + function Request(input, options) { + options = options || {} + var body = options.body + if (Request.prototype.isPrototypeOf(input)) { + if (input.bodyUsed) { + throw new TypeError('Already read') + } + this.url = input.url + this.credentials = input.credentials + if (!options.headers) { + this.headers = new Headers(input.headers) + } + this.method = input.method + this.mode = input.mode + if (!body) { + body = input._bodyInit + input.bodyUsed = true + } + } else { + this.url = input } - if (window.matchMedia && window.matchMedia(mediaQuery).matches) { - return true; + + this.credentials = options.credentials || this.credentials || 'omit' + if (options.headers || !this.headers) { + this.headers = new Headers(options.headers) + } + this.method = normalizeMethod(options.method || this.method || 'GET') + this.mode = options.mode || this.mode || null + this.referrer = null + + if ((this.method === 'GET' || this.method === 'HEAD') && body) { + throw new TypeError('Body not allowed for GET or HEAD requests') } + this._initBody(body) } - return false; -}; -},{}],23:[function(require,module,exports){ -// the whatwg-fetch polyfill installs the fetch() function -// on the global object (window or self) -// -// Return that as the export for use in Webpack, Browserify etc. -require('whatwg-fetch'); -module.exports = self.fetch.bind(self); + Request.prototype.clone = function() { + return new Request(this) + } -},{"whatwg-fetch":83}],24:[function(require,module,exports){ -(function(){ - var crypt = require('crypt'), - utf8 = require('charenc').utf8, - isBuffer = require('is-buffer'), - bin = require('charenc').bin, - - // The core - md5 = function (message, options) { - // Convert to byte array - if (message.constructor == String) - if (options && options.encoding === 'binary') - message = bin.stringToBytes(message); - else - message = utf8.stringToBytes(message); - else if (isBuffer(message)) - message = Array.prototype.slice.call(message, 0); - else if (!Array.isArray(message)) - message = message.toString(); - // else, assume byte array already - - var m = crypt.bytesToWords(message), - l = message.length * 8, - a = 1732584193, - b = -271733879, - c = -1732584194, - d = 271733878; - - // Swap endian - for (var i = 0; i < m.length; i++) { - m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | - ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; - } - - // Padding - m[l >>> 5] |= 0x80 << (l % 32); - m[(((l + 64) >>> 9) << 4) + 14] = l; + function decode(body) { + var form = new FormData() + body.trim().split('&').forEach(function(bytes) { + if (bytes) { + var split = bytes.split('=') + var name = split.shift().replace(/\+/g, ' ') + var value = split.join('=').replace(/\+/g, ' ') + form.append(decodeURIComponent(name), decodeURIComponent(value)) + } + }) + return form + } + + function headers(xhr) { + var head = new Headers() + var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\n') + pairs.forEach(function(header) { + var split = header.trim().split(':') + var key = split.shift().trim() + var value = split.join(':').trim() + head.append(key, value) + }) + return head + } + + Body.call(Request.prototype) + + function Response(bodyInit, options) { + if (!options) { + options = {} + } + + this.type = 'default' + this.status = options.status + this.ok = this.status >= 200 && this.status < 300 + this.statusText = options.statusText + this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers) + this.url = options.url || '' + this._initBody(bodyInit) + } + + Body.call(Response.prototype) + + Response.prototype.clone = function() { + return new Response(this._bodyInit, { + status: this.status, + statusText: this.statusText, + headers: new Headers(this.headers), + url: this.url + }) + } + + Response.error = function() { + var response = new Response(null, {status: 0, statusText: ''}) + response.type = 'error' + return response + } + + var redirectStatuses = [301, 302, 303, 307, 308] + + Response.redirect = function(url, status) { + if (redirectStatuses.indexOf(status) === -1) { + throw new RangeError('Invalid status code') + } + + return new Response(null, {status: status, headers: {location: url}}) + } + + self.Headers = Headers + self.Request = Request + self.Response = Response + + self.fetch = function(input, init) { + return new Promise(function(resolve, reject) { + var request + if (Request.prototype.isPrototypeOf(input) && !init) { + request = input + } else { + request = new Request(input, init) + } + + var xhr = new XMLHttpRequest() + + function responseURL() { + if ('responseURL' in xhr) { + return xhr.responseURL + } + + // Avoid security warnings on getResponseHeader when not allowed by CORS + if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) { + return xhr.getResponseHeader('X-Request-URL') + } + + return + } + + xhr.onload = function() { + var options = { + status: xhr.status, + statusText: xhr.statusText, + headers: headers(xhr), + url: responseURL() + } + var body = 'response' in xhr ? xhr.response : xhr.responseText + resolve(new Response(body, options)) + } + + xhr.onerror = function() { + reject(new TypeError('Network request failed')) + } + + xhr.ontimeout = function() { + reject(new TypeError('Network request failed')) + } + + xhr.open(request.method, request.url, true) + + if (request.credentials === 'include') { + xhr.withCredentials = true + } + + if ('responseType' in xhr && support.blob) { + xhr.responseType = 'blob' + } + + request.headers.forEach(function(value, name) { + xhr.setRequestHeader(name, value) + }) + + xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit) + }) + } + self.fetch.polyfill = true +})(typeof self !== 'undefined' ? self : this); + +},{}],18:[function(require,module,exports){ +module.exports = require('react/lib/shallowCompare'); +},{"react/lib/shallowCompare":82}],19:[function(require,module,exports){ +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e){ + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e){ + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],20:[function(require,module,exports){ +'use strict'; + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + +var _react = require('react'); + +var _react2 = _interopRequireDefault(_react); + +var _md = require('md5'); + +var _md2 = _interopRequireDefault(_md); + +var _queryString = require('query-string'); + +var _queryString2 = _interopRequireDefault(_queryString); + +var _isRetina = require('is-retina'); + +var _isRetina2 = _interopRequireDefault(_isRetina); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +var Gravatar = function (_React$Component) { + _inherits(Gravatar, _React$Component); + + function Gravatar() { + _classCallCheck(this, Gravatar); + + return _possibleConstructorReturn(this, Object.getPrototypeOf(Gravatar).apply(this, arguments)); + } + + _createClass(Gravatar, [{ + key: 'render', + value: function render() { + var base = '//www.gravatar.com/avatar/'; + + var query = _queryString2.default.stringify({ + s: this.props.size, + r: this.props.rating, + d: this.props.default + }); + + var retinaQuery = _queryString2.default.stringify({ + s: this.props.size * 2, + r: this.props.rating, + d: this.props.default + }); + + // Gravatar service currently trims and lowercases all registered emails + var formattedEmail = ('' + this.props.email).trim().toLowerCase(); + + var hash = void 0; + if (this.props.md5) { + hash = this.props.md5; + } else if (typeof this.props.email === 'string') { + hash = (0, _md2.default)(formattedEmail); + } else { + console.warn('Gravatar image can not be fetched. Either the "email" or "md5" prop must be specified.'); + return _react2.default.createElement('script', null); + } + + var src = '' + base + hash + '?' + query; + var retinaSrc = '' + base + hash + '?' + retinaQuery; + + var modernBrowser = true; // server-side, we render for modern browsers + + if (typeof window !== 'undefined') { + // this is not NodeJS + modernBrowser = 'srcset' in document.createElement('img'); + } + + var className = 'react-gravatar'; + if (this.props.className) { + className = className + ' ' + this.props.className; + } + + // Clone this.props and then delete Component specific props so we can + // spread the rest into the img. + + var rest = _objectWithoutProperties(this.props, []); + + delete rest.md5; + delete rest.email; + delete rest.rating; + delete rest.size; + delete rest.style; + delete rest.className; + delete rest.default; + if (!modernBrowser && (0, _isRetina2.default)()) { + return _react2.default.createElement('img', _extends({ + alt: 'Gravatar for ' + formattedEmail, + style: this.props.style, + src: retinaSrc, + height: this.props.size, + width: this.props.size + }, rest, { + className: className + })); + } + return _react2.default.createElement('img', _extends({ + alt: 'Gravatar for ' + formattedEmail, + style: this.props.style, + src: src, + srcSet: retinaSrc + ' 2x', + height: this.props.size, + width: this.props.size + }, rest, { + className: className + })); + } + }]); + + return Gravatar; +}(_react2.default.Component); + +Gravatar.displayName = 'Gravatar'; +Gravatar.propTypes = { + email: _react2.default.PropTypes.string, + md5: _react2.default.PropTypes.string, + size: _react2.default.PropTypes.number, + rating: _react2.default.PropTypes.string, + default: _react2.default.PropTypes.string, + className: _react2.default.PropTypes.string, + style: _react2.default.PropTypes.object +}; +Gravatar.defaultProps = { + size: 50, + rating: 'g', + default: 'retro' +}; + + +module.exports = Gravatar; +},{"is-retina":21,"md5":22,"query-string":26,"react":undefined}],21:[function(require,module,exports){ +module.exports = function() { + var mediaQuery; + if (typeof window !== "undefined" && window !== null) { + mediaQuery = "(-webkit-min-device-pixel-ratio: 1.25), (min--moz-device-pixel-ratio: 1.25), (-o-min-device-pixel-ratio: 5/4), (min-resolution: 1.25dppx)"; + if (window.devicePixelRatio > 1.25) { + return true; + } + if (window.matchMedia && window.matchMedia(mediaQuery).matches) { + return true; + } + } + return false; +}; + +},{}],22:[function(require,module,exports){ +(function(){ + var crypt = require('crypt'), + utf8 = require('charenc').utf8, + isBuffer = require('is-buffer'), + bin = require('charenc').bin, + + // The core + md5 = function (message, options) { + // Convert to byte array + if (message.constructor == String) + if (options && options.encoding === 'binary') + message = bin.stringToBytes(message); + else + message = utf8.stringToBytes(message); + else if (isBuffer(message)) + message = Array.prototype.slice.call(message, 0); + else if (!Array.isArray(message)) + message = message.toString(); + // else, assume byte array already + + var m = crypt.bytesToWords(message), + l = message.length * 8, + a = 1732584193, + b = -271733879, + c = -1732584194, + d = 271733878; + + // Swap endian + for (var i = 0; i < m.length; i++) { + m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | + ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; + } + + // Padding + m[l >>> 5] |= 0x80 << (l % 32); + m[(((l + 64) >>> 9) << 4) + 14] = l; // Method shortcuts var FF = md5._ff, @@ -1677,310 +2188,163 @@ module.exports = self.fetch.bind(self); })(); -},{"charenc":16,"crypt":17,"is-buffer":21}],25:[function(require,module,exports){ -'use strict'; -/* eslint-disable no-unused-vars */ -var hasOwnProperty = Object.prototype.hasOwnProperty; -var propIsEnumerable = Object.prototype.propertyIsEnumerable; - -function toObject(val) { - if (val === null || val === undefined) { - throw new TypeError('Object.assign cannot be called with null or undefined'); - } - - return Object(val); -} - -function shouldUseNative() { - try { - if (!Object.assign) { - return false; - } - - // Detect buggy property enumeration order in older V8 versions. - - // https://bugs.chromium.org/p/v8/issues/detail?id=4118 - var test1 = new String('abc'); // eslint-disable-line - test1[5] = 'de'; - if (Object.getOwnPropertyNames(test1)[0] === '5') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test2 = {}; - for (var i = 0; i < 10; i++) { - test2['_' + String.fromCharCode(i)] = i; - } - var order2 = Object.getOwnPropertyNames(test2).map(function (n) { - return test2[n]; - }); - if (order2.join('') !== '0123456789') { - return false; - } - - // https://bugs.chromium.org/p/v8/issues/detail?id=3056 - var test3 = {}; - 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { - test3[letter] = letter; - }); - if (Object.keys(Object.assign({}, test3)).join('') !== - 'abcdefghijklmnopqrst') { - return false; - } - - return true; - } catch (e) { - // We don't expect any of the above to throw, but better to be safe. - return false; - } -} - -module.exports = shouldUseNative() ? Object.assign : function (target, source) { - var from; - var to = toObject(target); - var symbols; - - for (var s = 1; s < arguments.length; s++) { - from = Object(arguments[s]); - - for (var key in from) { - if (hasOwnProperty.call(from, key)) { - to[key] = from[key]; - } - } - - if (Object.getOwnPropertySymbols) { - symbols = Object.getOwnPropertySymbols(from); - for (var i = 0; i < symbols.length; i++) { - if (propIsEnumerable.call(from, symbols[i])) { - to[symbols[i]] = from[symbols[i]]; - } - } - } - } - - return to; -}; +},{"charenc":23,"crypt":24,"is-buffer":25}],23:[function(require,module,exports){ +var charenc = { + // UTF-8 encoding + utf8: { + // Convert a string to a byte array + stringToBytes: function(str) { + return charenc.bin.stringToBytes(unescape(encodeURIComponent(str))); + }, -},{}],26:[function(require,module,exports){ -(function (process){ -// Generated by CoffeeScript 1.7.1 -(function() { - var getNanoSeconds, hrtime, loadTime; + // Convert a byte array to a string + bytesToString: function(bytes) { + return decodeURIComponent(escape(charenc.bin.bytesToString(bytes))); + } + }, - if ((typeof performance !== "undefined" && performance !== null) && performance.now) { - module.exports = function() { - return performance.now(); - }; - } else if ((typeof process !== "undefined" && process !== null) && process.hrtime) { - module.exports = function() { - return (getNanoSeconds() - loadTime) / 1e6; - }; - hrtime = process.hrtime; - getNanoSeconds = function() { - var hr; - hr = hrtime(); - return hr[0] * 1e9 + hr[1]; - }; - loadTime = getNanoSeconds(); - } else if (Date.now) { - module.exports = function() { - return Date.now() - loadTime; - }; - loadTime = Date.now(); - } else { - module.exports = function() { - return new Date().getTime() - loadTime; - }; - loadTime = new Date().getTime(); + // Binary encoding + bin: { + // Convert a string to a byte array + stringToBytes: function(str) { + for (var bytes = [], i = 0; i < str.length; i++) + bytes.push(str.charCodeAt(i) & 0xFF); + return bytes; + }, + + // Convert a byte array to a string + bytesToString: function(bytes) { + for (var str = [], i = 0; i < bytes.length; i++) + str.push(String.fromCharCode(bytes[i])); + return str.join(''); + } } +}; -}).call(this); +module.exports = charenc; -}).call(this,require('_process')) -},{"_process":27}],27:[function(require,module,exports){ -// shim for using process in browser -var process = module.exports = {}; +},{}],24:[function(require,module,exports){ +(function() { + var base64map + = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', -// cached from whatever global is present so that test runners that stub it -// don't break things. But we need to wrap it in a try catch in case it is -// wrapped in strict mode code which doesn't define any globals. It's inside a -// function because try/catches deoptimize in certain engines. + crypt = { + // Bit-wise rotation left + rotl: function(n, b) { + return (n << b) | (n >>> (32 - b)); + }, -var cachedSetTimeout; -var cachedClearTimeout; + // Bit-wise rotation right + rotr: function(n, b) { + return (n << (32 - b)) | (n >>> b); + }, -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - //normal enviroments in sane situations - return setTimeout(fun, 0); - } - // if setTimeout wasn't available but was latter defined - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error - return cachedSetTimeout.call(this, fun, 0); - } - } + // Swap big-endian to little-endian and vice versa + endian: function(n) { + // If number given, swap endian + if (n.constructor == Number) { + return crypt.rotl(n, 8) & 0x00FF00FF | crypt.rotl(n, 24) & 0xFF00FF00; + } + // Else, assume array and swap all items + for (var i = 0; i < n.length; i++) + n[i] = crypt.endian(n[i]); + return n; + }, -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - //normal enviroments in sane situations - return clearTimeout(marker); - } - // if clearTimeout wasn't available but was latter defined - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - // when when somebody has screwed with setTimeout but no I.E. maddness - return cachedClearTimeout(marker); - } catch (e){ - try { - // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally - return cachedClearTimeout.call(null, marker); - } catch (e){ - // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. - // Some versions of I.E. have different rules for clearTimeout vs setTimeout - return cachedClearTimeout.call(this, marker); - } - } + // Generate an array of any length of random bytes + randomBytes: function(n) { + for (var bytes = []; n > 0; n--) + bytes.push(Math.floor(Math.random() * 256)); + return bytes; + }, + // Convert a byte array to big-endian 32-bit words + bytesToWords: function(bytes) { + for (var words = [], i = 0, b = 0; i < bytes.length; i++, b += 8) + words[b >>> 5] |= bytes[i] << (24 - b % 32); + return words; + }, + // Convert big-endian 32-bit words to a byte array + wordsToBytes: function(words) { + for (var bytes = [], b = 0; b < words.length * 32; b += 8) + bytes.push((words[b >>> 5] >>> (24 - b % 32)) & 0xFF); + return bytes; + }, -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; + // Convert a byte array to a hex string + bytesToHex: function(bytes) { + for (var hex = [], i = 0; i < bytes.length; i++) { + hex.push((bytes[i] >>> 4).toString(16)); + hex.push((bytes[i] & 0xF).toString(16)); + } + return hex.join(''); + }, -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} + // Convert a hex string to a byte array + hexToBytes: function(hex) { + for (var bytes = [], c = 0; c < hex.length; c += 2) + bytes.push(parseInt(hex.substr(c, 2), 16)); + return bytes; + }, -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; + // Convert a byte array to a base-64 string + bytesToBase64: function(bytes) { + for (var base64 = [], i = 0; i < bytes.length; i += 3) { + var triplet = (bytes[i] << 16) | (bytes[i + 1] << 8) | bytes[i + 2]; + for (var j = 0; j < 4; j++) + if (i * 8 + j * 6 <= bytes.length * 8) + base64.push(base64map.charAt((triplet >>> 6 * (3 - j)) & 0x3F)); + else + base64.push('='); + } + return base64.join(''); + }, - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} + // Convert a base-64 string to a byte array + base64ToBytes: function(base64) { + // Remove non-base-64 characters + base64 = base64.replace(/[^A-Z0-9+\/]/ig, ''); -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); + for (var bytes = [], i = 0, imod4 = 0; i < base64.length; + imod4 = ++i % 4) { + if (imod4 == 0) continue; + bytes.push(((base64map.indexOf(base64.charAt(i - 1)) + & (Math.pow(2, -2 * imod4 + 8) - 1)) << (imod4 * 2)) + | (base64map.indexOf(base64.charAt(i)) >>> (6 - imod4 * 2))); + } + return bytes; } -}; + }; -// v8 likes predictible objects -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; + module.exports = crypt; +})(); -function noop() {} +},{}],25:[function(require,module,exports){ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; +// The _isBuffer check is for Safari 5-7 support, because it's missing +// Object.prototype.constructor. Remove this eventually +module.exports = function (obj) { + return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer) +} -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; +function isBuffer (obj) { + return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj) +} -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; +// For Node v0.10 support. Remove this eventually. +function isSlowBuffer (obj) { + return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0)) +} -},{}],28:[function(require,module,exports){ +},{}],26:[function(require,module,exports){ 'use strict'; var strictUriEncode = require('strict-uri-encode'); var objectAssign = require('object-assign'); @@ -2080,234 +2444,100 @@ exports.stringify = function (obj, opts) { }).join('&') : ''; }; -},{"object-assign":25,"strict-uri-encode":82}],29:[function(require,module,exports){ -(function (global){ -var now = require('performance-now') - , root = typeof window === 'undefined' ? global : window - , vendors = ['moz', 'webkit'] - , suffix = 'AnimationFrame' - , raf = root['request' + suffix] - , caf = root['cancel' + suffix] || root['cancelRequest' + suffix] - -for(var i = 0; !raf && i < vendors.length; i++) { - raf = root[vendors[i] + 'Request' + suffix] - caf = root[vendors[i] + 'Cancel' + suffix] - || root[vendors[i] + 'CancelRequest' + suffix] -} - -// Some versions of FF have rAF but not cAF -if(!raf || !caf) { - var last = 0 - , id = 0 - , queue = [] - , frameDuration = 1000 / 60 - - raf = function(callback) { - if(queue.length === 0) { - var _now = now() - , next = Math.max(0, frameDuration - (_now - last)) - last = next + _now - setTimeout(function() { - var cp = queue.slice(0) - // Clear queue here to prevent - // callbacks from appending listeners - // to the current frame's queue - queue.length = 0 - for(var i = 0; i < cp.length; i++) { - if(!cp[i].cancelled) { - try{ - cp[i].callback(last) - } catch(e) { - setTimeout(function() { throw e }, 0) - } - } - } - }, Math.round(next)) - } - queue.push({ - handle: ++id, - callback: callback, - cancelled: false - }) - return id - } - - caf = function(handle) { - for(var i = 0; i < queue.length; i++) { - if(queue[i].handle === handle) { - queue[i].cancelled = true - } - } - } -} - -module.exports = function(fn) { - // Wrap in a new function to prevent - // `cancel` potentially being assigned - // to the native rAF function - return raf.call(root, fn) -} -module.exports.cancel = function() { - caf.apply(root, arguments) -} -module.exports.polyfill = function() { - root.requestAnimationFrame = raf - root.cancelAnimationFrame = caf -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"performance-now":26}],30:[function(require,module,exports){ -module.exports = require('react/lib/shallowCompare'); -},{"react/lib/shallowCompare":81}],31:[function(require,module,exports){ +},{"object-assign":27,"strict-uri-encode":28}],27:[function(require,module,exports){ 'use strict'; +/* eslint-disable no-unused-vars */ +var hasOwnProperty = Object.prototype.hasOwnProperty; +var propIsEnumerable = Object.prototype.propertyIsEnumerable; -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _md = require('md5'); - -var _md2 = _interopRequireDefault(_md); - -var _queryString = require('query-string'); - -var _queryString2 = _interopRequireDefault(_queryString); - -var _isRetina = require('is-retina'); - -var _isRetina2 = _interopRequireDefault(_isRetina); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var Gravatar = function (_React$Component) { - _inherits(Gravatar, _React$Component); - - function Gravatar() { - _classCallCheck(this, Gravatar); - - return _possibleConstructorReturn(this, Object.getPrototypeOf(Gravatar).apply(this, arguments)); - } - - _createClass(Gravatar, [{ - key: 'render', - value: function render() { - var base = void 0; - if (this.props.https) { - base = 'https://secure.gravatar.com/avatar/'; - } else { - base = 'http://www.gravatar.com/avatar/'; - } +function toObject(val) { + if (val === null || val === undefined) { + throw new TypeError('Object.assign cannot be called with null or undefined'); + } - var query = _queryString2.default.stringify({ - s: this.props.size, - r: this.props.rating, - d: this.props.default - }); + return Object(val); +} - var retinaQuery = _queryString2.default.stringify({ - s: this.props.size * 2, - r: this.props.rating, - d: this.props.default - }); +function shouldUseNative() { + try { + if (!Object.assign) { + return false; + } - var hash = void 0; - if (this.props.md5) { - hash = this.props.md5; - } else if (this.props.email) { - hash = (0, _md2.default)(this.props.email); - } else { - console.warn('Gravatar image can not be fetched. Either the "email" or "md5" prop must be specified.'); - return _react2.default.createElement('script', null); - } + // Detect buggy property enumeration order in older V8 versions. - var src = '' + base + hash + '?' + query; - var retinaSrc = '' + base + hash + '?' + retinaQuery; + // https://bugs.chromium.org/p/v8/issues/detail?id=4118 + var test1 = new String('abc'); // eslint-disable-line + test1[5] = 'de'; + if (Object.getOwnPropertyNames(test1)[0] === '5') { + return false; + } - var modernBrowser = true; // server-side, we render for modern browsers + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test2 = {}; + for (var i = 0; i < 10; i++) { + test2['_' + String.fromCharCode(i)] = i; + } + var order2 = Object.getOwnPropertyNames(test2).map(function (n) { + return test2[n]; + }); + if (order2.join('') !== '0123456789') { + return false; + } - if (typeof window !== 'undefined') { - // this is not NodeJS - modernBrowser = 'srcset' in document.createElement('img'); - } + // https://bugs.chromium.org/p/v8/issues/detail?id=3056 + var test3 = {}; + 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { + test3[letter] = letter; + }); + if (Object.keys(Object.assign({}, test3)).join('') !== + 'abcdefghijklmnopqrst') { + return false; + } - var className = 'react-gravatar'; - if (this.props.className) { - className = className + ' ' + this.props.className; - } + return true; + } catch (e) { + // We don't expect any of the above to throw, but better to be safe. + return false; + } +} - // Clone this.props and then delete Component specific props so we can - // spread the rest into the img. +module.exports = shouldUseNative() ? Object.assign : function (target, source) { + var from; + var to = toObject(target); + var symbols; - var rest = _objectWithoutProperties(this.props, []); + for (var s = 1; s < arguments.length; s++) { + from = Object(arguments[s]); - delete rest.https; - delete rest.md5; - delete rest.email; - delete rest.rating; - delete rest.size; - delete rest.style; - delete rest.className; - delete rest.default; - if (!modernBrowser && (0, _isRetina2.default)()) { - return _react2.default.createElement('img', _extends({ - alt: 'Gravatar for ' + this.props.email, - style: this.props.style, - src: retinaSrc, - height: this.props.size, - width: this.props.size - }, rest, { - className: className - })); - } - return _react2.default.createElement('img', _extends({ - alt: 'Gravatar for ' + this.props.email, - style: this.props.style, - src: src, - srcSet: retinaSrc + ' 2x', - height: this.props.size, - width: this.props.size - }, rest, { - className: className - })); - } - }]); + for (var key in from) { + if (hasOwnProperty.call(from, key)) { + to[key] = from[key]; + } + } - return Gravatar; -}(_react2.default.Component); + if (Object.getOwnPropertySymbols) { + symbols = Object.getOwnPropertySymbols(from); + for (var i = 0; i < symbols.length; i++) { + if (propIsEnumerable.call(from, symbols[i])) { + to[symbols[i]] = from[symbols[i]]; + } + } + } + } -Gravatar.displayName = 'Gravatar'; -Gravatar.propTypes = { - email: _react2.default.PropTypes.string, - md5: _react2.default.PropTypes.string, - size: _react2.default.PropTypes.number, - rating: _react2.default.PropTypes.string, - https: _react2.default.PropTypes.bool, - default: _react2.default.PropTypes.string, - className: _react2.default.PropTypes.string, - style: _react2.default.PropTypes.object -}; -Gravatar.defaultProps = { - size: 50, - rating: 'g', - https: false, - default: 'retro' + return to; }; +},{}],28:[function(require,module,exports){ +'use strict'; +module.exports = function (str) { + return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { + return '%' + c.charCodeAt(0).toString(16).toUpperCase(); + }); +}; -module.exports = Gravatar; -},{"is-retina":22,"md5":24,"query-string":28,"react":undefined}],32:[function(require,module,exports){ +},{}],29:[function(require,module,exports){ module.exports = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache @@ -2580,7 +2810,7 @@ module.exports = /***/ } /******/ ]); -},{"react":undefined}],33:[function(require,module,exports){ +},{"react":undefined}],30:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -2810,7 +3040,7 @@ VirtualizedSelect.defaultProps = { optionHeight: 35 }; exports.default = VirtualizedSelect; -},{"react":undefined,"react-select":undefined,"react-virtualized":77}],34:[function(require,module,exports){ +},{"react":undefined,"react-select":undefined,"react-virtualized":74}],31:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -2825,9 +3055,9 @@ var _VirtualizedSelect2 = _interopRequireDefault(_VirtualizedSelect); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = _VirtualizedSelect2.default; -},{"./VirtualizedSelect":33}],35:[function(require,module,exports){ -arguments[4][34][0].apply(exports,arguments) -},{"./VirtualizedSelect":34,"dup":34}],36:[function(require,module,exports){ +},{"./VirtualizedSelect":30}],32:[function(require,module,exports){ +arguments[4][31][0].apply(exports,arguments) +},{"./VirtualizedSelect":31,"dup":31}],33:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -2969,7 +3199,7 @@ ArrowKeyStepper.propTypes = { rowCount: _react.PropTypes.number.isRequired }; exports.default = ArrowKeyStepper; -},{"react":undefined,"react-addons-shallow-compare":30}],37:[function(require,module,exports){ +},{"react":undefined,"react-addons-shallow-compare":18}],34:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -2985,7 +3215,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _ArrowKeyStepper3.default; exports.ArrowKeyStepper = _ArrowKeyStepper3.default; -},{"./ArrowKeyStepper":36}],38:[function(require,module,exports){ +},{"./ArrowKeyStepper":33}],35:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -3159,7 +3389,7 @@ AutoSizer.defaultProps = { onResize: function onResize() {} }; exports.default = AutoSizer; -},{"../vendor/detectElementResize":80,"react":undefined,"react-addons-shallow-compare":30}],39:[function(require,module,exports){ +},{"../vendor/detectElementResize":77,"react":undefined,"react-addons-shallow-compare":18}],36:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -3175,7 +3405,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _AutoSizer3.default; exports.AutoSizer = _AutoSizer3.default; -},{"./AutoSizer":38}],40:[function(require,module,exports){ +},{"./AutoSizer":35}],37:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -3489,7 +3719,7 @@ CellMeasurer.propTypes = { width: _react.PropTypes.number }; exports.default = CellMeasurer; -},{"./defaultCellSizeCache":41,"react":undefined,"react-addons-shallow-compare":30,"react-dom":undefined}],41:[function(require,module,exports){ +},{"./defaultCellSizeCache":38,"react":undefined,"react-addons-shallow-compare":18,"react-dom":undefined}],38:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -3587,7 +3817,7 @@ var CellSizeCache = function () { }(); exports.default = CellSizeCache; -},{}],42:[function(require,module,exports){ +},{}],39:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -3608,7 +3838,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _CellMeasurer3.default; exports.CellMeasurer = _CellMeasurer3.default; exports.defaultCellSizeCache = _defaultCellSizeCache3.default; -},{"./CellMeasurer":40,"./defaultCellSizeCache":41}],43:[function(require,module,exports){ +},{"./CellMeasurer":37,"./defaultCellSizeCache":38}],40:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -3930,7 +4160,7 @@ function defaultCellGroupRenderer(_ref5) { return !!renderedCell; }); } -},{"../utils/getUpdatedOffsetForIndex":79,"./CollectionView":44,"./utils/calculateSizeAndPositionData":48,"react":undefined,"react-addons-shallow-compare":30}],44:[function(require,module,exports){ +},{"../utils/getUpdatedOffsetForIndex":76,"./CollectionView":41,"./utils/calculateSizeAndPositionData":45,"react":undefined,"react-addons-shallow-compare":18}],41:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -4606,7 +4836,7 @@ CollectionView.defaultProps = { verticalOverscanSize: 0 }; exports.default = CollectionView; -},{"../utils/createCallbackMemoizer":78,"classnames":undefined,"dom-helpers/util/scrollbarSize":19,"raf":29,"react":undefined,"react-addons-shallow-compare":30}],45:[function(require,module,exports){ +},{"../utils/createCallbackMemoizer":75,"classnames":undefined,"dom-helpers/util/scrollbarSize":79,"raf":80,"react":undefined,"react-addons-shallow-compare":18}],42:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -4677,7 +4907,7 @@ var Section = function () { exports.default = Section; -},{}],46:[function(require,module,exports){ +},{}],43:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -4833,7 +5063,7 @@ var SectionManager = function () { }(); exports.default = SectionManager; -},{"./Section":45}],47:[function(require,module,exports){ +},{"./Section":42}],44:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -4849,7 +5079,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _Collection3.default; exports.Collection = _Collection3.default; -},{"./Collection":43}],48:[function(require,module,exports){ +},{"./Collection":40}],45:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -4897,7 +5127,7 @@ function calculateSizeAndPositionData(_ref) { width: width }; } -},{"../SectionManager":46}],49:[function(require,module,exports){ +},{"../SectionManager":43}],46:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5033,7 +5263,7 @@ ColumnSizer.propTypes = { width: _react.PropTypes.number.isRequired }; exports.default = ColumnSizer; -},{"../Grid":62,"react":undefined,"react-addons-shallow-compare":30}],50:[function(require,module,exports){ +},{"../Grid":59,"react":undefined,"react-addons-shallow-compare":18}],47:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5049,7 +5279,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _ColumnSizer3.default; exports.ColumnSizer = _ColumnSizer3.default; -},{"./ColumnSizer":49}],51:[function(require,module,exports){ +},{"./ColumnSizer":46}],48:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5160,7 +5390,7 @@ Column.propTypes = { width: _react.PropTypes.number.isRequired }; exports.default = Column; -},{"./defaultCellDataGetter":55,"./defaultCellRenderer":56,"./defaultHeaderRenderer":57,"react":undefined}],52:[function(require,module,exports){ +},{"./defaultCellDataGetter":52,"./defaultCellRenderer":53,"./defaultHeaderRenderer":54,"react":undefined}],49:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5824,7 +6054,7 @@ FlexTable.defaultProps = { style: {} }; exports.default = FlexTable; -},{"../Grid":62,"./FlexColumn":51,"./SortDirection":53,"./defaultRowRenderer":58,"classnames":undefined,"react":undefined,"react-addons-shallow-compare":30,"react-dom":undefined}],53:[function(require,module,exports){ +},{"../Grid":59,"./FlexColumn":48,"./SortDirection":50,"./defaultRowRenderer":55,"classnames":undefined,"react":undefined,"react-addons-shallow-compare":18,"react-dom":undefined}],50:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5845,7 +6075,7 @@ var SortDirection = { }; exports.default = SortDirection; -},{}],54:[function(require,module,exports){ +},{}],51:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5893,7 +6123,7 @@ function SortIndicator(_ref) { SortIndicator.propTypes = { sortDirection: _react.PropTypes.oneOf([_SortDirection2.default.ASC, _SortDirection2.default.DESC]) }; -},{"./SortDirection":53,"classnames":undefined,"react":undefined}],55:[function(require,module,exports){ +},{"./SortDirection":50,"classnames":undefined,"react":undefined}],52:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5918,7 +6148,7 @@ function defaultCellDataGetter(_ref) { return rowData[dataKey]; } } -},{}],56:[function(require,module,exports){ +},{}],53:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5944,7 +6174,7 @@ function defaultCellRenderer(_ref) { return String(cellData); } } -},{}],57:[function(require,module,exports){ +},{}],54:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -5993,7 +6223,7 @@ function defaultHeaderRenderer(_ref) { return children; } -},{"./SortIndicator":54,"react":undefined}],58:[function(require,module,exports){ +},{"./SortIndicator":51,"react":undefined}],55:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -6063,7 +6293,7 @@ function defaultRowRenderer(_ref) { columns ); } -},{"react":undefined}],59:[function(require,module,exports){ +},{"react":undefined}],56:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -6114,7 +6344,7 @@ exports.FlexTable = _FlexTable3.default; exports.FlexColumn = _FlexColumn3.default; exports.SortDirection = _SortDirection3.default; exports.SortIndicator = _SortIndicator3.default; -},{"./FlexColumn":51,"./FlexTable":52,"./SortDirection":53,"./SortIndicator":54,"./defaultCellDataGetter":55,"./defaultCellRenderer":56,"./defaultHeaderRenderer":57,"./defaultRowRenderer":58}],60:[function(require,module,exports){ +},{"./FlexColumn":48,"./FlexTable":49,"./SortDirection":50,"./SortIndicator":51,"./defaultCellDataGetter":52,"./defaultCellRenderer":53,"./defaultHeaderRenderer":54,"./defaultRowRenderer":55}],57:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -7156,7 +7386,7 @@ Grid.defaultProps = { tabIndex: 0 }; exports.default = Grid; -},{"../utils/createCallbackMemoizer":78,"./defaultCellRangeRenderer":61,"./utils/ScalingCellSizeAndPositionManager":64,"./utils/calculateSizeAndPositionDataAndUpdateScrollOffset":65,"./utils/getOverscanIndices":66,"./utils/updateScrollIndexHelper":67,"classnames":undefined,"dom-helpers/util/scrollbarSize":19,"raf":29,"react":undefined,"react-addons-shallow-compare":30}],61:[function(require,module,exports){ +},{"../utils/createCallbackMemoizer":75,"./defaultCellRangeRenderer":58,"./utils/ScalingCellSizeAndPositionManager":61,"./utils/calculateSizeAndPositionDataAndUpdateScrollOffset":62,"./utils/getOverscanIndices":63,"./utils/updateScrollIndexHelper":64,"classnames":undefined,"dom-helpers/util/scrollbarSize":79,"raf":80,"react":undefined,"react-addons-shallow-compare":18}],58:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -7259,7 +7489,7 @@ function defaultCellRangeRenderer(_ref) { return renderedCells; } -},{"classnames":undefined,"react":undefined}],62:[function(require,module,exports){ +},{"classnames":undefined,"react":undefined}],59:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -7280,7 +7510,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _Grid3.default; exports.Grid = _Grid3.default; exports.defaultCellRangeRenderer = _defaultCellRangeRenderer3.default; -},{"./Grid":60,"./defaultCellRangeRenderer":61}],63:[function(require,module,exports){ +},{"./Grid":57,"./defaultCellRangeRenderer":58}],60:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -7578,7 +7808,7 @@ var CellSizeAndPositionManager = function () { }(); exports.default = CellSizeAndPositionManager; -},{}],64:[function(require,module,exports){ +},{}],61:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -7795,7 +8025,7 @@ var ScalingCellSizeAndPositionManager = function () { }(); exports.default = ScalingCellSizeAndPositionManager; -},{"./CellSizeAndPositionManager":63}],65:[function(require,module,exports){ +},{"./CellSizeAndPositionManager":60}],62:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -7838,7 +8068,7 @@ function calculateSizeAndPositionDataAndUpdateScrollOffset(_ref) { } } } -},{}],66:[function(require,module,exports){ +},{}],63:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -7885,7 +8115,7 @@ function getOverscanIndices(_ref) { overscanStopIndex: Math.min(cellCount - 1, overscanStopIndex) }; } -},{}],67:[function(require,module,exports){ +},{}],64:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -7942,7 +8172,7 @@ function updateScrollIndexHelper(_ref) { } } } -},{}],68:[function(require,module,exports){ +},{}],65:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -8229,7 +8459,7 @@ function scanForUnloadedRanges(_ref3) { function forceUpdateReactVirtualizedComponent(component) { typeof component.forceUpdateGrid === 'function' ? component.forceUpdateGrid() : component.forceUpdate(); } -},{"../utils/createCallbackMemoizer":78,"react":undefined,"react-addons-shallow-compare":30}],69:[function(require,module,exports){ +},{"../utils/createCallbackMemoizer":75,"react":undefined,"react-addons-shallow-compare":18}],66:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -8245,7 +8475,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _InfiniteLoader3.default; exports.InfiniteLoader = _InfiniteLoader3.default; -},{"./InfiniteLoader":68}],70:[function(require,module,exports){ +},{"./InfiniteLoader":65}],67:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -8346,7 +8576,7 @@ ScrollSync.propTypes = { children: _react.PropTypes.func.isRequired }; exports.default = ScrollSync; -},{"react":undefined,"react-addons-shallow-compare":30}],71:[function(require,module,exports){ +},{"react":undefined,"react-addons-shallow-compare":18}],68:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -8362,7 +8592,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de exports.default = _ScrollSync3.default; exports.ScrollSync = _ScrollSync3.default; -},{"./ScrollSync":70}],72:[function(require,module,exports){ +},{"./ScrollSync":67}],69:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { @@ -8656,1188 +8886,954 @@ VirtualScroll.defaultProps = { style: {} }; exports.default = VirtualScroll; -},{"../Grid":62,"classnames":undefined,"react":undefined,"react-addons-shallow-compare":30}],73:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.VirtualScroll = exports.default = undefined; - -var _VirtualScroll2 = require('./VirtualScroll'); - -var _VirtualScroll3 = _interopRequireDefault(_VirtualScroll2); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _VirtualScroll3.default; -exports.VirtualScroll = _VirtualScroll3.default; -},{"./VirtualScroll":72}],74:[function(require,module,exports){ -'use strict'; - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); - -var _react = require('react'); - -var _react2 = _interopRequireDefault(_react); - -var _reactDom = require('react-dom'); - -var _reactDom2 = _interopRequireDefault(_reactDom); - -var _reactAddonsShallowCompare = require('react-addons-shallow-compare'); - -var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare); - -var _raf = require('raf'); - -var _raf2 = _interopRequireDefault(_raf); - -var _onScroll = require('./utils/onScroll'); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } - -function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } - -function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } - -var WindowScroller = function (_Component) { - _inherits(WindowScroller, _Component); - - function WindowScroller(props) { - _classCallCheck(this, WindowScroller); - - var _this = _possibleConstructorReturn(this, (WindowScroller.__proto__ || Object.getPrototypeOf(WindowScroller)).call(this, props)); - - var height = typeof window !== 'undefined' ? window.innerHeight : 0; - - _this.state = { - isScrolling: false, - height: height, - scrollTop: 0 - }; - - _this._onScrollWindow = _this._onScrollWindow.bind(_this); - _this._onResizeWindow = _this._onResizeWindow.bind(_this); - _this._enablePointerEventsAfterDelayCallback = _this._enablePointerEventsAfterDelayCallback.bind(_this); - return _this; - } - - _createClass(WindowScroller, [{ - key: 'componentDidMount', - value: function componentDidMount() { - var height = this.state.height; - - // Subtract documentElement top to handle edge-case where a user is navigating back (history) from an already-scrolled bage. - // In this case the body's top position will be a negative number and this element's top will be increased (by that amount). - - this._positionFromTop = _reactDom2.default.findDOMNode(this).getBoundingClientRect().top - document.documentElement.getBoundingClientRect().top; - - if (height !== window.innerHeight) { - this.setState({ - height: window.innerHeight - }); - } - - (0, _onScroll.registerScrollListener)(this); - window.addEventListener('resize', this._onResizeWindow, false); - } - }, { - key: 'componentWillUnmount', - value: function componentWillUnmount() { - (0, _onScroll.unregisterScrollListener)(this); - - window.removeEventListener('resize', this._onResizeWindow, false); - } - - /** - * Updates the state during the next animation frame. - * Use this method to avoid multiple renders in a small span of time. - * This helps performance for bursty events (like onScroll). - */ - - }, { - key: '_setNextState', - value: function _setNextState(state) { - var _this2 = this; - - if (this._setNextStateAnimationFrameId) { - _raf2.default.cancel(this._setNextStateAnimationFrameId); - } - - this._setNextStateAnimationFrameId = (0, _raf2.default)(function () { - _this2._setNextStateAnimationFrameId = null; - _this2.setState(state); - }); - } - }, { - key: 'render', - value: function render() { - var children = this.props.children; - var _state = this.state; - var isScrolling = _state.isScrolling; - var scrollTop = _state.scrollTop; - var height = _state.height; - - - return _react2.default.createElement( - 'div', - null, - children({ - height: height, - isScrolling: isScrolling, - scrollTop: scrollTop - }) - ); - } - }, { - key: 'shouldComponentUpdate', - value: function shouldComponentUpdate(nextProps, nextState) { - return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState); - } - }, { - key: '_enablePointerEventsAfterDelayCallback', - value: function _enablePointerEventsAfterDelayCallback() { - this.setState({ - isScrolling: false - }); - } - }, { - key: '_onResizeWindow', - value: function _onResizeWindow(event) { - var onResize = this.props.onResize; - - - var height = window.innerHeight || 0; - - this.setState({ height: height }); - - onResize({ height: height }); - } - }, { - key: '_onScrollWindow', - value: function _onScrollWindow(event) { - var onScroll = this.props.onScroll; - - // In IE10+ scrollY is undefined, so we replace that with the latter - - var scrollY = 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop; - - var scrollTop = Math.max(0, scrollY - this._positionFromTop); - - var state = { - isScrolling: true, - scrollTop: scrollTop - }; - - if (!this.state.isScrolling) { - this.setState(state); - } else { - this._setNextState(state); - } - - onScroll({ scrollTop: scrollTop }); - } - }]); - - return WindowScroller; -}(_react.Component); - -WindowScroller.propTypes = { - /** - * Function respondible for rendering children. - * This function should implement the following signature: - * ({ height, scrollTop }) => PropTypes.element - */ - children: _react.PropTypes.func.isRequired, - - /** Callback to be invoked on-resize: ({ height }) */ - onResize: _react.PropTypes.func.isRequired, - - /** Callback to be invoked on-scroll: ({ scrollTop }) */ - onScroll: _react.PropTypes.func.isRequired -}; -WindowScroller.defaultProps = { - onResize: function onResize() {}, - onScroll: function onScroll() {} -}; -exports.default = WindowScroller; -},{"./utils/onScroll":76,"raf":29,"react":undefined,"react-addons-shallow-compare":30,"react-dom":undefined}],75:[function(require,module,exports){ +},{"../Grid":59,"classnames":undefined,"react":undefined,"react-addons-shallow-compare":18}],70:[function(require,module,exports){ 'use strict'; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.IS_SCROLLING_TIMEOUT = exports.WindowScroller = exports.default = undefined; - -var _WindowScroller2 = require('./WindowScroller'); - -var _WindowScroller3 = _interopRequireDefault(_WindowScroller2); +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.VirtualScroll = exports.default = undefined; -var _onScroll = require('./utils/onScroll'); +var _VirtualScroll2 = require('./VirtualScroll'); -var _onScroll2 = _interopRequireDefault(_onScroll); +var _VirtualScroll3 = _interopRequireDefault(_VirtualScroll2); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -exports.default = _WindowScroller3.default; -exports.WindowScroller = _WindowScroller3.default; -exports.IS_SCROLLING_TIMEOUT = _onScroll2.default; -},{"./WindowScroller":74,"./utils/onScroll":76}],76:[function(require,module,exports){ +exports.default = _VirtualScroll3.default; +exports.VirtualScroll = _VirtualScroll3.default; +},{"./VirtualScroll":69}],71:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); -exports.registerScrollListener = registerScrollListener; -exports.unregisterScrollListener = unregisterScrollListener; -var mountedInstances = []; -var originalBodyPointerEvents = null; -var disablePointerEventsTimeoutId = null; -/** - * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress. - * This improves performance and makes scrolling smoother. - */ -var IS_SCROLLING_TIMEOUT = exports.IS_SCROLLING_TIMEOUT = 150; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); -function enablePointerEventsIfDisabled() { - if (disablePointerEventsTimeoutId) { - disablePointerEventsTimeoutId = null; +var _react = require('react'); - document.body.style.pointerEvents = originalBodyPointerEvents; +var _react2 = _interopRequireDefault(_react); - originalBodyPointerEvents = null; - } -} +var _reactDom = require('react-dom'); -function enablePointerEventsAfterDelayCallback() { - enablePointerEventsIfDisabled(); - mountedInstances.forEach(function (component) { - return component._enablePointerEventsAfterDelayCallback(); - }); -} +var _reactDom2 = _interopRequireDefault(_reactDom); -function enablePointerEventsAfterDelay() { - if (disablePointerEventsTimeoutId) { - clearTimeout(disablePointerEventsTimeoutId); - } +var _reactAddonsShallowCompare = require('react-addons-shallow-compare'); - disablePointerEventsTimeoutId = setTimeout(enablePointerEventsAfterDelayCallback, IS_SCROLLING_TIMEOUT); -} +var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare); -function onScrollWindow(event) { - if (originalBodyPointerEvents == null) { - originalBodyPointerEvents = document.body.style.pointerEvents; +var _raf = require('raf'); - document.body.style.pointerEvents = 'none'; +var _raf2 = _interopRequireDefault(_raf); - enablePointerEventsAfterDelay(); - } - mountedInstances.forEach(function (component) { - return component._onScrollWindow(event); - }); -} +var _onScroll = require('./utils/onScroll'); -function registerScrollListener(component) { - if (!mountedInstances.length) { - window.addEventListener('scroll', onScrollWindow); - } - mountedInstances.push(component); -} +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } -function unregisterScrollListener(component) { - mountedInstances = mountedInstances.filter(function (c) { - return c !== component; - }); - if (!mountedInstances.length) { - window.removeEventListener('scroll', onScrollWindow); - if (disablePointerEventsTimeoutId) { - clearTimeout(disablePointerEventsTimeoutId); - enablePointerEventsIfDisabled(); - } - } -} -},{}],77:[function(require,module,exports){ -'use strict'; +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } -Object.defineProperty(exports, "__esModule", { - value: true -}); +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } -var _ArrowKeyStepper = require('./ArrowKeyStepper'); +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } -Object.defineProperty(exports, 'ArrowKeyStepper', { - enumerable: true, - get: function get() { - return _ArrowKeyStepper.ArrowKeyStepper; - } -}); +var WindowScroller = function (_Component) { + _inherits(WindowScroller, _Component); -var _AutoSizer = require('./AutoSizer'); + function WindowScroller(props) { + _classCallCheck(this, WindowScroller); -Object.defineProperty(exports, 'AutoSizer', { - enumerable: true, - get: function get() { - return _AutoSizer.AutoSizer; - } -}); + var _this = _possibleConstructorReturn(this, (WindowScroller.__proto__ || Object.getPrototypeOf(WindowScroller)).call(this, props)); -var _CellMeasurer = require('./CellMeasurer'); + var height = typeof window !== 'undefined' ? window.innerHeight : 0; -Object.defineProperty(exports, 'CellMeasurer', { - enumerable: true, - get: function get() { - return _CellMeasurer.CellMeasurer; - } -}); -Object.defineProperty(exports, 'defaultCellMeasurerCellSizeCache', { - enumerable: true, - get: function get() { - return _CellMeasurer.defaultCellSizeCache; - } -}); -Object.defineProperty(exports, 'uniformSizeCellMeasurerCellSizeCache', { - enumerable: true, - get: function get() { - return _CellMeasurer.defaultCellSizeCache; + _this.state = { + isScrolling: false, + height: height, + scrollTop: 0 + }; + + _this._onScrollWindow = _this._onScrollWindow.bind(_this); + _this._onResizeWindow = _this._onResizeWindow.bind(_this); + _this._enablePointerEventsAfterDelayCallback = _this._enablePointerEventsAfterDelayCallback.bind(_this); + return _this; } -}); -var _Collection = require('./Collection'); + _createClass(WindowScroller, [{ + key: 'componentDidMount', + value: function componentDidMount() { + var height = this.state.height; -Object.defineProperty(exports, 'Collection', { - enumerable: true, - get: function get() { - return _Collection.Collection; - } -}); + // Subtract documentElement top to handle edge-case where a user is navigating back (history) from an already-scrolled bage. + // In this case the body's top position will be a negative number and this element's top will be increased (by that amount). -var _ColumnSizer = require('./ColumnSizer'); + this._positionFromTop = _reactDom2.default.findDOMNode(this).getBoundingClientRect().top - document.documentElement.getBoundingClientRect().top; -Object.defineProperty(exports, 'ColumnSizer', { - enumerable: true, - get: function get() { - return _ColumnSizer.ColumnSizer; - } -}); + if (height !== window.innerHeight) { + this.setState({ + height: window.innerHeight + }); + } -var _FlexTable = require('./FlexTable'); + (0, _onScroll.registerScrollListener)(this); + window.addEventListener('resize', this._onResizeWindow, false); + } + }, { + key: 'componentWillUnmount', + value: function componentWillUnmount() { + (0, _onScroll.unregisterScrollListener)(this); -Object.defineProperty(exports, 'defaultFlexTableCellDataGetter', { - enumerable: true, - get: function get() { - return _FlexTable.defaultCellDataGetter; - } -}); -Object.defineProperty(exports, 'defaultFlexTableCellRenderer', { - enumerable: true, - get: function get() { - return _FlexTable.defaultCellRenderer; - } -}); -Object.defineProperty(exports, 'defaultFlexTableHeaderRenderer', { - enumerable: true, - get: function get() { - return _FlexTable.defaultHeaderRenderer; - } -}); -Object.defineProperty(exports, 'defaultFlexTableRowRenderer', { - enumerable: true, - get: function get() { - return _FlexTable.defaultRowRenderer; - } -}); -Object.defineProperty(exports, 'FlexTable', { - enumerable: true, - get: function get() { - return _FlexTable.FlexTable; - } -}); -Object.defineProperty(exports, 'FlexColumn', { - enumerable: true, - get: function get() { - return _FlexTable.FlexColumn; - } -}); -Object.defineProperty(exports, 'SortDirection', { - enumerable: true, - get: function get() { - return _FlexTable.SortDirection; - } -}); -Object.defineProperty(exports, 'SortIndicator', { - enumerable: true, - get: function get() { - return _FlexTable.SortIndicator; - } -}); + window.removeEventListener('resize', this._onResizeWindow, false); + } -var _Grid = require('./Grid'); + /** + * Updates the state during the next animation frame. + * Use this method to avoid multiple renders in a small span of time. + * This helps performance for bursty events (like onScroll). + */ -Object.defineProperty(exports, 'defaultCellRangeRenderer', { - enumerable: true, - get: function get() { - return _Grid.defaultCellRangeRenderer; - } -}); -Object.defineProperty(exports, 'Grid', { - enumerable: true, - get: function get() { - return _Grid.Grid; - } -}); + }, { + key: '_setNextState', + value: function _setNextState(state) { + var _this2 = this; + + if (this._setNextStateAnimationFrameId) { + _raf2.default.cancel(this._setNextStateAnimationFrameId); + } + + this._setNextStateAnimationFrameId = (0, _raf2.default)(function () { + _this2._setNextStateAnimationFrameId = null; + _this2.setState(state); + }); + } + }, { + key: 'render', + value: function render() { + var children = this.props.children; + var _state = this.state; + var isScrolling = _state.isScrolling; + var scrollTop = _state.scrollTop; + var height = _state.height; -var _InfiniteLoader = require('./InfiniteLoader'); -Object.defineProperty(exports, 'InfiniteLoader', { - enumerable: true, - get: function get() { - return _InfiniteLoader.InfiniteLoader; - } -}); + return _react2.default.createElement( + 'div', + null, + children({ + height: height, + isScrolling: isScrolling, + scrollTop: scrollTop + }) + ); + } + }, { + key: 'shouldComponentUpdate', + value: function shouldComponentUpdate(nextProps, nextState) { + return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState); + } + }, { + key: '_enablePointerEventsAfterDelayCallback', + value: function _enablePointerEventsAfterDelayCallback() { + this.setState({ + isScrolling: false + }); + } + }, { + key: '_onResizeWindow', + value: function _onResizeWindow(event) { + var onResize = this.props.onResize; -var _ScrollSync = require('./ScrollSync'); -Object.defineProperty(exports, 'ScrollSync', { - enumerable: true, - get: function get() { - return _ScrollSync.ScrollSync; - } -}); + var height = window.innerHeight || 0; -var _VirtualScroll = require('./VirtualScroll'); + this.setState({ height: height }); -Object.defineProperty(exports, 'VirtualScroll', { - enumerable: true, - get: function get() { - return _VirtualScroll.VirtualScroll; - } -}); + onResize({ height: height }); + } + }, { + key: '_onScrollWindow', + value: function _onScrollWindow(event) { + var onScroll = this.props.onScroll; -var _WindowScroller = require('./WindowScroller'); + // In IE10+ scrollY is undefined, so we replace that with the latter -Object.defineProperty(exports, 'WindowScroller', { - enumerable: true, - get: function get() { - return _WindowScroller.WindowScroller; - } -}); -},{"./ArrowKeyStepper":37,"./AutoSizer":39,"./CellMeasurer":42,"./Collection":47,"./ColumnSizer":50,"./FlexTable":59,"./Grid":62,"./InfiniteLoader":69,"./ScrollSync":71,"./VirtualScroll":73,"./WindowScroller":75}],78:[function(require,module,exports){ -'use strict'; + var scrollY = 'scrollY' in window ? window.scrollY : document.documentElement.scrollTop; -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = createCallbackMemoizer; -/** - * Helper utility that updates the specified callback whenever any of the specified indices have changed. - */ -function createCallbackMemoizer() { - var requireAllKeys = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0]; + var scrollTop = Math.max(0, scrollY - this._positionFromTop); - var cachedIndices = {}; + var state = { + isScrolling: true, + scrollTop: scrollTop + }; - return function (_ref) { - var callback = _ref.callback; - var indices = _ref.indices; + if (!this.state.isScrolling) { + this.setState(state); + } else { + this._setNextState(state); + } - var keys = Object.keys(indices); - var allInitialized = !requireAllKeys || keys.every(function (key) { - var value = indices[key]; - return Array.isArray(value) ? value.length > 0 : value >= 0; - }); - var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) { - var cachedValue = cachedIndices[key]; - var value = indices[key]; + onScroll({ scrollTop: scrollTop }); + } + }]); - return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value; - }); + return WindowScroller; +}(_react.Component); - cachedIndices = indices; +WindowScroller.propTypes = { + /** + * Function respondible for rendering children. + * This function should implement the following signature: + * ({ height, scrollTop }) => PropTypes.element + */ + children: _react.PropTypes.func.isRequired, - if (allInitialized && indexChanged) { - callback(indices); - } - }; -} -},{}],79:[function(require,module,exports){ + /** Callback to be invoked on-resize: ({ height }) */ + onResize: _react.PropTypes.func.isRequired, + + /** Callback to be invoked on-scroll: ({ scrollTop }) */ + onScroll: _react.PropTypes.func.isRequired +}; +WindowScroller.defaultProps = { + onResize: function onResize() {}, + onScroll: function onScroll() {} +}; +exports.default = WindowScroller; +},{"./utils/onScroll":73,"raf":80,"react":undefined,"react-addons-shallow-compare":18,"react-dom":undefined}],72:[function(require,module,exports){ 'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); -exports.default = getUpdatedOffsetForIndex; -/** - * Determines a new offset that ensures a certain cell is visible, given the current offset. - * If the cell is already visible then the current offset will be returned. - * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible. - * - * @param align Desired alignment within container; one of "auto" (default), "start", or "end" - * @param cellOffset Offset (x or y) position for cell - * @param cellSize Size (width or height) of cell - * @param containerSize Total size (width or height) of the container - * @param currentOffset Container's current (x or y) offset - * @return Offset to use to ensure the specified cell is visible - */ -function getUpdatedOffsetForIndex(_ref) { - var _ref$align = _ref.align; - var align = _ref$align === undefined ? 'auto' : _ref$align; - var cellOffset = _ref.cellOffset; - var cellSize = _ref.cellSize; - var containerSize = _ref.containerSize; - var currentOffset = _ref.currentOffset; - - var maxOffset = cellOffset; - var minOffset = maxOffset - containerSize + cellSize; +exports.IS_SCROLLING_TIMEOUT = exports.WindowScroller = exports.default = undefined; - switch (align) { - case 'start': - return maxOffset; - case 'end': - return minOffset; - case 'center': - return maxOffset - (containerSize - cellSize) / 2; - default: - return Math.max(minOffset, Math.min(maxOffset, currentOffset)); - } -} -},{}],80:[function(require,module,exports){ -'use strict'; +var _WindowScroller2 = require('./WindowScroller'); -/** -* Detect Element Resize. -* Forked in order to guard against unsafe 'window' and 'document' references. -* -* https://github.com/sdecima/javascript-detect-element-resize -* Sebastian Decima -* -* version: 0.5.3 -**/ +var _WindowScroller3 = _interopRequireDefault(_WindowScroller2); -// Check `document` and `window` in case of server-side rendering -var _window; -if (typeof window !== 'undefined') { - _window = window; -} else if (typeof self !== 'undefined') { - _window = self; -} else { - _window = undefined; -} +var _onScroll = require('./utils/onScroll'); -var attachEvent = typeof document !== 'undefined' && document.attachEvent; -var stylesCreated = false; +var _onScroll2 = _interopRequireDefault(_onScroll); -if (!attachEvent) { - var requestFrame = function () { - var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) { - return _window.setTimeout(fn, 20); - }; - return function (fn) { - return raf(fn); - }; - }(); +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - var cancelFrame = function () { - var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout; - return function (id) { - return cancel(id); - }; - }(); +exports.default = _WindowScroller3.default; +exports.WindowScroller = _WindowScroller3.default; +exports.IS_SCROLLING_TIMEOUT = _onScroll2.default; +},{"./WindowScroller":71,"./utils/onScroll":73}],73:[function(require,module,exports){ +'use strict'; - var resetTriggers = function resetTriggers(element) { - var triggers = element.__resizeTriggers__, - expand = triggers.firstElementChild, - contract = triggers.lastElementChild, - expandChild = expand.firstElementChild; - contract.scrollLeft = contract.scrollWidth; - contract.scrollTop = contract.scrollHeight; - expandChild.style.width = expand.offsetWidth + 1 + 'px'; - expandChild.style.height = expand.offsetHeight + 1 + 'px'; - expand.scrollLeft = expand.scrollWidth; - expand.scrollTop = expand.scrollHeight; - }; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.registerScrollListener = registerScrollListener; +exports.unregisterScrollListener = unregisterScrollListener; +var mountedInstances = []; +var originalBodyPointerEvents = null; +var disablePointerEventsTimeoutId = null; - var checkTriggers = function checkTriggers(element) { - return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height; - }; +/** + * Specifies the number of miliseconds during which to disable pointer events while a scroll is in progress. + * This improves performance and makes scrolling smoother. + */ +var IS_SCROLLING_TIMEOUT = exports.IS_SCROLLING_TIMEOUT = 150; - var scrollListener = function scrollListener(e) { - var element = this; - resetTriggers(this); - if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__); - this.__resizeRAF__ = requestFrame(function () { - if (checkTriggers(element)) { - element.__resizeLast__.width = element.offsetWidth; - element.__resizeLast__.height = element.offsetHeight; - element.__resizeListeners__.forEach(function (fn) { - fn.call(element, e); - }); - } - }); - }; +function enablePointerEventsIfDisabled() { + if (disablePointerEventsTimeoutId) { + disablePointerEventsTimeoutId = null; - /* Detect CSS Animations support to detect element display/re-attach */ - var animation = false, - animationstring = 'animation', - keyframeprefix = '', - animationstartevent = 'animationstart', - domPrefixes = 'Webkit Moz O ms'.split(' '), - startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '), - pfx = ''; - { - var elm = document.createElement('fakeelement'); - if (elm.style.animationName !== undefined) { - animation = true; - } + document.body.style.pointerEvents = originalBodyPointerEvents; - if (animation === false) { - for (var i = 0; i < domPrefixes.length; i++) { - if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) { - pfx = domPrefixes[i]; - animationstring = pfx + 'Animation'; - keyframeprefix = '-' + pfx.toLowerCase() + '-'; - animationstartevent = startEvents[i]; - animation = true; - break; - } - } - } + originalBodyPointerEvents = null; } +} - var animationName = 'resizeanim'; - var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } '; - var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; '; +function enablePointerEventsAfterDelayCallback() { + enablePointerEventsIfDisabled(); + mountedInstances.forEach(function (component) { + return component._enablePointerEventsAfterDelayCallback(); + }); } -var createStyles = function createStyles() { - if (!stylesCreated) { - //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360 - var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }', - head = document.head || document.getElementsByTagName('head')[0], - style = document.createElement('style'); +function enablePointerEventsAfterDelay() { + if (disablePointerEventsTimeoutId) { + clearTimeout(disablePointerEventsTimeoutId); + } - style.type = 'text/css'; - if (style.styleSheet) { - style.styleSheet.cssText = css; - } else { - style.appendChild(document.createTextNode(css)); - } + disablePointerEventsTimeoutId = setTimeout(enablePointerEventsAfterDelayCallback, IS_SCROLLING_TIMEOUT); +} - head.appendChild(style); - stylesCreated = true; - } -}; +function onScrollWindow(event) { + if (originalBodyPointerEvents == null) { + originalBodyPointerEvents = document.body.style.pointerEvents; -var addResizeListener = function addResizeListener(element, fn) { - if (attachEvent) element.attachEvent('onresize', fn);else { - if (!element.__resizeTriggers__) { - if (getComputedStyle(element).position == 'static') element.style.position = 'relative'; - createStyles(); - element.__resizeLast__ = {}; - element.__resizeListeners__ = []; - (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers'; - element.__resizeTriggers__.innerHTML = '
' + '
'; - element.appendChild(element.__resizeTriggers__); - resetTriggers(element); - element.addEventListener('scroll', scrollListener, true); + document.body.style.pointerEvents = 'none'; - /* Listen for a css animation to detect element display/re-attach */ - animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) { - if (e.animationName == animationName) resetTriggers(element); - }); - } - element.__resizeListeners__.push(fn); + enablePointerEventsAfterDelay(); } -}; + mountedInstances.forEach(function (component) { + return component._onScrollWindow(event); + }); +} -var removeResizeListener = function removeResizeListener(element, fn) { - if (attachEvent) element.detachEvent('onresize', fn);else { - element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1); - if (!element.__resizeListeners__.length) { - element.removeEventListener('scroll', scrollListener, true); - element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__); +function registerScrollListener(component) { + if (!mountedInstances.length) { + window.addEventListener('scroll', onScrollWindow); + } + mountedInstances.push(component); +} + +function unregisterScrollListener(component) { + mountedInstances = mountedInstances.filter(function (c) { + return c !== component; + }); + if (!mountedInstances.length) { + window.removeEventListener('scroll', onScrollWindow); + if (disablePointerEventsTimeoutId) { + clearTimeout(disablePointerEventsTimeoutId); + enablePointerEventsIfDisabled(); } } -}; +} +},{}],74:[function(require,module,exports){ +'use strict'; -module.exports = { - addResizeListener: addResizeListener, - removeResizeListener: removeResizeListener -}; -},{}],81:[function(require,module,exports){ -/** - * Copyright 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * -* @providesModule shallowCompare -*/ +Object.defineProperty(exports, "__esModule", { + value: true +}); -'use strict'; +var _ArrowKeyStepper = require('./ArrowKeyStepper'); -var shallowEqual = require('fbjs/lib/shallowEqual'); +Object.defineProperty(exports, 'ArrowKeyStepper', { + enumerable: true, + get: function get() { + return _ArrowKeyStepper.ArrowKeyStepper; + } +}); -/** - * Does a shallow comparison for props and state. - * See ReactComponentWithPureRenderMixin - * See also https://facebook.github.io/react/docs/shallow-compare.html - */ -function shallowCompare(instance, nextProps, nextState) { - return !shallowEqual(instance.props, nextProps) || !shallowEqual(instance.state, nextState); -} +var _AutoSizer = require('./AutoSizer'); -module.exports = shallowCompare; -},{"fbjs/lib/shallowEqual":20}],82:[function(require,module,exports){ -'use strict'; -module.exports = function (str) { - return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { - return '%' + c.charCodeAt(0).toString(16).toUpperCase(); - }); -}; +Object.defineProperty(exports, 'AutoSizer', { + enumerable: true, + get: function get() { + return _AutoSizer.AutoSizer; + } +}); -},{}],83:[function(require,module,exports){ -(function(self) { - 'use strict'; +var _CellMeasurer = require('./CellMeasurer'); - if (self.fetch) { - return +Object.defineProperty(exports, 'CellMeasurer', { + enumerable: true, + get: function get() { + return _CellMeasurer.CellMeasurer; + } +}); +Object.defineProperty(exports, 'defaultCellMeasurerCellSizeCache', { + enumerable: true, + get: function get() { + return _CellMeasurer.defaultCellSizeCache; + } +}); +Object.defineProperty(exports, 'uniformSizeCellMeasurerCellSizeCache', { + enumerable: true, + get: function get() { + return _CellMeasurer.defaultCellSizeCache; } +}); - var support = { - searchParams: 'URLSearchParams' in self, - iterable: 'Symbol' in self && 'iterator' in Symbol, - blob: 'FileReader' in self && 'Blob' in self && (function() { - try { - new Blob() - return true - } catch(e) { - return false - } - })(), - formData: 'FormData' in self, - arrayBuffer: 'ArrayBuffer' in self +var _Collection = require('./Collection'); + +Object.defineProperty(exports, 'Collection', { + enumerable: true, + get: function get() { + return _Collection.Collection; } +}); - function normalizeName(name) { - if (typeof name !== 'string') { - name = String(name) - } - if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) { - throw new TypeError('Invalid character in header field name') - } - return name.toLowerCase() +var _ColumnSizer = require('./ColumnSizer'); + +Object.defineProperty(exports, 'ColumnSizer', { + enumerable: true, + get: function get() { + return _ColumnSizer.ColumnSizer; + } +}); + +var _FlexTable = require('./FlexTable'); + +Object.defineProperty(exports, 'defaultFlexTableCellDataGetter', { + enumerable: true, + get: function get() { + return _FlexTable.defaultCellDataGetter; + } +}); +Object.defineProperty(exports, 'defaultFlexTableCellRenderer', { + enumerable: true, + get: function get() { + return _FlexTable.defaultCellRenderer; + } +}); +Object.defineProperty(exports, 'defaultFlexTableHeaderRenderer', { + enumerable: true, + get: function get() { + return _FlexTable.defaultHeaderRenderer; + } +}); +Object.defineProperty(exports, 'defaultFlexTableRowRenderer', { + enumerable: true, + get: function get() { + return _FlexTable.defaultRowRenderer; + } +}); +Object.defineProperty(exports, 'FlexTable', { + enumerable: true, + get: function get() { + return _FlexTable.FlexTable; + } +}); +Object.defineProperty(exports, 'FlexColumn', { + enumerable: true, + get: function get() { + return _FlexTable.FlexColumn; } - - function normalizeValue(value) { - if (typeof value !== 'string') { - value = String(value) - } - return value +}); +Object.defineProperty(exports, 'SortDirection', { + enumerable: true, + get: function get() { + return _FlexTable.SortDirection; } +}); +Object.defineProperty(exports, 'SortIndicator', { + enumerable: true, + get: function get() { + return _FlexTable.SortIndicator; + } +}); - // Build a destructive iterator for the value list - function iteratorFor(items) { - var iterator = { - next: function() { - var value = items.shift() - return {done: value === undefined, value: value} - } - } - - if (support.iterable) { - iterator[Symbol.iterator] = function() { - return iterator - } - } +var _Grid = require('./Grid'); - return iterator +Object.defineProperty(exports, 'defaultCellRangeRenderer', { + enumerable: true, + get: function get() { + return _Grid.defaultCellRangeRenderer; } +}); +Object.defineProperty(exports, 'Grid', { + enumerable: true, + get: function get() { + return _Grid.Grid; + } +}); - function Headers(headers) { - this.map = {} - - if (headers instanceof Headers) { - headers.forEach(function(value, name) { - this.append(name, value) - }, this) +var _InfiniteLoader = require('./InfiniteLoader'); - } else if (headers) { - Object.getOwnPropertyNames(headers).forEach(function(name) { - this.append(name, headers[name]) - }, this) - } +Object.defineProperty(exports, 'InfiniteLoader', { + enumerable: true, + get: function get() { + return _InfiniteLoader.InfiniteLoader; } +}); - Headers.prototype.append = function(name, value) { - name = normalizeName(name) - value = normalizeValue(value) - var list = this.map[name] - if (!list) { - list = [] - this.map[name] = list - } - list.push(value) - } +var _ScrollSync = require('./ScrollSync'); - Headers.prototype['delete'] = function(name) { - delete this.map[normalizeName(name)] +Object.defineProperty(exports, 'ScrollSync', { + enumerable: true, + get: function get() { + return _ScrollSync.ScrollSync; } +}); - Headers.prototype.get = function(name) { - var values = this.map[normalizeName(name)] - return values ? values[0] : null - } +var _VirtualScroll = require('./VirtualScroll'); - Headers.prototype.getAll = function(name) { - return this.map[normalizeName(name)] || [] +Object.defineProperty(exports, 'VirtualScroll', { + enumerable: true, + get: function get() { + return _VirtualScroll.VirtualScroll; } +}); - Headers.prototype.has = function(name) { - return this.map.hasOwnProperty(normalizeName(name)) - } +var _WindowScroller = require('./WindowScroller'); - Headers.prototype.set = function(name, value) { - this.map[normalizeName(name)] = [normalizeValue(value)] +Object.defineProperty(exports, 'WindowScroller', { + enumerable: true, + get: function get() { + return _WindowScroller.WindowScroller; } +}); +},{"./ArrowKeyStepper":34,"./AutoSizer":36,"./CellMeasurer":39,"./Collection":44,"./ColumnSizer":47,"./FlexTable":56,"./Grid":59,"./InfiniteLoader":66,"./ScrollSync":68,"./VirtualScroll":70,"./WindowScroller":72}],75:[function(require,module,exports){ +'use strict'; - Headers.prototype.forEach = function(callback, thisArg) { - Object.getOwnPropertyNames(this.map).forEach(function(name) { - this.map[name].forEach(function(value) { - callback.call(thisArg, value, name, this) - }, this) - }, this) - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = createCallbackMemoizer; +/** + * Helper utility that updates the specified callback whenever any of the specified indices have changed. + */ +function createCallbackMemoizer() { + var requireAllKeys = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0]; - Headers.prototype.keys = function() { - var items = [] - this.forEach(function(value, name) { items.push(name) }) - return iteratorFor(items) - } + var cachedIndices = {}; - Headers.prototype.values = function() { - var items = [] - this.forEach(function(value) { items.push(value) }) - return iteratorFor(items) - } + return function (_ref) { + var callback = _ref.callback; + var indices = _ref.indices; - Headers.prototype.entries = function() { - var items = [] - this.forEach(function(value, name) { items.push([name, value]) }) - return iteratorFor(items) - } + var keys = Object.keys(indices); + var allInitialized = !requireAllKeys || keys.every(function (key) { + var value = indices[key]; + return Array.isArray(value) ? value.length > 0 : value >= 0; + }); + var indexChanged = keys.length !== Object.keys(cachedIndices).length || keys.some(function (key) { + var cachedValue = cachedIndices[key]; + var value = indices[key]; - if (support.iterable) { - Headers.prototype[Symbol.iterator] = Headers.prototype.entries - } + return Array.isArray(value) ? cachedValue.join(',') !== value.join(',') : cachedValue !== value; + }); - function consumed(body) { - if (body.bodyUsed) { - return Promise.reject(new TypeError('Already read')) + cachedIndices = indices; + + if (allInitialized && indexChanged) { + callback(indices); } - body.bodyUsed = true - } + }; +} +},{}],76:[function(require,module,exports){ +'use strict'; - function fileReaderReady(reader) { - return new Promise(function(resolve, reject) { - reader.onload = function() { - resolve(reader.result) - } - reader.onerror = function() { - reject(reader.error) - } - }) - } +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = getUpdatedOffsetForIndex; +/** + * Determines a new offset that ensures a certain cell is visible, given the current offset. + * If the cell is already visible then the current offset will be returned. + * If the current offset is too great or small, it will be adjusted just enough to ensure the specified index is visible. + * + * @param align Desired alignment within container; one of "auto" (default), "start", or "end" + * @param cellOffset Offset (x or y) position for cell + * @param cellSize Size (width or height) of cell + * @param containerSize Total size (width or height) of the container + * @param currentOffset Container's current (x or y) offset + * @return Offset to use to ensure the specified cell is visible + */ +function getUpdatedOffsetForIndex(_ref) { + var _ref$align = _ref.align; + var align = _ref$align === undefined ? 'auto' : _ref$align; + var cellOffset = _ref.cellOffset; + var cellSize = _ref.cellSize; + var containerSize = _ref.containerSize; + var currentOffset = _ref.currentOffset; - function readBlobAsArrayBuffer(blob) { - var reader = new FileReader() - reader.readAsArrayBuffer(blob) - return fileReaderReady(reader) - } + var maxOffset = cellOffset; + var minOffset = maxOffset - containerSize + cellSize; - function readBlobAsText(blob) { - var reader = new FileReader() - reader.readAsText(blob) - return fileReaderReady(reader) + switch (align) { + case 'start': + return maxOffset; + case 'end': + return minOffset; + case 'center': + return maxOffset - (containerSize - cellSize) / 2; + default: + return Math.max(minOffset, Math.min(maxOffset, currentOffset)); } +} +},{}],77:[function(require,module,exports){ +'use strict'; - function Body() { - this.bodyUsed = false +/** +* Detect Element Resize. +* Forked in order to guard against unsafe 'window' and 'document' references. +* +* https://github.com/sdecima/javascript-detect-element-resize +* Sebastian Decima +* +* version: 0.5.3 +**/ - this._initBody = function(body) { - this._bodyInit = body - if (typeof body === 'string') { - this._bodyText = body - } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { - this._bodyBlob = body - } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { - this._bodyFormData = body - } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { - this._bodyText = body.toString() - } else if (!body) { - this._bodyText = '' - } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) { - // Only support ArrayBuffers for POST method. - // Receiving ArrayBuffers happens via Blobs, instead. - } else { - throw new Error('unsupported BodyInit type') - } +// Check `document` and `window` in case of server-side rendering +var _window; +if (typeof window !== 'undefined') { + _window = window; +} else if (typeof self !== 'undefined') { + _window = self; +} else { + _window = undefined; +} - if (!this.headers.get('content-type')) { - if (typeof body === 'string') { - this.headers.set('content-type', 'text/plain;charset=UTF-8') - } else if (this._bodyBlob && this._bodyBlob.type) { - this.headers.set('content-type', this._bodyBlob.type) - } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { - this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8') - } - } - } +var attachEvent = typeof document !== 'undefined' && document.attachEvent; +var stylesCreated = false; - if (support.blob) { - this.blob = function() { - var rejected = consumed(this) - if (rejected) { - return rejected - } +if (!attachEvent) { + var requestFrame = function () { + var raf = _window.requestAnimationFrame || _window.mozRequestAnimationFrame || _window.webkitRequestAnimationFrame || function (fn) { + return _window.setTimeout(fn, 20); + }; + return function (fn) { + return raf(fn); + }; + }(); - if (this._bodyBlob) { - return Promise.resolve(this._bodyBlob) - } else if (this._bodyFormData) { - throw new Error('could not read FormData body as blob') - } else { - return Promise.resolve(new Blob([this._bodyText])) - } - } + var cancelFrame = function () { + var cancel = _window.cancelAnimationFrame || _window.mozCancelAnimationFrame || _window.webkitCancelAnimationFrame || _window.clearTimeout; + return function (id) { + return cancel(id); + }; + }(); - this.arrayBuffer = function() { - return this.blob().then(readBlobAsArrayBuffer) - } + var resetTriggers = function resetTriggers(element) { + var triggers = element.__resizeTriggers__, + expand = triggers.firstElementChild, + contract = triggers.lastElementChild, + expandChild = expand.firstElementChild; + contract.scrollLeft = contract.scrollWidth; + contract.scrollTop = contract.scrollHeight; + expandChild.style.width = expand.offsetWidth + 1 + 'px'; + expandChild.style.height = expand.offsetHeight + 1 + 'px'; + expand.scrollLeft = expand.scrollWidth; + expand.scrollTop = expand.scrollHeight; + }; - this.text = function() { - var rejected = consumed(this) - if (rejected) { - return rejected - } + var checkTriggers = function checkTriggers(element) { + return element.offsetWidth != element.__resizeLast__.width || element.offsetHeight != element.__resizeLast__.height; + }; - if (this._bodyBlob) { - return readBlobAsText(this._bodyBlob) - } else if (this._bodyFormData) { - throw new Error('could not read FormData body as text') - } else { - return Promise.resolve(this._bodyText) - } - } - } else { - this.text = function() { - var rejected = consumed(this) - return rejected ? rejected : Promise.resolve(this._bodyText) + var scrollListener = function scrollListener(e) { + var element = this; + resetTriggers(this); + if (this.__resizeRAF__) cancelFrame(this.__resizeRAF__); + this.__resizeRAF__ = requestFrame(function () { + if (checkTriggers(element)) { + element.__resizeLast__.width = element.offsetWidth; + element.__resizeLast__.height = element.offsetHeight; + element.__resizeListeners__.forEach(function (fn) { + fn.call(element, e); + }); } - } + }); + }; - if (support.formData) { - this.formData = function() { - return this.text().then(decode) - } + /* Detect CSS Animations support to detect element display/re-attach */ + var animation = false, + animationstring = 'animation', + keyframeprefix = '', + animationstartevent = 'animationstart', + domPrefixes = 'Webkit Moz O ms'.split(' '), + startEvents = 'webkitAnimationStart animationstart oAnimationStart MSAnimationStart'.split(' '), + pfx = ''; + { + var elm = document.createElement('fakeelement'); + if (elm.style.animationName !== undefined) { + animation = true; } - this.json = function() { - return this.text().then(JSON.parse) + if (animation === false) { + for (var i = 0; i < domPrefixes.length; i++) { + if (elm.style[domPrefixes[i] + 'AnimationName'] !== undefined) { + pfx = domPrefixes[i]; + animationstring = pfx + 'Animation'; + keyframeprefix = '-' + pfx.toLowerCase() + '-'; + animationstartevent = startEvents[i]; + animation = true; + break; + } + } } - - return this } - // HTTP methods whose capitalization should be normalized - var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'] + var animationName = 'resizeanim'; + var animationKeyframes = '@' + keyframeprefix + 'keyframes ' + animationName + ' { from { opacity: 0; } to { opacity: 0; } } '; + var animationStyle = keyframeprefix + 'animation: 1ms ' + animationName + '; '; +} - function normalizeMethod(method) { - var upcased = method.toUpperCase() - return (methods.indexOf(upcased) > -1) ? upcased : method - } +var createStyles = function createStyles() { + if (!stylesCreated) { + //opacity:0 works around a chrome bug https://code.google.com/p/chromium/issues/detail?id=286360 + var css = (animationKeyframes ? animationKeyframes : '') + '.resize-triggers { ' + (animationStyle ? animationStyle : '') + 'visibility: hidden; opacity: 0; } ' + '.resize-triggers, .resize-triggers > div, .contract-trigger:before { content: \" \"; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }', + head = document.head || document.getElementsByTagName('head')[0], + style = document.createElement('style'); - function Request(input, options) { - options = options || {} - var body = options.body - if (Request.prototype.isPrototypeOf(input)) { - if (input.bodyUsed) { - throw new TypeError('Already read') - } - this.url = input.url - this.credentials = input.credentials - if (!options.headers) { - this.headers = new Headers(input.headers) - } - this.method = input.method - this.mode = input.mode - if (!body) { - body = input._bodyInit - input.bodyUsed = true - } + style.type = 'text/css'; + if (style.styleSheet) { + style.styleSheet.cssText = css; } else { - this.url = input + style.appendChild(document.createTextNode(css)); } - this.credentials = options.credentials || this.credentials || 'omit' - if (options.headers || !this.headers) { - this.headers = new Headers(options.headers) - } - this.method = normalizeMethod(options.method || this.method || 'GET') - this.mode = options.mode || this.mode || null - this.referrer = null + head.appendChild(style); + stylesCreated = true; + } +}; - if ((this.method === 'GET' || this.method === 'HEAD') && body) { - throw new TypeError('Body not allowed for GET or HEAD requests') +var addResizeListener = function addResizeListener(element, fn) { + if (attachEvent) element.attachEvent('onresize', fn);else { + if (!element.__resizeTriggers__) { + if (getComputedStyle(element).position == 'static') element.style.position = 'relative'; + createStyles(); + element.__resizeLast__ = {}; + element.__resizeListeners__ = []; + (element.__resizeTriggers__ = document.createElement('div')).className = 'resize-triggers'; + element.__resizeTriggers__.innerHTML = '
' + '
'; + element.appendChild(element.__resizeTriggers__); + resetTriggers(element); + element.addEventListener('scroll', scrollListener, true); + + /* Listen for a css animation to detect element display/re-attach */ + animationstartevent && element.__resizeTriggers__.addEventListener(animationstartevent, function (e) { + if (e.animationName == animationName) resetTriggers(element); + }); } - this._initBody(body) + element.__resizeListeners__.push(fn); } +}; - Request.prototype.clone = function() { - return new Request(this) +var removeResizeListener = function removeResizeListener(element, fn) { + if (attachEvent) element.detachEvent('onresize', fn);else { + element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1); + if (!element.__resizeListeners__.length) { + element.removeEventListener('scroll', scrollListener, true); + element.__resizeTriggers__ = !element.removeChild(element.__resizeTriggers__); + } } +}; - function decode(body) { - var form = new FormData() - body.trim().split('&').forEach(function(bytes) { - if (bytes) { - var split = bytes.split('=') - var name = split.shift().replace(/\+/g, ' ') - var value = split.join('=').replace(/\+/g, ' ') - form.append(decodeURIComponent(name), decodeURIComponent(value)) - } - }) - return form - } +module.exports = { + addResizeListener: addResizeListener, + removeResizeListener: removeResizeListener +}; +},{}],78:[function(require,module,exports){ +'use strict'; +module.exports = !!(typeof window !== 'undefined' && window.document && window.document.createElement); +},{}],79:[function(require,module,exports){ +'use strict'; - function headers(xhr) { - var head = new Headers() - var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\n') - pairs.forEach(function(header) { - var split = header.trim().split(':') - var key = split.shift().trim() - var value = split.join(':').trim() - head.append(key, value) - }) - return head - } +var canUseDOM = require('./inDOM'); - Body.call(Request.prototype) +var size; - function Response(bodyInit, options) { - if (!options) { - options = {} +module.exports = function (recalc) { + if (!size || recalc) { + if (canUseDOM) { + var scrollDiv = document.createElement('div'); + + scrollDiv.style.position = 'absolute'; + scrollDiv.style.top = '-9999px'; + scrollDiv.style.width = '50px'; + scrollDiv.style.height = '50px'; + scrollDiv.style.overflow = 'scroll'; + + document.body.appendChild(scrollDiv); + size = scrollDiv.offsetWidth - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); } - - this.type = 'default' - this.status = options.status - this.ok = this.status >= 200 && this.status < 300 - this.statusText = options.statusText - this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers) - this.url = options.url || '' - this._initBody(bodyInit) } - Body.call(Response.prototype) + return size; +}; +},{"./inDOM":78}],80:[function(require,module,exports){ +(function (global){ +var now = require('performance-now') + , root = typeof window === 'undefined' ? global : window + , vendors = ['moz', 'webkit'] + , suffix = 'AnimationFrame' + , raf = root['request' + suffix] + , caf = root['cancel' + suffix] || root['cancelRequest' + suffix] - Response.prototype.clone = function() { - return new Response(this._bodyInit, { - status: this.status, - statusText: this.statusText, - headers: new Headers(this.headers), - url: this.url +for(var i = 0; !raf && i < vendors.length; i++) { + raf = root[vendors[i] + 'Request' + suffix] + caf = root[vendors[i] + 'Cancel' + suffix] + || root[vendors[i] + 'CancelRequest' + suffix] +} + +// Some versions of FF have rAF but not cAF +if(!raf || !caf) { + var last = 0 + , id = 0 + , queue = [] + , frameDuration = 1000 / 60 + + raf = function(callback) { + if(queue.length === 0) { + var _now = now() + , next = Math.max(0, frameDuration - (_now - last)) + last = next + _now + setTimeout(function() { + var cp = queue.slice(0) + // Clear queue here to prevent + // callbacks from appending listeners + // to the current frame's queue + queue.length = 0 + for(var i = 0; i < cp.length; i++) { + if(!cp[i].cancelled) { + try{ + cp[i].callback(last) + } catch(e) { + setTimeout(function() { throw e }, 0) + } + } + } + }, Math.round(next)) + } + queue.push({ + handle: ++id, + callback: callback, + cancelled: false }) + return id } - Response.error = function() { - var response = new Response(null, {status: 0, statusText: ''}) - response.type = 'error' - return response + caf = function(handle) { + for(var i = 0; i < queue.length; i++) { + if(queue[i].handle === handle) { + queue[i].cancelled = true + } + } } +} - var redirectStatuses = [301, 302, 303, 307, 308] +module.exports = function(fn) { + // Wrap in a new function to prevent + // `cancel` potentially being assigned + // to the native rAF function + return raf.call(root, fn) +} +module.exports.cancel = function() { + caf.apply(root, arguments) +} +module.exports.polyfill = function() { + root.requestAnimationFrame = raf + root.cancelAnimationFrame = caf +} - Response.redirect = function(url, status) { - if (redirectStatuses.indexOf(status) === -1) { - throw new RangeError('Invalid status code') - } +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"performance-now":81}],81:[function(require,module,exports){ +(function (process){ +// Generated by CoffeeScript 1.7.1 +(function() { + var getNanoSeconds, hrtime, loadTime; - return new Response(null, {status: status, headers: {location: url}}) + if ((typeof performance !== "undefined" && performance !== null) && performance.now) { + module.exports = function() { + return performance.now(); + }; + } else if ((typeof process !== "undefined" && process !== null) && process.hrtime) { + module.exports = function() { + return (getNanoSeconds() - loadTime) / 1e6; + }; + hrtime = process.hrtime; + getNanoSeconds = function() { + var hr; + hr = hrtime(); + return hr[0] * 1e9 + hr[1]; + }; + loadTime = getNanoSeconds(); + } else if (Date.now) { + module.exports = function() { + return Date.now() - loadTime; + }; + loadTime = Date.now(); + } else { + module.exports = function() { + return new Date().getTime() - loadTime; + }; + loadTime = new Date().getTime(); } - self.Headers = Headers - self.Request = Request - self.Response = Response +}).call(this); - self.fetch = function(input, init) { - return new Promise(function(resolve, reject) { - var request - if (Request.prototype.isPrototypeOf(input) && !init) { - request = input - } else { - request = new Request(input, init) - } +}).call(this,require('_process')) +},{"_process":19}],82:[function(require,module,exports){ +/** + * Copyright 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * +* @providesModule shallowCompare +*/ - var xhr = new XMLHttpRequest() +'use strict'; - function responseURL() { - if ('responseURL' in xhr) { - return xhr.responseURL - } +var shallowEqual = require('fbjs/lib/shallowEqual'); - // Avoid security warnings on getResponseHeader when not allowed by CORS - if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) { - return xhr.getResponseHeader('X-Request-URL') - } +/** + * Does a shallow comparison for props and state. + * See ReactComponentWithPureRenderMixin + * See also https://facebook.github.io/react/docs/shallow-compare.html + */ +function shallowCompare(instance, nextProps, nextState) { + return !shallowEqual(instance.props, nextProps) || !shallowEqual(instance.state, nextState); +} - return - } +module.exports = shallowCompare; +},{"fbjs/lib/shallowEqual":83}],83:[function(require,module,exports){ +/** + * Copyright (c) 2013-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + * + * @typechecks + * + */ - xhr.onload = function() { - var options = { - status: xhr.status, - statusText: xhr.statusText, - headers: headers(xhr), - url: responseURL() - } - var body = 'response' in xhr ? xhr.response : xhr.responseText - resolve(new Response(body, options)) - } +/*eslint-disable no-self-compare */ - xhr.onerror = function() { - reject(new TypeError('Network request failed')) - } +'use strict'; - xhr.ontimeout = function() { - reject(new TypeError('Network request failed')) - } +var hasOwnProperty = Object.prototype.hasOwnProperty; - xhr.open(request.method, request.url, true) +/** + * inlined Object.is polyfill to avoid requiring consumers ship their own + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is + */ +function is(x, y) { + // SameValue algorithm + if (x === y) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + // Added the nonzero y check to make Flow happy, but it is redundant + return x !== 0 || y !== 0 || 1 / x === 1 / y; + } else { + // Step 6.a: NaN == NaN + return x !== x && y !== y; + } +} - if (request.credentials === 'include') { - xhr.withCredentials = true - } +/** + * Performs equality by iterating through keys on an object and returning false + * when any key has values which are not strictly equal between the arguments. + * Returns true when the values of all keys are strictly equal. + */ +function shallowEqual(objA, objB) { + if (is(objA, objB)) { + return true; + } - if ('responseType' in xhr && support.blob) { - xhr.responseType = 'blob' - } + if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { + return false; + } - request.headers.forEach(function(value, name) { - xhr.setRequestHeader(name, value) - }) + var keysA = Object.keys(objA); + var keysB = Object.keys(objB); - xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit) - }) + if (keysA.length !== keysB.length) { + return false; + } + + // Test for A's keys different from B. + for (var i = 0; i < keysA.length; i++) { + if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { + return false; + } } - self.fetch.polyfill = true -})(typeof self !== 'undefined' ? self : this); + return true; +} + +module.exports = shallowEqual; },{}]},{},[1]); diff --git a/examples/dist/bundle.js b/examples/dist/bundle.js index 7b141c5df1..60c9bd3e1a 100644 --- a/examples/dist/bundle.js +++ b/examples/dist/bundle.js @@ -37,15 +37,17 @@ var propTypes = { children: _react2['default'].PropTypes.func.isRequired, // Child function responsible for creating the inner Select component; (props: Object): PropTypes.element ignoreAccents: _react2['default'].PropTypes.bool, // strip diacritics when filtering; defaults to true ignoreCase: _react2['default'].PropTypes.bool, // perform case-insensitive filtering; defaults to true - loadingPlaceholder: _react.PropTypes.string.isRequired, // replaces the placeholder while options are loading + loadingPlaceholder: _react2['default'].PropTypes.oneOfType([// replaces the placeholder while options are loading + _react2['default'].PropTypes.string, _react2['default'].PropTypes.node]), loadOptions: _react2['default'].PropTypes.func.isRequired, // callback to load options asynchronously; (inputValue: string, callback: Function): ?Promise options: _react.PropTypes.array.isRequired, // array of options placeholder: _react2['default'].PropTypes.oneOfType([// field placeholder, displayed when there's no value (shared with Select) _react2['default'].PropTypes.string, _react2['default'].PropTypes.node]), searchPromptText: _react2['default'].PropTypes.oneOfType([// label to prompt for search input - _react2['default'].PropTypes.string, _react2['default'].PropTypes.node]) -}; + _react2['default'].PropTypes.string, _react2['default'].PropTypes.node]), + onInputChange: _react2['default'].PropTypes.func }; +// optional for keeping track of what is being typed var defaultProps = { autoload: true, cache: {}, @@ -154,6 +156,7 @@ var Async = (function (_Component) { var _props2 = this.props; var ignoreAccents = _props2.ignoreAccents; var ignoreCase = _props2.ignoreCase; + var onInputChange = _props2.onInputChange; if (ignoreAccents) { inputValue = (0, _utilsStripDiacritics2['default'])(inputValue); @@ -163,11 +166,17 @@ var Async = (function (_Component) { inputValue = inputValue.toLowerCase(); } + if (onInputChange) { + onInputChange(inputValue); + } + return this.loadOptions(inputValue); } }, { key: 'render', value: function render() { + var _this3 = this; + var _props3 = this.props; var children = _props3.children; var loadingPlaceholder = _props3.loadingPlaceholder; @@ -180,7 +189,10 @@ var Async = (function (_Component) { var props = { noResultsText: isLoading ? loadingPlaceholder : searchPromptText, placeholder: isLoading ? loadingPlaceholder : placeholder, - options: isLoading ? [] : options + options: isLoading ? [] : options, + ref: function ref(_ref) { + return _this3.select = _ref; + } }; return children(_extends({}, this.props, props, { @@ -428,7 +440,9 @@ var Creatable = _react2['default'].createClass({ }, onInputKeyDown: function onInputKeyDown(event) { - var shouldKeyDownEventCreateNewOption = this.props.shouldKeyDownEventCreateNewOption; + var _props3 = this.props; + var shouldKeyDownEventCreateNewOption = _props3.shouldKeyDownEventCreateNewOption; + var onInputKeyDown = _props3.onInputKeyDown; var focusedOption = this.select.getFocusedOption(); @@ -437,6 +451,8 @@ var Creatable = _react2['default'].createClass({ // Prevent decorated Select from doing anything additional with this keyDown event event.preventDefault(); + } else if (onInputKeyDown) { + onInputKeyDown(event); } }, @@ -451,13 +467,13 @@ var Creatable = _react2['default'].createClass({ render: function render() { var _this = this; - var _props3 = this.props; - var _props3$children = _props3.children; - var children = _props3$children === undefined ? defaultChildren : _props3$children; - var newOptionCreator = _props3.newOptionCreator; - var shouldKeyDownEventCreateNewOption = _props3.shouldKeyDownEventCreateNewOption; + var _props4 = this.props; + var _props4$children = _props4.children; + var children = _props4$children === undefined ? defaultChildren : _props4$children; + var newOptionCreator = _props4.newOptionCreator; + var shouldKeyDownEventCreateNewOption = _props4.shouldKeyDownEventCreateNewOption; - var restProps = _objectWithoutProperties(_props3, ['children', 'newOptionCreator', 'shouldKeyDownEventCreateNewOption']); + var restProps = _objectWithoutProperties(_props4, ['children', 'newOptionCreator', 'shouldKeyDownEventCreateNewOption']); var props = _extends({}, restProps, { allowCreate: true, @@ -1182,14 +1198,26 @@ var Select = _react2['default'].createClass({ }, componentWillUnmount: function componentWillUnmount() { - document.removeEventListener('touchstart', this.handleTouchOutside); + if (!document.removeEventListener && document.detachEvent) { + document.detachEvent('ontouchstart', this.handleTouchOutside); + } else { + document.removeEventListener('touchstart', this.handleTouchOutside); + } }, toggleTouchOutsideEvent: function toggleTouchOutsideEvent(enabled) { if (enabled) { - document.addEventListener('touchstart', this.handleTouchOutside); + if (!document.addEventListener && document.attachEvent) { + document.attachEvent('ontouchstart', this.handleTouchOutside); + } else { + document.addEventListener('touchstart', this.handleTouchOutside); + } } else { - document.removeEventListener('touchstart', this.handleTouchOutside); + if (!document.removeEventListener && document.detachEvent) { + document.detachEvent('ontouchstart', this.handleTouchOutside); + } else { + document.removeEventListener('touchstart', this.handleTouchOutside); + } } }, @@ -1845,7 +1873,7 @@ var Select = _react2['default'].createClass({ } if (this.props.autosize) { - return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, inputProps, { minWidth: '5px' })); + return _react2['default'].createElement(_reactInputAutosize2['default'], _extends({}, inputProps, { minWidth: '5' })); } return _react2['default'].createElement( 'div', diff --git a/examples/dist/common.js b/examples/dist/common.js index ef92710325..febdd02dcc 100644 --- a/examples/dist/common.js +++ b/examples/dist/common.js @@ -1,1857 +1,1932 @@ require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } }; -module.exports = EventListener; -},{"./emptyFunction":8}],2:[function(require,module,exports){ +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],2:[function(require,module,exports){ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright 2013-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * + * @providesModule AutoFocusUtils */ 'use strict'; -var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); - -/** - * Simple, lightweight module assisting with the detection and context of - * Worker. Helps avoid circular dependencies and allows code to reason about - * whether or not they are in a Worker, even if they never include the main - * `ReactWorker` dependency. - */ -var ExecutionEnvironment = { - - canUseDOM: canUseDOM, +var ReactDOMComponentTree = require('./ReactDOMComponentTree'); - canUseWorkers: typeof Worker !== 'undefined', - - canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent), - - canUseViewport: canUseDOM && !!window.screen, - - isInWorker: !canUseDOM // For now, this is true - might change in the future. +var focusNode = require('fbjs/lib/focusNode'); +var AutoFocusUtils = { + focusDOMComponent: function () { + focusNode(ReactDOMComponentTree.getNodeFromInstance(this)); + } }; -module.exports = ExecutionEnvironment; -},{}],3:[function(require,module,exports){ -"use strict"; - +module.exports = AutoFocusUtils; +},{"./ReactDOMComponentTree":43,"fbjs/lib/focusNode":153}],3:[function(require,module,exports){ /** - * Copyright (c) 2013-present, Facebook, Inc. + * Copyright 2013-present Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. * - * @typechecks + * @providesModule BeforeInputEventPlugin */ -var _hyphenPattern = /-(.)/g; +'use strict'; -/** - * Camelcases a hyphenated string, for example: - * - * > camelize('background-color') - * < "backgroundColor" - * - * @param {string} string - * @return {string} - */ -function camelize(string) { - return string.replace(_hyphenPattern, function (_, character) { - return character.toUpperCase(); - }); -} +var EventConstants = require('./EventConstants'); +var EventPropagators = require('./EventPropagators'); +var ExecutionEnvironment = require('fbjs/lib/ExecutionEnvironment'); +var FallbackCompositionState = require('./FallbackCompositionState'); +var SyntheticCompositionEvent = require('./SyntheticCompositionEvent'); +var SyntheticInputEvent = require('./SyntheticInputEvent'); -module.exports = camelize; -},{}],4:[function(require,module,exports){ -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @typechecks - */ +var keyOf = require('fbjs/lib/keyOf'); -'use strict'; +var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space +var START_KEYCODE = 229; -var camelize = require('./camelize'); +var canUseCompositionEvent = ExecutionEnvironment.canUseDOM && 'CompositionEvent' in window; -var msPattern = /^-ms-/; +var documentMode = null; +if (ExecutionEnvironment.canUseDOM && 'documentMode' in document) { + documentMode = document.documentMode; +} + +// Webkit offers a very useful `textInput` event that can be used to +// directly represent `beforeInput`. The IE `textinput` event is not as +// useful, so we don't use it. +var canUseTextInputEvent = ExecutionEnvironment.canUseDOM && 'TextEvent' in window && !documentMode && !isPresto(); + +// In IE9+, we have access to composition events, but the data supplied +// by the native compositionend event may be incorrect. Japanese ideographic +// spaces, for instance (\u3000) are not recorded correctly. +var useFallbackCompositionData = ExecutionEnvironment.canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11); /** - * Camelcases a hyphenated CSS property name, for example: - * - * > camelizeStyleName('background-color') - * < "backgroundColor" - * > camelizeStyleName('-moz-transition') - * < "MozTransition" - * > camelizeStyleName('-ms-transition') - * < "msTransition" - * - * As Andi Smith suggests - * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix - * is converted to lowercase `ms`. - * - * @param {string} string - * @return {string} + * Opera <= 12 includes TextEvent in window, but does not fire + * text input events. Rely on keypress instead. */ -function camelizeStyleName(string) { - return camelize(string.replace(msPattern, 'ms-')); +function isPresto() { + var opera = window.opera; + return typeof opera === 'object' && typeof opera.version === 'function' && parseInt(opera.version(), 10) <= 12; } -module.exports = camelizeStyleName; -},{"./camelize":3}],5:[function(require,module,exports){ -'use strict'; +var SPACEBAR_CODE = 32; +var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); -/** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * - */ +var topLevelTypes = EventConstants.topLevelTypes; -var isTextNode = require('./isTextNode'); +// Events and their corresponding property names. +var eventTypes = { + beforeInput: { + phasedRegistrationNames: { + bubbled: keyOf({ onBeforeInput: null }), + captured: keyOf({ onBeforeInputCapture: null }) + }, + dependencies: [topLevelTypes.topCompositionEnd, topLevelTypes.topKeyPress, topLevelTypes.topTextInput, topLevelTypes.topPaste] + }, + compositionEnd: { + phasedRegistrationNames: { + bubbled: keyOf({ onCompositionEnd: null }), + captured: keyOf({ onCompositionEndCapture: null }) + }, + dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionEnd, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + }, + compositionStart: { + phasedRegistrationNames: { + bubbled: keyOf({ onCompositionStart: null }), + captured: keyOf({ onCompositionStartCapture: null }) + }, + dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionStart, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + }, + compositionUpdate: { + phasedRegistrationNames: { + bubbled: keyOf({ onCompositionUpdate: null }), + captured: keyOf({ onCompositionUpdateCapture: null }) + }, + dependencies: [topLevelTypes.topBlur, topLevelTypes.topCompositionUpdate, topLevelTypes.topKeyDown, topLevelTypes.topKeyPress, topLevelTypes.topKeyUp, topLevelTypes.topMouseDown] + } +}; -/*eslint-disable no-bitwise */ +// Track whether we've ever handled a keypress on the space key. +var hasSpaceKeypress = false; /** - * Checks if a given DOM node contains or is another DOM node. + * Return whether a native keypress event is assumed to be a command. + * This is required because Firefox fires `keypress` events for key commands + * (cut, copy, select-all, etc.) even though no character is inserted. */ -function containsNode(outerNode, innerNode) { - if (!outerNode || !innerNode) { - return false; - } else if (outerNode === innerNode) { - return true; - } else if (isTextNode(outerNode)) { - return false; - } else if (isTextNode(innerNode)) { - return containsNode(outerNode, innerNode.parentNode); - } else if ('contains' in outerNode) { - return outerNode.contains(innerNode); - } else if (outerNode.compareDocumentPosition) { - return !!(outerNode.compareDocumentPosition(innerNode) & 16); - } else { - return false; - } +function isKeypressCommand(nativeEvent) { + return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && + // ctrlKey && altKey is equivalent to AltGr, and is not a command. + !(nativeEvent.ctrlKey && nativeEvent.altKey); } -module.exports = containsNode; -},{"./isTextNode":18}],6:[function(require,module,exports){ -'use strict'; - /** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. + * Translate native top level events into event types. * - * @typechecks + * @param {string} topLevelType + * @return {object} */ - -var invariant = require('./invariant'); +function getCompositionEventType(topLevelType) { + switch (topLevelType) { + case topLevelTypes.topCompositionStart: + return eventTypes.compositionStart; + case topLevelTypes.topCompositionEnd: + return eventTypes.compositionEnd; + case topLevelTypes.topCompositionUpdate: + return eventTypes.compositionUpdate; + } +} /** - * Convert array-like objects to arrays. - * - * This API assumes the caller knows the contents of the data type. For less - * well defined inputs use createArrayFromMixed. + * Does our fallback best-guess model think this event signifies that + * composition has begun? * - * @param {object|function|filelist} obj - * @return {array} + * @param {string} topLevelType + * @param {object} nativeEvent + * @return {boolean} */ -function toArray(obj) { - var length = obj.length; - - // Some browsers builtin objects can report typeof 'function' (e.g. NodeList - // in old versions of Safari). - !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? "production" !== 'production' ? invariant(false, 'toArray: Array-like object expected') : invariant(false) : void 0; - - !(typeof length === 'number') ? "production" !== 'production' ? invariant(false, 'toArray: Object needs a length property') : invariant(false) : void 0; - - !(length === 0 || length - 1 in obj) ? "production" !== 'production' ? invariant(false, 'toArray: Object should have keys for indices') : invariant(false) : void 0; - - !(typeof obj.callee !== 'function') ? "production" !== 'production' ? invariant(false, 'toArray: Object can\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : invariant(false) : void 0; - - // Old IE doesn't give collections access to hasOwnProperty. Assume inputs - // without method will throw during the slice call and skip straight to the - // fallback. - if (obj.hasOwnProperty) { - try { - return Array.prototype.slice.call(obj); - } catch (e) { - // IE < 9 does not support Array#slice on collections objects - } - } - - // Fall back to copying key by key. This assumes all keys have a value, - // so will not preserve sparsely populated inputs. - var ret = Array(length); - for (var ii = 0; ii < length; ii++) { - ret[ii] = obj[ii]; - } - return ret; +function isFallbackCompositionStart(topLevelType, nativeEvent) { + return topLevelType === topLevelTypes.topKeyDown && nativeEvent.keyCode === START_KEYCODE; } /** - * Perform a heuristic test to determine if an object is "array-like". - * - * A monk asked Joshu, a Zen master, "Has a dog Buddha nature?" - * Joshu replied: "Mu." - * - * This function determines if its argument has "array nature": it returns - * true if the argument is an actual array, an `arguments' object, or an - * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()). - * - * It will return false for other array-like objects like Filelist. + * Does our fallback mode think that this event is the end of composition? * - * @param {*} obj + * @param {string} topLevelType + * @param {object} nativeEvent * @return {boolean} */ -function hasArrayNature(obj) { - return ( - // not null/false - !!obj && ( - // arrays are objects, NodeLists are functions in Safari - typeof obj == 'object' || typeof obj == 'function') && - // quacks like an array - 'length' in obj && - // not window - !('setInterval' in obj) && - // no DOM node should be considered an array-like - // a 'select' element has 'length' and 'item' properties on IE8 - typeof obj.nodeType != 'number' && ( - // a real array - Array.isArray(obj) || - // arguments - 'callee' in obj || - // HTMLCollection/NodeList - 'item' in obj) - ); +function isFallbackCompositionEnd(topLevelType, nativeEvent) { + switch (topLevelType) { + case topLevelTypes.topKeyUp: + // Command keys insert or clear IME input. + return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1; + case topLevelTypes.topKeyDown: + // Expect IME keyCode on each keydown. If we get any other + // code we must have exited earlier. + return nativeEvent.keyCode !== START_KEYCODE; + case topLevelTypes.topKeyPress: + case topLevelTypes.topMouseDown: + case topLevelTypes.topBlur: + // Events are not possible without cancelling IME. + return true; + default: + return false; + } } /** - * Ensure that the argument is an array by wrapping it in an array if it is not. - * Creates a copy of the argument if it is already an array. - * - * This is mostly useful idiomatically: - * - * var createArrayFromMixed = require('createArrayFromMixed'); - * - * function takesOneOrMoreThings(things) { - * things = createArrayFromMixed(things); - * ... - * } - * - * This allows you to treat `things' as an array, but accept scalars in the API. - * - * If you need to convert an array-like object, like `arguments`, into an array - * use toArray instead. + * Google Input Tools provides composition data via a CustomEvent, + * with the `data` property populated in the `detail` object. If this + * is available on the event object, use it. If not, this is a plain + * composition event and we have nothing special to extract. * - * @param {*} obj - * @return {array} + * @param {object} nativeEvent + * @return {?string} */ -function createArrayFromMixed(obj) { - if (!hasArrayNature(obj)) { - return [obj]; - } else if (Array.isArray(obj)) { - return obj.slice(); - } else { - return toArray(obj); +function getDataFromCustomEvent(nativeEvent) { + var detail = nativeEvent.detail; + if (typeof detail === 'object' && 'data' in detail) { + return detail.data; } + return null; } -module.exports = createArrayFromMixed; -},{"./invariant":16}],7:[function(require,module,exports){ -'use strict'; +// Track the current IME composition fallback object, if any. +var currentComposition = null; /** - * Copyright (c) 2013-present, Facebook, Inc. - * All rights reserved. - * - * This source code is licensed under the BSD-style license found in the - * LICENSE file in the root directory of this source tree. An additional grant - * of patent rights can be found in the PATENTS file in the same directory. - * - * @typechecks + * @return {?object} A SyntheticCompositionEvent. */ +function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { + var eventType; + var fallbackData; -/*eslint-disable fb-www/unsafe-html*/ + if (canUseCompositionEvent) { + eventType = getCompositionEventType(topLevelType); + } else if (!currentComposition) { + if (isFallbackCompositionStart(topLevelType, nativeEvent)) { + eventType = eventTypes.compositionStart; + } + } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) { + eventType = eventTypes.compositionEnd; + } -var ExecutionEnvironment = require('./ExecutionEnvironment'); + if (!eventType) { + return null; + } -var createArrayFromMixed = require('./createArrayFromMixed'); -var getMarkupWrap = require('./getMarkupWrap'); -var invariant = require('./invariant'); + if (useFallbackCompositionData) { + // The current composition is stored statically and must not be + // overwritten while composition continues. + if (!currentComposition && eventType === eventTypes.compositionStart) { + currentComposition = FallbackCompositionState.getPooled(nativeEventTarget); + } else if (eventType === eventTypes.compositionEnd) { + if (currentComposition) { + fallbackData = currentComposition.getData(); + } + } + } -/** - * Dummy container used to render all markup. - */ -var dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null; + var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget); -/** - * Pattern used by `getNodeName`. - */ -var nodeNamePattern = /^\s*<(\w+)/; + if (fallbackData) { + // Inject data generated from fallback path into the synthetic event. + // This matches the property of native CompositionEventInterface. + event.data = fallbackData; + } else { + var customData = getDataFromCustomEvent(nativeEvent); + if (customData !== null) { + event.data = customData; + } + } -/** - * Extracts the `nodeName` of the first element in a string of markup. - * - * @param {string} markup String of markup. - * @return {?string} Node name of the supplied markup. - */ -function getNodeName(markup) { - var nodeNameMatch = markup.match(nodeNamePattern); - return nodeNameMatch && nodeNameMatch[1].toLowerCase(); + EventPropagators.accumulateTwoPhaseDispatches(event); + return event; } /** - * Creates an array containing the nodes rendered from the supplied markup. The - * optionally supplied `handleScript` function will be invoked once for each - *