\n )\n }\n}\n\nmodule.exports = Autocomplete\n\n",
+ "module.exports = require('./lib/dom-scroll-into-view');\n",
+ "var util = require('./util');\n\nfunction scrollIntoView(elem, container, config) {\n config = config || {};\n // document 归一化到 window\n if (container.nodeType === 9) {\n container = util.getWindow(container);\n }\n\n var allowHorizontalScroll = config.allowHorizontalScroll;\n var onlyScrollIfNeeded = config.onlyScrollIfNeeded;\n var alignWithTop = config.alignWithTop;\n var alignWithLeft = config.alignWithLeft;\n\n allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;\n\n var isWin = util.isWindow(container);\n var elemOffset = util.offset(elem);\n var eh = util.outerHeight(elem);\n var ew = util.outerWidth(elem);\n var containerOffset, ch, cw, containerScroll,\n diffTop, diffBottom, win,\n winScroll, ww, wh;\n\n if (isWin) {\n win = container;\n wh = util.height(win);\n ww = util.width(win);\n winScroll = {\n left: util.scrollLeft(win),\n top: util.scrollTop(win)\n };\n // elem 相对 container 可视视窗的距离\n diffTop = {\n left: elemOffset.left - winScroll.left,\n top: elemOffset.top - winScroll.top\n };\n diffBottom = {\n left: elemOffset.left + ew - (winScroll.left + ww),\n top: elemOffset.top + eh - (winScroll.top + wh)\n };\n containerScroll = winScroll;\n } else {\n containerOffset = util.offset(container);\n ch = container.clientHeight;\n cw = container.clientWidth;\n containerScroll = {\n left: container.scrollLeft,\n top: container.scrollTop\n };\n // elem 相对 container 可视视窗的距离\n // 注意边框, offset 是边框到根节点\n diffTop = {\n left: elemOffset.left - (containerOffset.left +\n (parseFloat(util.css(container, 'borderLeftWidth')) || 0)),\n top: elemOffset.top - (containerOffset.top +\n (parseFloat(util.css(container, 'borderTopWidth')) || 0))\n };\n diffBottom = {\n left: elemOffset.left + ew -\n (containerOffset.left + cw +\n (parseFloat(util.css(container, 'borderRightWidth')) || 0)),\n top: elemOffset.top + eh -\n (containerOffset.top + ch +\n (parseFloat(util.css(container, 'borderBottomWidth')) || 0))\n };\n }\n\n if (diffTop.top < 0 || diffBottom.top > 0) {\n // 强制向上\n if (alignWithTop === true) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else if (alignWithTop === false) {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n } else {\n // 自动调整\n if (diffTop.top < 0) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;\n if (alignWithTop) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n }\n\n if (allowHorizontalScroll) {\n if (diffTop.left < 0 || diffBottom.left > 0) {\n // 强制向上\n if (alignWithLeft === true) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else if (alignWithLeft === false) {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n } else {\n // 自动调整\n if (diffTop.left < 0) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;\n if (alignWithLeft) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n }\n }\n}\n\nmodule.exports = scrollIntoView;\n",
+ "var RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nfunction getClientPosition(elem) {\n var box, x, y;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement;\n // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n box = elem.getBoundingClientRect();\n\n // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top;\n\n // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n\n return {left: x, top: y};\n}\n\nfunction getScroll(w, top) {\n var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n var method = 'scroll' + (top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n //ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n //quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\nfunction _getComputedStyle(elem, name, computedStyle) {\n var val = '';\n var d = elem.ownerDocument;\n\n // https://github.com/kissyteam/kissy/issues/61\n if ((computedStyle = (computedStyle || d.defaultView.getComputedStyle(elem, null)))) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');\nvar RE_POS = /^(top|right|bottom|left)$/,\n CURRENT_STYLE = 'currentStyle',\n RUNTIME_STYLE = 'runtimeStyle',\n LEFT = 'left',\n PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];\n\n // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style,\n left = style[LEFT],\n rsLeft = elem[RUNTIME_STYLE][LEFT];\n\n // prevent flashing of content\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];\n\n // Put in the new values to get a computed value out\n style[LEFT] = name === 'fontSize' ? '1em' : (ret || 0);\n ret = style.pixelLeft + PX;\n\n // Revert the changed values\n style[LEFT] = left;\n\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n return ret === '' ? 'auto' : ret;\n}\n\nvar getComputedStyleX;\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\n// 设置 elem 相对 elem.ownerDocument 的坐标\nfunction setOffset(elem, offset) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var old = getOffset(elem),\n ret = {},\n current, key;\n\n for (key in offset) {\n current = parseFloat(css(elem, key)) || 0;\n ret[key] = current + offset[key] - old[key];\n }\n css(elem, ret);\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'],\n CONTENT_INDEX = -1,\n PADDING_INDEX = 2,\n BORDER_INDEX = 1,\n MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {},\n style = elem.style,\n name;\n\n // Remember the old values, and insert the new ones\n for (name in options) {\n old[name] = style[name];\n style[name] = options[name];\n }\n\n callback.call(elem);\n\n // Revert the old values\n for (name in options) {\n style[name] = old[name];\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0, prop, j, i;\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp;\n if (prop === 'border') {\n cssProp = prop + which[i] + 'Width';\n } else {\n cssProp = prop + which[i];\n }\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n return value;\n}\n\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\nfunction isWindow(obj) {\n // must use == for ie8\n /*jshint eqeqeq:false*/\n return obj != null && obj == obj.window;\n}\n\nvar domUtils = {};\n\neach(['Width', 'Height'], function (name) {\n domUtils['doc' + name] = function (refWin) {\n var d = refWin.document;\n return Math.max(\n //firefox chrome documentElement.scrollHeight< body.scrollHeight\n //ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement['scroll' + name],\n //quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body['scroll' + name],\n domUtils['viewport' + name](d));\n };\n\n domUtils['viewport' + name] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = 'client' + name,\n doc = win.document,\n body = doc.body,\n documentElement = doc.documentElement,\n documentElementProp = documentElement[prop];\n // 标准模式取 documentElement\n // backcompat 取 body\n return doc.compatMode === 'CSS1Compat' && documentElementProp ||\n body && body[prop] || documentElementProp;\n };\n});\n\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\nfunction getWH(elem, name, extra) {\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'],\n borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem, computedStyle);\n var cssBoxValue = 0;\n if (borderBoxValue == null || borderBoxValue <= 0) {\n borderBoxValue = undefined;\n // Fall back to computed then un computed css if necessary\n cssBoxValue = getComputedStyleX(elem, name);\n if (cssBoxValue == null || (Number(cssBoxValue)) < 0) {\n cssBoxValue = elem.style[name] || 0;\n }\n // Normalize '', auto, and prepare for extra\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'],\n which, computedStyle);\n } else {\n return cssBoxValue;\n }\n } else if (borderBoxValueOrIsBorderBox) {\n return val + (extra === BORDER_INDEX ? 0 :\n (extra === PADDING_INDEX ?\n -getPBMWidth(elem, ['border'], which, computedStyle) :\n getPBMWidth(elem, ['margin'], which, computedStyle)));\n } else {\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra),\n which, computedStyle);\n }\n}\n\nvar cssShow = {position: 'absolute', visibility: 'hidden', display: 'block'};\n\n// fix #119 : https://github.com/kissyteam/kissy/issues/119\nfunction getWHIgnoreDisplay(elem) {\n var val, args = arguments;\n // in case elem is window\n // elem.offsetWidth === undefined\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n return val;\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n domUtils['outer' + first] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, val) {\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);\n }\n return css(elem, name, val);\n }\n return;\n }\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction css(el, name, value) {\n if (typeof name === 'object') {\n for (var i in name) {\n css(el, i, name[i]);\n }\n return;\n }\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = value + 'px';\n }\n el.style[name] = value;\n } else {\n return getComputedStyleX(el, name);\n }\n}\n\nfunction mix(to, from) {\n for (var i in from) {\n to[i] = from[i];\n }\n return to;\n}\n\nvar utils = module.exports = {\n getWindow: function (node) {\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n offset: function (el, value) {\n if (typeof value !== 'undefined') {\n setOffset(el, value);\n } else {\n return getOffset(el);\n }\n },\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function (obj) {\n var ret = {};\n for (var i in obj) {\n ret[i] = obj[i];\n }\n var overflow = obj.overflow;\n if (overflow) {\n for (i in obj) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n return ret;\n },\n mix: mix,\n scrollLeft: function (w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollLeft(w);\n } else {\n window.scrollTo(v, getScrollTop(w));\n }\n } else {\n if (v === undefined) {\n return w.scrollLeft;\n } else {\n w.scrollLeft = v;\n }\n }\n },\n scrollTop: function (w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollTop(w);\n } else {\n window.scrollTo(getScrollLeft(w), v);\n }\n } else {\n if (v === undefined) {\n return w.scrollTop;\n } else {\n w.scrollTop = v;\n }\n }\n },\n merge: function () {\n var ret = {};\n for (var i = 0; i < arguments.length; i++) {\n utils.mix(ret, arguments[i]);\n }\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0\n};\n\nmix(utils, domUtils);\n",
+ "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n",
+ "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (\"production\" !== 'production') {\n var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n var loggedTypeFailures = {};\n\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (\"production\" !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error(\n (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'\n );\n err.name = 'Invariant Violation';\n throw err;\n }\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n if (error && !(error instanceof Error)) {\n printWarning(\n (componentName || 'React class') + ': type specification of ' +\n location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n 'You may have forgotten to pass an argument to the type checker ' +\n 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n 'shape all require an argument).'\n )\n\n }\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n\n var stack = getStack ? getStack() : '';\n\n printWarning(\n 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n );\n }\n }\n }\n }\n}\n\nmodule.exports = checkPropTypes;\n",
+ "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n",
+ "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (\"production\" !== 'production') {\n printWarning = function(text) {\n var message = 'Warning: ' + text;\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker,\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n\n function createChainableTypeChecker(validate) {\n if (\"production\" !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use `PropTypes.checkPropTypes()` to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n } else if (\"production\" !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (\n !manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3\n ) {\n printWarning(\n 'You are manually calling a React.PropTypes validation ' +\n 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n 'and will throw in the standalone `prop-types` package. ' +\n 'You may be seeing this warning due to a third-party PropTypes ' +\n 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n );\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n\n return chainedCheckType;\n }\n\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n }\n\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n \"production\" !== 'production' ? printWarning('Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n \"production\" !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunctionThatReturnsNull;\n }\n\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n printWarning(\n 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n );\n return emptyFunctionThatReturnsNull;\n }\n }\n\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError(\n 'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') +\n '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')\n );\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n\n return createChainableTypeChecker(validate);\n }\n\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n\n return true;\n default:\n return false;\n }\n }\n\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n",
+ "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (\"production\" !== 'production') {\n var REACT_ELEMENT_TYPE = (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n\n var isValidElement = function(object) {\n return typeof object === 'object' &&\n object !== null &&\n object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(isValidElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n",
+ "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n"
+ ],
+ "sourceRoot": ""
+}
\ No newline at end of file
diff --git a/dist/react-autocomplete.min.js b/dist/react-autocomplete.min.js
new file mode 100644
index 00000000..e4fcce28
--- /dev/null
+++ b/dist/react-autocomplete.min.js
@@ -0,0 +1,2 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["react","react-dom"],t):e.ReactAutocomplete=t(e.React,e.ReactDOM)}(this,function(e,t){return function(e){return function(){function t(n,r,o){function i(u,s){if(!r[u]){if(!n[u]){var a="function"==typeof e&&e;if(!s&&a)return a(u,!0);if(l)return l(u,!0);var c=new Error("Cannot find module '"+u+"'");throw c.code="MODULE_NOT_FOUND",c}var f=r[u]={exports:{}};n[u][0].call(f.exports,function(e){return i(n[u][1][e]||e)},f,f.exports,t,n,r,o)}return r[u].exports}for(var l="function"==typeof e&&e,u=0;u=this.getFilteredItems(t).length)return{highlightedIndex:null}}},{key:"setMenuPositions",value:function(){var e=this.refs.input,t=e.getBoundingClientRect(),r=n.window.getComputedStyle(e),o=parseInt(r.marginBottom,10)||0,i=parseInt(r.marginLeft,10)||0,l=parseInt(r.marginRight,10)||0;this.setState({menuTop:t.bottom+o,menuLeft:t.left+i,menuWidth:t.width+i+l})}},{key:"highlightItemFromMouse",value:function(e){this.setState({highlightedIndex:e})}},{key:"selectItemFromMouse",value:function(e){var t=this,n=this.props.getItemValue(e);this.setIgnoreBlur(!1),this.setState({isOpen:!1,highlightedIndex:null},function(){t.props.onSelect(n,e)})}},{key:"setIgnoreBlur",value:function(e){this._ignoreBlur=e}},{key:"renderMenu",value:function(){var e=this,t=this.getFilteredItems(this.props).map(function(t,n){var r=e.props.renderItem(t,e.state.highlightedIndex===n,{cursor:"default"});return a.cloneElement(r,{onMouseEnter:e.props.isItemSelectable(t)?function(){return e.highlightItemFromMouse(n)}:null,onClick:e.props.isItemSelectable(t)?function(){return e.selectItemFromMouse(t)}:null,ref:function(t){return e.refs["item-"+n]=t}})}),n={left:this.state.menuLeft,top:this.state.menuTop,minWidth:this.state.menuWidth},r=this.props.renderMenu(t,this.props.value,n);return a.cloneElement(r,{ref:function(t){return e.refs.menu=t},onTouchStart:function(){return e.setIgnoreBlur(!0)},onMouseEnter:function(){return e.setIgnoreBlur(!0)},onMouseLeave:function(){return e.setIgnoreBlur(!1)}})}},{key:"handleInputBlur",value:function(e){var t=this;if(this._ignoreBlur)return this._ignoreFocus=!0,this._scrollOffset=l(),void this.refs.input.focus();var n=void 0,r=this.state.highlightedIndex;if(this.props.selectOnBlur&&null!==r){var o=this.getFilteredItems(this.props),i=o[r],u=this.props.getItemValue(i);n=function(){return t.props.onSelect(u,i)}}this.setState({isOpen:!1,highlightedIndex:null},n);var s=this.props.inputProps.onBlur;s&&s(e)}},{key:"handleInputFocus",value:function(e){var t=this;if(this._ignoreFocus){this._ignoreFocus=!1;var n=this._scrollOffset,r=n.x,o=n.y;return this._scrollOffset=null,window.scrollTo(r,o),clearTimeout(this._scrollTimer),void(this._scrollTimer=setTimeout(function(){t._scrollTimer=null,window.scrollTo(r,o)},0))}this.setState({isOpen:!0});var i=this.props.inputProps.onFocus;i&&i(e)}},{key:"isInputFocused",value:function(){var e=this.refs.input;return e.ownerDocument&&e===e.ownerDocument.activeElement}},{key:"handleInputClick",value:function(){this.isInputFocused()&&!this.isOpen()&&this.setState({isOpen:!0})}},{key:"composeEventHandlers",value:function(e,t){return t?function(n){e(n),t(n)}:e}},{key:"isOpen",value:function(){return"open"in this.props?this.props.open:this.state.isOpen}},{key:"render",value:function(){this.props.debug&&this._debugStates.push({id:this._debugStates.length,state:this.state});var e=this.props.inputProps,t=this.isOpen();return a.createElement("div",u({style:u({},this.props.wrapperStyle)},this.props.wrapperProps,{role:"combobox","aria-expanded":t}),this.props.renderInput(u({},e,{"aria-autocomplete":"list",autoComplete:"off",ref:this.exposeAPI,onFocus:this.handleInputFocus,onBlur:this.handleInputBlur,onChange:this.handleChange,onKeyDown:this.composeEventHandlers(this.handleKeyDown,e.onKeyDown),onClick:this.composeEventHandlers(this.handleInputClick,e.onClick),value:this.props.value})),t&&this.renderMenu(),this.props.debug&&a.createElement("pre",{style:{marginLeft:300}},JSON.stringify(this._debugStates.slice(Math.max(0,this._debugStates.length-5),this._debugStates.length),null,2)))}}]),t}(a.Component);g.propTypes={items:c.array.isRequired,value:c.any,onChange:c.func,onSelect:c.func,shouldItemRender:c.func,isItemSelectable:c.func,sortItems:c.func,getItemValue:c.func.isRequired,renderItem:c.func.isRequired,renderMenu:c.func,menuStyle:c.object,renderInput:c.func,inputProps:c.object,wrapperProps:c.object,wrapperStyle:c.object,autoHighlight:c.bool,selectOnBlur:c.bool,onMenuVisibilityChange:c.func,open:c.bool,debug:c.bool},g.defaultProps={value:"",wrapperProps:{},wrapperStyle:{display:"inline-block"},inputProps:{},renderInput:function(e){return a.createElement("input",e)},onChange:function(){},onSelect:function(){},isItemSelectable:function(){return!0},renderMenu:function(e,t,n){return a.createElement("div",{role:"listbox",style:u({},n,this.menuStyle),children:e})},menuStyle:{borderRadius:"3px",boxShadow:"0 2px 12px rgba(0, 0, 0, 0.1)",background:"rgba(255, 255, 255, 0.9)",padding:"2px 0",fontSize:"90%",position:"fixed",overflow:"auto",maxHeight:"50%"},autoHighlight:!0,selectOnBlur:!1,onMenuVisibilityChange:function(){}},g.keyDownHandlers={ArrowDown:function(e){e.preventDefault();var t=this.getFilteredItems(this.props);if(t.length){for(var n=this.state.highlightedIndex,r=null===n?-1:n,o=0;o-1&&r!==n&&this.setState({highlightedIndex:r,isOpen:!0})}},ArrowUp:function(e){e.preventDefault();var t=this.getFilteredItems(this.props);if(t.length){for(var n=this.state.highlightedIndex,r=null===n?t.length:n,o=0;o0?!0===l?o.scrollTop(t,f.top+p.top):!1===l?o.scrollTop(t,f.top+d.top):p.top<0?o.scrollTop(t,f.top+p.top):o.scrollTop(t,f.top+d.top):i||(l=void 0===l||!!l,l?o.scrollTop(t,f.top+p.top):o.scrollTop(t,f.top+d.top)),r&&(p.left<0||d.left>0?!0===u?o.scrollLeft(t,f.left+p.left):!1===u?o.scrollLeft(t,f.left+d.left):p.left<0?o.scrollLeft(t,f.left+p.left):o.scrollLeft(t,f.left+d.left):i||(u=void 0===u||!!u,u?o.scrollLeft(t,f.left+p.left):o.scrollLeft(t,f.left+d.left)))}var o=e("./util");t.exports=r},{"./util":4}],4:[function(e,t,n){function r(e){var t,n,r,o=e.ownerDocument,i=o.body,l=o&&o.documentElement;return t=e.getBoundingClientRect(),n=t.left,r=t.top,n-=l.clientLeft||i.clientLeft||0,r-=l.clientTop||i.clientTop||0,{left:n,top:r}}function o(e,t){var n=e["page"+(t?"Y":"X")+"Offset"],r="scroll"+(t?"Top":"Left");if("number"!=typeof n){var o=e.document;n=o.documentElement[r],"number"!=typeof n&&(n=o.body[r])}return n}function i(e){return o(e)}function l(e){return o(e,!0)}function u(e){var t=r(e),n=e.ownerDocument,o=n.defaultView||n.parentWindow;return t.left+=i(o),t.top+=l(o),t}function s(e,t,n){var r="",o=e.ownerDocument;return(n=n||o.defaultView.getComputedStyle(e,null))&&(r=n.getPropertyValue(t)||n[t]),r}function a(e,t){var n=e[S]&&e[S][t];if(x.test(n)&&!O.test(t)){var r=e.style,o=r[k],i=e[T][k];e[T][k]=e[S][k],r[k]="fontSize"===t?"1em":n||0,n=r.pixelLeft+j,r[k]=o,e[T][k]=i}return""===n?"auto":n}function c(e,t){"static"===m(e,"position")&&(e.style.position="relative");var n,r,o=u(e),i={};for(r in t)n=parseFloat(m(e,r))||0,i[r]=n+t[r]-o[r];m(e,i)}function f(e,t){for(var n=0;n>",P={array:f("array"),bool:f("boolean"),func:f("function"),number:f("number"),object:f("object"),string:f("string"),symbol:f("symbol"),any:function(){return c(r)}(),arrayOf:p,element:function(){function t(t,n,r,o,i){var l=t[n];if(!e(l)){return new a("Invalid "+o+" `"+i+"` of type `"+I(l)+"` supplied to `"+r+"`, expected a single ReactElement.")}return null}return c(t)}(),instanceOf:d,node:function(){function e(e,t,n,r,o){return b(e[t])?null:new a("Invalid "+r+" `"+o+"` supplied to `"+n+"`, expected a ReactNode.")}return c(e)}(),objectOf:g,oneOf:h,oneOfType:y,shape:v,exact:m};return a.prototype=Error.prototype,P.checkPropTypes=l,P.PropTypes=P,P}},{"./checkPropTypes":6,"./lib/ReactPropTypesSecret":10,"object-assign":5}],9:[function(e,t,n){t.exports=e("./factoryWithThrowingShims")()},{"./factoryWithThrowingShims":7,"./factoryWithTypeCheckers":8}],10:[function(e,t,n){"use strict";t.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},{}]},{},[1])(1)}(function(n){if("react"===n)return e;if("react-dom"===n)return t;if("undefined"!=typeof require)return require(n);var r=new Error("Cannot find module '"+n+"'");throw r.code="MODULE_NOT_FOUND",r})});
+//# sourceMappingURL=react-autocomplete.min.js.map
diff --git a/dist/react-autocomplete.min.js.map b/dist/react-autocomplete.min.js.map
new file mode 100644
index 00000000..46fb9099
--- /dev/null
+++ b/dist/react-autocomplete.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["../node_modules/browser-pack/_prelude.js","../lib/Autocomplete.js","../node_modules/dom-scroll-into-view/index.js","../node_modules/dom-scroll-into-view/lib/dom-scroll-into-view.js","../node_modules/dom-scroll-into-view/lib/util.js","../node_modules/object-assign/index.js","../node_modules/prop-types/checkPropTypes.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/factoryWithTypeCheckers.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","1","module","getScrollOffset","x","undefined","window","pageXOffset","document","documentElement","body","parentNode","scrollLeft","y","pageYOffset","scrollTop","React","PropTypes","findDOMNode","scrollIntoView","IMPERATIVE_API","Autocomplete","props","_classCallCheck","this","_this","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","state","isOpen","highlightedIndex","_debugStates","ensureHighlightedIndex","bind","exposeAPI","handleInputFocus","handleInputBlur","handleChange","handleKeyDown","handleInputClick","maybeAutoCompleteText","refs","_ignoreBlur","_ignoreFocus","_scrollOffset","_scrollTimer","clearTimeout","nextProps","setState","autoHighlight","value","setMenuPositions","prevProps","prevState","open","maybeScrollItemIntoView","onMenuVisibilityChange","el","_this2","input","forEach","ev","itemNode","menuNode","menu","onlyScrollIfNeeded","event","keyDownHandlers","key","onChange","target","items","shouldItemRender","filter","item","sortItems","sort","b","getItemValue","index","getFilteredItems","isItemSelectable","matchedItem","toLowerCase","indexOf","node","rect","getBoundingClientRect","computedStyle","global","getComputedStyle","marginBottom","parseInt","marginLeft","marginRight","menuTop","bottom","menuLeft","left","menuWidth","width","_this3","setIgnoreBlur","onSelect","ignore","_this4","map","element","renderItem","cursor","cloneElement","onMouseEnter","highlightItemFromMouse","onClick","selectItemFromMouse","ref","style","top","minWidth","renderMenu","onTouchStart","onMouseLeave","_this5","focus","setStateCallback","selectOnBlur","onBlur","inputProps","_this6","scrollTo","setTimeout","onFocus","ownerDocument","activeElement","isInputFocused","internal","external","debug","push","id","createElement","_extends","wrapperStyle","wrapperProps","role","aria-expanded","renderInput","aria-autocomplete","autoComplete","onKeyDown","composeEventHandlers","JSON","stringify","slice","Math","max","Component","propTypes","array","isRequired","any","func","menuStyle","object","bool","defaultProps","display","children","borderRadius","boxShadow","background","padding","fontSize","position","overflow","maxHeight","ArrowDown","preventDefault","ArrowUp","Enter","_this7","keyCode","select","setSelectionRange","Escape","Tab","elem","container","config","nodeType","util","getWindow","allowHorizontalScroll","alignWithTop","alignWithLeft","containerOffset","ch","cw","containerScroll","diffTop","diffBottom","win","winScroll","ww","wh","isWin","isWindow","elemOffset","offset","eh","outerHeight","ew","outerWidth","height","clientHeight","clientWidth","parseFloat","css","getClientPosition","box","doc","docElem","clientLeft","clientTop","getScroll","w","ret","method","d","getScrollLeft","getScrollTop","getOffset","pos","defaultView","parentWindow","_getComputedStyle","name","val","getPropertyValue","_getComputedStyleIE","CURRENT_STYLE","_RE_NUM_NO_PX","test","RE_POS","LEFT","rsLeft","RUNTIME_STYLE","pixelLeft","PX","setOffset","current","old","each","arr","fn","isBorderBoxFn","getComputedStyleX","swap","options","callback","getPBMWidth","which","prop","j","cssProp","obj","getWH","extra","domUtils","viewportWidth","viewportHeight","docWidth","docHeight","borderBoxValue","offsetWidth","offsetHeight","isBorderBox","cssBoxValue","Number","BORDER_INDEX","CONTENT_INDEX","borderBoxValueOrIsBorderBox","PADDING_INDEX","BOX_MODELS","getWHIgnoreDisplay","args","arguments","apply","cssShow","mix","to","from","RE_NUM","source","RegExp","refWin","documentElementProp","compatMode","visibility","first","charAt","toUpperCase","includeMargin","utils","clone","v","merge","toObject","TypeError","getOwnPropertySymbols","hasOwnProperty","prototype","propIsEnumerable","propertyIsEnumerable","assign","test1","String","getOwnPropertyNames","test2","fromCharCode","join","test3","split","letter","keys","err","symbols","s","checkPropTypes","typeSpecs","values","location","componentName","getStack","emptyFunction","ReactPropTypesSecret","shim","propName","propFullName","secret","getShim","ReactPropTypes","number","string","symbol","arrayOf","instanceOf","objectOf","oneOf","oneOfType","shape","exact","emptyFunctionThatReturnsNull","printWarning","isValidElement","throwOnDirectAccess","getIteratorFn","maybeIterable","iteratorFn","ITERATOR_SYMBOL","FAUX_ITERATOR_SYMBOL","is","PropTypeError","message","stack","createChainableTypeChecker","validate","checkType","ANONYMOUS","chainedCheckType","createPrimitiveTypeChecker","expectedType","propValue","getPropType","getPreciseType","createArrayOfTypeChecker","typeChecker","Array","isArray","error","createInstanceTypeChecker","expectedClass","expectedClassName","getClassName","createEnumTypeChecker","expectedValues","createObjectOfTypeChecker","propType","createUnionTypeChecker","arrayOfTypeCheckers","checker","getPostfixForTypeWarning","createShapeTypeChecker","shapeTypes","createStrictShapeTypeChecker","allKeys","isNode","every","step","iterator","entries","next","done","entry","isSymbol","Symbol","Date","type","constructor"],"mappings":"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","sourceRoot":"","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i, value: String, styles: Object`\n *\n * Invoked to generate the render tree for the dropdown menu. Ensure the\n * returned tree includes every entry in `items` or else the highlight order\n * and keyboard navigation logic will break. `styles` will contain\n * { top, left, minWidth } which are the coordinates of the top-left corner\n * and the width of the dropdown menu.\n */\n renderMenu: PropTypes.func,\n /**\n * Styles that are applied to the dropdown menu in the default `renderMenu`\n * implementation. If you override `renderMenu` and you want to use\n * `menuStyle` you must manually apply them (`this.props.menuStyle`).\n */\n menuStyle: PropTypes.object,\n /**\n * Arguments: `props: Object`\n *\n * Invoked to generate the input element. The `props` argument is the result\n * of merging `props.inputProps` with a selection of props that are required\n * both for functionality and accessibility. At the very least you need to\n * apply `props.ref` and all `props.on` event handlers. Failing to do\n * this will cause `Autocomplete` to behave unexpectedly.\n */\n renderInput: PropTypes.func,\n /**\n * Props passed to `props.renderInput`. By default these props will be\n * applied to the `` element rendered by `Autocomplete`, unless you\n * have specified a custom value for `props.renderInput`. Any properties\n * supported by `HTMLInputElement` can be specified, apart from the\n * following which are set by `Autocomplete`: value, autoComplete, role,\n * aria-autocomplete. `inputProps` is commonly used for (but not limited to)\n * placeholder, event handlers (onFocus, onBlur, etc.), autoFocus, etc..\n */\n inputProps: PropTypes.object,\n /**\n * Props that are applied to the element which wraps the `` and\n * dropdown menu elements rendered by `Autocomplete`. This is in addition to\n * the following properties set by `Autocomplete`: role, aria-expanded.\n */\n wrapperProps: PropTypes.object,\n /**\n * This is a shorthand for `wrapperProps={{ style: }}`.\n * Note that `wrapperStyle` is applied before `wrapperProps`, so the latter\n * will win if it contains a `style` entry.\n */\n wrapperStyle: PropTypes.object,\n /**\n * Whether or not to automatically highlight the top match in the dropdown\n * menu.\n */\n autoHighlight: PropTypes.bool,\n /**\n * Whether or not to automatically select the highlighted item when the\n * `` loses focus.\n */\n selectOnBlur: PropTypes.bool,\n /**\n * Arguments: `isOpen: Boolean`\n *\n * Invoked every time the dropdown menu's visibility changes (i.e. every\n * time it is displayed/hidden).\n */\n onMenuVisibilityChange: PropTypes.func,\n /**\n * Used to override the internal logic which displays/hides the dropdown\n * menu. This is useful if you want to force a certain state based on your\n * UX/business logic. Use it together with `onMenuVisibilityChange` for\n * fine-grained control over the dropdown menu dynamics.\n */\n open: PropTypes.bool,\n debug: PropTypes.bool,\n }\n\n static defaultProps = {\n value: '',\n wrapperProps: {},\n wrapperStyle: {\n display: 'inline-block'\n },\n inputProps: {},\n renderInput(props) {\n return \n },\n onChange() {},\n onSelect() {},\n isItemSelectable() { return true },\n renderMenu(items, value, style) {\n return
\n },\n menuStyle: {\n borderRadius: '3px',\n boxShadow: '0 2px 12px rgba(0, 0, 0, 0.1)',\n background: 'rgba(255, 255, 255, 0.9)',\n padding: '2px 0',\n fontSize: '90%',\n position: 'fixed',\n overflow: 'auto',\n maxHeight: '50%', // TODO: don't cheat, let it flow to the bottom\n },\n autoHighlight: true,\n selectOnBlur: false,\n onMenuVisibilityChange() {},\n }\n\n constructor(props) {\n super(props)\n this.state = {\n isOpen: false,\n highlightedIndex: null,\n }\n this._debugStates = []\n this.ensureHighlightedIndex = this.ensureHighlightedIndex.bind(this)\n this.exposeAPI = this.exposeAPI.bind(this)\n this.handleInputFocus = this.handleInputFocus.bind(this)\n this.handleInputBlur = this.handleInputBlur.bind(this)\n this.handleChange = this.handleChange.bind(this)\n this.handleKeyDown = this.handleKeyDown.bind(this)\n this.handleInputClick = this.handleInputClick.bind(this)\n this.maybeAutoCompleteText = this.maybeAutoCompleteText.bind(this)\n }\n\n componentWillMount() {\n // this.refs is frozen, so we need to assign a new object to it\n this.refs = {}\n this._ignoreBlur = false\n this._ignoreFocus = false\n this._scrollOffset = null\n this._scrollTimer = null\n }\n\n componentWillUnmount() {\n clearTimeout(this._scrollTimer)\n this._scrollTimer = null\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.state.highlightedIndex !== null) {\n this.setState(this.ensureHighlightedIndex)\n }\n if (nextProps.autoHighlight && (this.props.value !== nextProps.value || this.state.highlightedIndex === null)) {\n this.setState(this.maybeAutoCompleteText)\n }\n }\n\n componentDidMount() {\n if (this.isOpen()) {\n this.setMenuPositions()\n }\n }\n\n componentDidUpdate(prevProps, prevState) {\n if ((this.state.isOpen && !prevState.isOpen) || ('open' in this.props && this.props.open && !prevProps.open))\n this.setMenuPositions()\n\n this.maybeScrollItemIntoView()\n if (prevState.isOpen !== this.state.isOpen) {\n this.props.onMenuVisibilityChange(this.state.isOpen)\n }\n }\n\n exposeAPI(el) {\n this.refs.input = el\n IMPERATIVE_API.forEach(ev => this[ev] = (el && el[ev] && el[ev].bind(el)))\n }\n\n maybeScrollItemIntoView() {\n if (this.isOpen() && this.state.highlightedIndex !== null) {\n const itemNode = this.refs[`item-${this.state.highlightedIndex}`]\n const menuNode = this.refs.menu\n scrollIntoView(\n findDOMNode(itemNode),\n findDOMNode(menuNode),\n { onlyScrollIfNeeded: true }\n )\n }\n }\n\n handleKeyDown(event) {\n if (Autocomplete.keyDownHandlers[event.key])\n Autocomplete.keyDownHandlers[event.key].call(this, event)\n else if (!this.isOpen()) {\n this.setState({\n isOpen: true\n })\n }\n }\n\n handleChange(event) {\n this.props.onChange(event, event.target.value)\n }\n\n static keyDownHandlers = {\n ArrowDown(event) {\n event.preventDefault()\n const items = this.getFilteredItems(this.props)\n if (!items.length) return\n const { highlightedIndex } = this.state\n let index = highlightedIndex === null ? -1 : highlightedIndex\n for (let i = 0; i < items.length ; i++) {\n const p = (index + i + 1) % items.length\n if (this.props.isItemSelectable(items[p])) {\n index = p\n break\n }\n }\n if (index > -1 && index !== highlightedIndex) {\n this.setState({\n highlightedIndex: index,\n isOpen: true,\n })\n }\n },\n\n ArrowUp(event) {\n event.preventDefault()\n const items = this.getFilteredItems(this.props)\n if (!items.length) return\n const { highlightedIndex } = this.state\n let index = highlightedIndex === null ? items.length : highlightedIndex\n for (let i = 0; i < items.length ; i++) {\n const p = (index - (1 + i) + items.length) % items.length\n if (this.props.isItemSelectable(items[p])) {\n index = p\n break\n }\n }\n if (index !== items.length) {\n this.setState({\n highlightedIndex: index,\n isOpen: true,\n })\n }\n },\n\n Enter(event) {\n // Key code 229 is used for selecting items from character selectors (Pinyin, Kana, etc)\n if (event.keyCode !== 13) return\n // In case the user is currently hovering over the menu\n this.setIgnoreBlur(false)\n if (!this.isOpen()) {\n // menu is closed so there is no selection to accept -> do nothing\n return\n }\n else if (this.state.highlightedIndex == null) {\n // input has focus but no menu item is selected + enter is hit -> close the menu, highlight whatever's in input\n this.setState({\n isOpen: false\n }, () => {\n this.refs.input.select()\n })\n }\n else {\n // text entered + menu item has been highlighted + enter is hit -> update value to that of selected menu item, close the menu\n event.preventDefault()\n const item = this.getFilteredItems(this.props)[this.state.highlightedIndex]\n const value = this.props.getItemValue(item)\n this.setState({\n isOpen: false,\n highlightedIndex: null\n }, () => {\n //this.refs.input.focus() // TODO: file issue\n this.refs.input.setSelectionRange(\n value.length,\n value.length\n )\n this.props.onSelect(value, item)\n })\n }\n },\n\n Escape() {\n // In case the user is currently hovering over the menu\n this.setIgnoreBlur(false)\n this.setState({\n highlightedIndex: null,\n isOpen: false\n })\n },\n\n Tab() {\n // In case the user is currently hovering over the menu\n this.setIgnoreBlur(false)\n },\n }\n\n getFilteredItems(props) {\n let items = props.items\n\n if (props.shouldItemRender) {\n items = items.filter((item) => (\n props.shouldItemRender(item, props.value)\n ))\n }\n\n if (props.sortItems) {\n items.sort((a, b) => (\n props.sortItems(a, b, props.value)\n ))\n }\n\n return items\n }\n\n maybeAutoCompleteText(state, props) {\n const { highlightedIndex } = state\n const { value, getItemValue } = props\n let index = highlightedIndex === null ? 0 : highlightedIndex\n let items = this.getFilteredItems(props)\n for (let i = 0; i < items.length ; i++) {\n if (props.isItemSelectable(items[index]))\n break\n index = (index + 1) % items.length\n }\n const matchedItem = items[index] && props.isItemSelectable(items[index]) ? items[index] : null\n if (value !== '' && matchedItem) {\n const itemValue = getItemValue(matchedItem)\n const itemValueDoesMatch = (itemValue.toLowerCase().indexOf(\n value.toLowerCase()\n ) === 0)\n if (itemValueDoesMatch) {\n return { highlightedIndex: index }\n }\n }\n return { highlightedIndex: null }\n }\n\n ensureHighlightedIndex(state, props) {\n if (state.highlightedIndex >= this.getFilteredItems(props).length) {\n return { highlightedIndex: null }\n }\n }\n\n setMenuPositions() {\n const node = this.refs.input\n const rect = node.getBoundingClientRect()\n const computedStyle = global.window.getComputedStyle(node)\n const marginBottom = parseInt(computedStyle.marginBottom, 10) || 0\n const marginLeft = parseInt(computedStyle.marginLeft, 10) || 0\n const marginRight = parseInt(computedStyle.marginRight, 10) || 0\n this.setState({\n menuTop: rect.bottom + marginBottom,\n menuLeft: rect.left + marginLeft,\n menuWidth: rect.width + marginLeft + marginRight\n })\n }\n\n highlightItemFromMouse(index) {\n this.setState({ highlightedIndex: index })\n }\n\n selectItemFromMouse(item) {\n const value = this.props.getItemValue(item)\n // The menu will de-render before a mouseLeave event\n // happens. Clear the flag to release control over focus\n this.setIgnoreBlur(false)\n this.setState({\n isOpen: false,\n highlightedIndex: null\n }, () => {\n this.props.onSelect(value, item)\n })\n }\n\n setIgnoreBlur(ignore) {\n this._ignoreBlur = ignore\n }\n\n renderMenu() {\n const items = this.getFilteredItems(this.props).map((item, index) => {\n const element = this.props.renderItem(\n item,\n this.state.highlightedIndex === index,\n { cursor: 'default' }\n )\n return React.cloneElement(element, {\n onMouseEnter: this.props.isItemSelectable(item) ?\n () => this.highlightItemFromMouse(index) : null,\n onClick: this.props.isItemSelectable(item) ?\n () => this.selectItemFromMouse(item) : null,\n ref: e => this.refs[`item-${index}`] = e,\n })\n })\n const style = {\n left: this.state.menuLeft,\n top: this.state.menuTop,\n minWidth: this.state.menuWidth,\n }\n const menu = this.props.renderMenu(items, this.props.value, style)\n return React.cloneElement(menu, {\n ref: e => this.refs.menu = e,\n // Ignore blur to prevent menu from de-rendering before we can process click\n onTouchStart: () => this.setIgnoreBlur(true),\n onMouseEnter: () => this.setIgnoreBlur(true),\n onMouseLeave: () => this.setIgnoreBlur(false),\n })\n }\n\n handleInputBlur(event) {\n if (this._ignoreBlur) {\n this._ignoreFocus = true\n this._scrollOffset = getScrollOffset()\n this.refs.input.focus()\n return\n }\n let setStateCallback\n const { highlightedIndex } = this.state\n if (this.props.selectOnBlur && highlightedIndex !== null) {\n const items = this.getFilteredItems(this.props)\n const item = items[highlightedIndex]\n const value = this.props.getItemValue(item)\n setStateCallback = () => this.props.onSelect(value, item)\n }\n this.setState({\n isOpen: false,\n highlightedIndex: null\n }, setStateCallback)\n const { onBlur } = this.props.inputProps\n if (onBlur) {\n onBlur(event)\n }\n }\n\n handleInputFocus(event) {\n if (this._ignoreFocus) {\n this._ignoreFocus = false\n const { x, y } = this._scrollOffset\n this._scrollOffset = null\n // Focus will cause the browser to scroll the into view.\n // This can cause the mouse coords to change, which in turn\n // could cause a new highlight to happen, cancelling the click\n // event (when selecting with the mouse)\n window.scrollTo(x, y)\n // Some browsers wait until all focus event handlers have been\n // processed before scrolling the into view, so let's\n // scroll again on the next tick to ensure we're back to where\n // the user was before focus was lost. We could do the deferred\n // scroll only, but that causes a jarring split second jump in\n // some browsers that scroll before the focus event handlers\n // are triggered.\n clearTimeout(this._scrollTimer)\n this._scrollTimer = setTimeout(() => {\n this._scrollTimer = null\n window.scrollTo(x, y)\n }, 0)\n return\n }\n this.setState({ isOpen: true })\n const { onFocus } = this.props.inputProps\n if (onFocus) {\n onFocus(event)\n }\n }\n\n isInputFocused() {\n const el = this.refs.input\n return el.ownerDocument && (el === el.ownerDocument.activeElement)\n }\n\n handleInputClick() {\n // Input will not be focused if it's disabled\n if (this.isInputFocused() && !this.isOpen())\n this.setState({ isOpen: true })\n }\n\n composeEventHandlers(internal, external) {\n return external\n ? e => { internal(e); external(e) }\n : internal\n }\n\n isOpen() {\n return 'open' in this.props ? this.props.open : this.state.isOpen\n }\n\n render() {\n if (this.props.debug) { // you don't like it, you love it\n this._debugStates.push({\n id: this._debugStates.length,\n state: this.state\n })\n }\n\n const { inputProps } = this.props\n const open = this.isOpen()\n return (\n
}
diff --git a/examples/static-data/app.js b/examples/static-data/app.js
index adb5e3ea..d2a6f651 100644
--- a/examples/static-data/app.js
+++ b/examples/static-data/app.js
@@ -25,12 +25,13 @@ class App extends React.Component {
onChange={(event, value) => this.setState({ value })}
onSelect={value => this.setState({ value })}
renderMenu={children => (
-
+
{children}
)}
renderItem={(item, isHighlighted) => (
{item.name}
diff --git a/lib/Autocomplete.js b/lib/Autocomplete.js
index 1658c8bb..92ae6ed0 100644
--- a/lib/Autocomplete.js
+++ b/lib/Autocomplete.js
@@ -123,7 +123,8 @@ class Autocomplete extends React.Component {
inputProps: PropTypes.object,
/**
* Props that are applied to the element which wraps the `` and
- * dropdown menu elements rendered by `Autocomplete`.
+ * dropdown menu elements rendered by `Autocomplete`. This is in addition to
+ * the following properties set by `Autocomplete`: role, aria-expanded.
*/
wrapperProps: PropTypes.object,
/**
@@ -173,7 +174,7 @@ class Autocomplete extends React.Component {
onSelect() {},
isItemSelectable() { return true },
renderMenu(items, value, style) {
- return