Socket
Socket
Sign inDemoInstall

react-geosuggest

Package Overview
Dependencies
Maintainers
3
Versions
64
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-geosuggest - npm Package Compare versions

Comparing version 2.0.0 to 2.1.0

.nyc_output/24488.json

25

CHANGELOG.md

@@ -0,1 +1,26 @@

## 2.1.0 (2017-01-11)
#### Bug Fixes
* Do not use setState to save timer instance. ([3709fdb6](https://github.com/ubilabs/react-geosuggest/commit/3709fdb6f8d7d8e7133c153398be87268b445a7a))
#### Features
* changed to use reacts internal shallowCompare func ([c66051d5](https://github.com/ubilabs/react-geosuggest/commit/c66051d53507d217630ca89d2a677c93ebce7d98))
* add blur() ([d16c61](https://github.com/ubilabs/react-geosuggest/commit/d16c6105557bcca8dabc160927a448d86f06ffbe))
* Added ARIA attributes to whitelist ([5cb3f9a6](https://github.com/ubilabs/react-geosuggest/commit/5cb3f9a6560e032bd1188fb7d1893bf7154446ac))
* **label:** add BEM class to geosuggest label ([fb79f34e](https://github.com/ubilabs/react-geosuggest/commit/fb79f34eceed01eeaeb94e8cfe20a4b0205e908e))
* **style**:
* allow custom hidden list class and active item class ([57338753](https://github.com/ubilabs/react-geosuggest/commit/57338753de65fffd839e7d3285e690d3fd098505))
* Allow adding custom classes to the suggest list and suggest item ([ed69df6c](https://github.com/ubilabs/react-geosuggest/commit/ed69df6c090772861e17dcafddd31bb1157b2611))
## 2.0.1
#### Bug Fixes
* **refactor:** changed to use reacts internal shallowCompare
## 2.0.0 (2016-10-07)

@@ -2,0 +27,0 @@

106

dist/react-geosuggest.js

@@ -79,3 +79,4 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Geosuggest = f()}})(function(){var define,module,exports;return (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<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){

// Steps 6.b-6.e: +0 != -0
return x !== 0 || 1 / x === 1 / y;
// Added the nonzero y check to make Flow happy, but it is redundant
return x !== 0 || y !== 0 || 1 / x === 1 / y;
} else {

@@ -501,4 +502,2 @@ // Step 6.a: NaN == NaN

},{}],4:[function(require,module,exports){
module.exports = require('react/lib/shallowCompare');
},{"react/lib/shallowCompare":5}],5:[function(require,module,exports){
/**

@@ -512,4 +511,3 @@ * Copyright 2013-present, Facebook, Inc.

*
* @providesModule shallowCompare
*/
*/

@@ -530,3 +528,3 @@ 'use strict';

module.exports = shallowCompare;
},{"fbjs/lib/shallowEqual":2}],6:[function(require,module,exports){
},{"fbjs/lib/shallowEqual":2}],5:[function(require,module,exports){
'use strict';

@@ -651,3 +649,3 @@

_this.props.onBlur(_this.state.userInput);
var timer = setTimeout(function () {
_this.timer = setTimeout(function () {
_this.setState({

@@ -658,4 +656,2 @@ isSuggestsHidden: true,

}, 100);
_this.setState({ timer: timer });
};

@@ -689,4 +685,3 @@

activeSuggest: null,
suggests: [],
timer: null
suggests: []
};

@@ -752,3 +747,3 @@

value: function componentWillUnmount() {
clearTimeout(this.state.timer);
clearTimeout(this.timer);
}

@@ -788,2 +783,12 @@

/**
* Blur the input
*/
}, {
key: 'blur',
value: function blur() {
this.refs.input.blur();
}
/**
* Update the value of the user input

@@ -864,3 +869,3 @@ * @param {String} userInput the new value of the user input

var suggestsGoogle = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
var suggestsGoogle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var callback = arguments[1];

@@ -912,3 +917,3 @@

value: function updateActiveSuggest() {
var suggests = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
var suggests = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];

@@ -1042,3 +1047,7 @@ var activeSuggest = this.state.activeSuggest;

suggestItemStyle: this.props.style.suggestItem,
suggestsClassName: this.props.suggestsClassName,
suggestItemClassName: this.props.suggestItemClassName,
suggests: this.state.suggests,
hiddenClassName: this.props.suggestsHiddenClassName,
suggestItemActiveClassName: this.props.suggestItemActiveClassName,
activeSuggest: this.state.activeSuggest,

@@ -1058,3 +1067,4 @@ onSuggestNoResults: this.onSuggestNoResults,

'label',
{ htmlFor: attributes.id },
{ className: 'geosuggest__label',
htmlFor: attributes.id },
this.props.label

@@ -1092,3 +1102,3 @@ ),

},{"./defaults":7,"./filter-input-attributes":8,"./input":9,"./prop-types":10,"./suggest-list":12,"classnames":1,"lodash.debounce":3}],7:[function(require,module,exports){
},{"./defaults":6,"./filter-input-attributes":7,"./input":8,"./prop-types":9,"./suggest-list":11,"classnames":1,"lodash.debounce":3}],6:[function(require,module,exports){
'use strict';

@@ -1136,3 +1146,3 @@

},{}],8:[function(require,module,exports){
},{}],7:[function(require,module,exports){
'use strict';

@@ -1159,3 +1169,3 @@

*/
var allowedAttributes = ['autoFocus', 'disabled', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget', 'height', 'id', 'inputMode', 'maxLength', 'name', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onDoubleClick', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onPaste', 'pattern', 'placeholder', 'readOnly', 'required', 'size', 'spellCheck', 'tabIndex'];
var allowedAttributes = ['autoFocus', 'disabled', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget', 'height', 'id', 'inputMode', 'maxLength', 'name', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onDoubleClick', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onPaste', 'pattern', 'placeholder', 'readOnly', 'required', 'size', 'spellCheck', 'tabIndex', 'aria-atomic', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription', 'aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-placeholder', 'aria-readonly', 'aria-required'];

@@ -1168,3 +1178,3 @@ /**

},{}],9:[function(require,module,exports){
},{}],8:[function(require,module,exports){
'use strict';

@@ -1184,5 +1194,5 @@

var _reactAddonsShallowCompare = require('react-addons-shallow-compare');
var _shallowCompare = require('react/lib/shallowCompare');
var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare);
var _shallowCompare2 = _interopRequireDefault(_shallowCompare);

@@ -1281,3 +1291,3 @@ var _classnames = require('classnames');

value: function shouldComponentUpdate(nextProps, nextState) {
return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState);
return (0, _shallowCompare2.default)(this, nextProps, nextState);
}

@@ -1323,2 +1333,12 @@

/**
* Blur the input
*/
}, {
key: 'blur',
value: function blur() {
this.refs.input.blur();
}
/**
* Render the view

@@ -1368,3 +1388,3 @@ * @return {Function} The React element to render

},{"./filter-input-attributes":8,"classnames":1,"react-addons-shallow-compare":4}],10:[function(require,module,exports){
},{"./filter-input-attributes":7,"classnames":1,"react/lib/shallowCompare":4}],9:[function(require,module,exports){
'use strict';

@@ -1392,2 +1412,6 @@

inputClassName: _react2.default.PropTypes.string,
suggestsClassName: _react2.default.PropTypes.string,
suggestsHiddenClassName: _react2.default.PropTypes.string,
suggestItemClassName: _react2.default.PropTypes.string,
suggestItemActiveClassName: _react2.default.PropTypes.string,
location: _react2.default.PropTypes.object,

@@ -1417,3 +1441,3 @@ radius: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]),

},{}],11:[function(require,module,exports){
},{}],10:[function(require,module,exports){
'use strict';

@@ -1431,12 +1455,14 @@

var _reactAddonsShallowCompare = require('react-addons-shallow-compare');
var _shallowCompare = require('react/lib/shallowCompare');
var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare);
var _shallowCompare2 = _interopRequireDefault(_shallowCompare);
var _classnames = require('classnames');
var _classnames2 = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _classnames3 = _interopRequireDefault(_classnames2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

@@ -1483,3 +1509,3 @@

value: function shouldComponentUpdate(nextProps, nextState) {
return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState);
return (0, _shallowCompare2.default)(this, nextProps, nextState);
}

@@ -1501,3 +1527,3 @@

value: function render() {
var classes = (0, _classnames2.default)('geosuggest__item', this.props.className, { 'geosuggest__item--active': this.props.isActive });
var classes = (0, _classnames3.default)('geosuggest__item', this.props.className, this.props.suggestItemClassName, { 'geosuggest__item--active': this.props.isActive }, _defineProperty({}, this.props.activeClassname, this.props.activeClassname ? this.props.isActive : null));

@@ -1532,3 +1558,3 @@ return _react2.default.createElement(

},{"classnames":1,"react-addons-shallow-compare":4}],12:[function(require,module,exports){
},{"classnames":1,"react/lib/shallowCompare":4}],11:[function(require,module,exports){
'use strict';

@@ -1546,9 +1572,9 @@

var _reactAddonsShallowCompare = require('react-addons-shallow-compare');
var _shallowCompare = require('react/lib/shallowCompare');
var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare);
var _shallowCompare2 = _interopRequireDefault(_shallowCompare);
var _classnames = require('classnames');
var _classnames2 = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _classnames3 = _interopRequireDefault(_classnames2);

@@ -1561,2 +1587,4 @@ var _suggestItem = require('./suggest-item');

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

@@ -1593,3 +1621,3 @@

value: function shouldComponentUpdate(nextProps, nextState) {
return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState);
return (0, _shallowCompare2.default)(this, nextProps, nextState);
}

@@ -1633,3 +1661,3 @@

var classes = (0, _classnames2.default)('geosuggest__suggests', { 'geosuggest__suggests--hidden': this.isHidden() });
var classes = (0, _classnames3.default)('geosuggest__suggests', this.props.suggestsClassName, { 'geosuggest__suggests--hidden': this.isHidden() }, _defineProperty({}, this.props.hiddenClassName, this.props.hiddenClassName ? this.isHidden() : null));

@@ -1646,3 +1674,5 @@ return _react2.default.createElement(

style: _this2.props.suggestItemStyle,
suggestItemClassName: _this2.props.suggestItemClassName,
isActive: isActive,
activeClassname: _this2.props.suggestItemActiveClassName,
onMouseDown: _this2.props.onSuggestMouseDown,

@@ -1671,3 +1701,3 @@ onMouseOut: _this2.props.onSuggestMouseOut,

},{"./suggest-item":11,"classnames":1,"react-addons-shallow-compare":4}]},{},[6])(6)
},{"./suggest-item":10,"classnames":1,"react/lib/shallowCompare":4}]},{},[5])(5)
});

@@ -1,1 +0,1 @@

!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.Geosuggest=e()}}(function(){var e;return function t(e,n,o){function s(r,i){if(!n[r]){if(!e[r]){var a="function"==typeof require&&require;if(!i&&a)return a(r,!0);if(u)return u(r,!0);var l=new Error("Cannot find module '"+r+"'");throw l.code="MODULE_NOT_FOUND",l}var p=n[r]={exports:{}};e[r][0].call(p.exports,function(t){var n=e[r][1][t];return s(n?n:t)},p,p.exports,t,e,n,o)}return n[r].exports}for(var u="function"==typeof require&&require,r=0;r<o.length;r++)s(o[r]);return s}({1:[function(t,n){!function(){"use strict";function t(){for(var e=[],n=0;n<arguments.length;n++){var s=arguments[n];if(s){var u=typeof s;if("string"===u||"number"===u)e.push(s);else if(Array.isArray(s))e.push(t.apply(null,s));else if("object"===u)for(var r in s)o.call(s,r)&&s[r]&&e.push(r)}}return e.join(" ")}var o={}.hasOwnProperty;"undefined"!=typeof n&&n.exports?n.exports=t:"function"==typeof e&&"object"==typeof e.amd&&e.amd?e("classnames",[],function(){return t}):window.classNames=t}()},{}],2:[function(e,t){"use strict";function n(e,t){return e===t?0!==e||1/e===1/t:e!==e&&t!==t}function o(e,t){if(n(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var o=Object.keys(e),u=Object.keys(t);if(o.length!==u.length)return!1;for(var r=0;r<o.length;r++)if(!s.call(t,o[r])||!n(e[o[r]],t[o[r]]))return!1;return!0}var s=Object.prototype.hasOwnProperty;t.exports=o},{}],3:[function(e,t){(function(e){function n(e,t,n){function s(t){var n=h,o=y;return h=y=void 0,O=t,b=e.apply(o,n)}function u(e){return O=e,m=setTimeout(p,t),j?s(e):b}function a(e){var n=e-_,o=e-O,s=t-n;return T?w(s,v-o):s}function l(e){var n=e-_,o=e-O;return void 0===_||n>=t||0>n||T&&o>=v}function p(){var e=P();return l(e)?c(e):void(m=setTimeout(p,a(e)))}function c(e){return m=void 0,I&&h?s(e):(h=y=void 0,b)}function f(){void 0!==m&&clearTimeout(m),O=0,h=_=y=m=void 0}function g(){return void 0===m?b:c(P())}function d(){var e=P(),n=l(e);if(h=arguments,y=this,_=e,n){if(void 0===m)return u(_);if(T)return m=setTimeout(p,t),s(_)}return void 0===m&&(m=setTimeout(p,t)),b}var h,y,v,b,m,_,O=0,j=!1,T=!1,I=!0;if("function"!=typeof e)throw new TypeError(i);return t=r(t)||0,o(n)&&(j=!!n.leading,T="maxWait"in n,v=T?S(r(n.maxWait)||0,t):v,I="trailing"in n?!!n.trailing:I),d.cancel=f,d.flush=g,d}function o(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function s(e){return!!e&&"object"==typeof e}function u(e){return"symbol"==typeof e||s(e)&&m.call(e)==l}function r(e){if("number"==typeof e)return e;if(u(e))return a;if(o(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(p,"");var n=f.test(e);return n||g.test(e)?d(e.slice(2),n?2:8):c.test(e)?a:+e}var i="Expected a function",a=0/0,l="[object Symbol]",p=/^\s+|\s+$/g,c=/^[-+]0x[0-9a-f]+$/i,f=/^0b[01]+$/i,g=/^0o[0-7]+$/i,d=parseInt,h="object"==typeof e&&e&&e.Object===Object&&e,y="object"==typeof self&&self&&self.Object===Object&&self,v=h||y||Function("return this")(),b=Object.prototype,m=b.toString,S=Math.max,w=Math.min,P=function(){return v.Date.now()};t.exports=n}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t){t.exports=e("react/lib/shallowCompare")},{"react/lib/shallowCompare":5}],5:[function(e,t){"use strict";function n(e,t,n){return!o(e.props,t)||!o(e.state,n)}var o=e("fbjs/lib/shallowEqual");t.exports=n},{"fbjs/lib/shallowEqual":2}],6:[function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function i(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}Object.defineProperty(n,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},l=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),p=window.React,c=o(p),f=e("classnames"),g=o(f),d=e("lodash.debounce"),h=o(d),y=e("./defaults"),v=o(y),b=e("./prop-types"),m=o(b),S=e("./filter-input-attributes"),w=o(S),P=e("./input"),_=o(P),O=e("./suggest-list"),j=o(O),T=function(e){function t(e){s(this,t);var n=u(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return n.onInputChange=function(e){n.setState({userInput:e},n.onAfterInputChange)},n.onAfterInputChange=function(){n.state.isSuggestsHidden||n.showSuggests(),n.props.onChange(n.state.userInput)},n.onInputFocus=function(){n.props.onFocus(),n.showSuggests()},n.onInputBlur=function(){n.state.ignoreBlur||n.hideSuggests()},n.onNext=function(){return n.activateSuggest("next")},n.onPrev=function(){return n.activateSuggest("prev")},n.onSelect=function(){return n.selectSuggest(n.state.activeSuggest)},n.onSuggestMouseDown=function(){return n.setState({ignoreBlur:!0})},n.onSuggestMouseOut=function(){return n.setState({ignoreBlur:!1})},n.onSuggestNoResults=function(){n.props.onSuggestNoResults(n.state.userInput)},n.hideSuggests=function(){n.props.onBlur(n.state.userInput);var e=setTimeout(function(){n.setState({isSuggestsHidden:!0,activeSuggest:null})},100);n.setState({timer:e})},n.selectSuggest=function(e){return e||(e={label:n.state.userInput}),n.setState({isSuggestsHidden:!0,userInput:e.label}),e.location?(n.setState({ignoreBlur:!1}),void n.props.onSuggestSelect(e)):void n.geocodeSuggest(e)},n.state={isSuggestsHidden:!0,isLoading:!1,userInput:e.initialValue,activeSuggest:null,suggests:[],timer:null},n.onInputChange=n.onInputChange.bind(n),n.onAfterInputChange=n.onAfterInputChange.bind(n),e.queryDelay&&(n.onAfterInputChange=h["default"](n.onAfterInputChange,e.queryDelay)),n}return r(t,e),l(t,[{key:"componentWillReceiveProps",value:function(e){this.props.initialValue!==e.initialValue&&this.setState({userInput:e.initialValue})}},{key:"componentWillMount",value:function(){if("undefined"!=typeof window){var e=this.props.googleMaps||window.google&&window.google.maps||this.googleMaps;e&&(this.googleMaps=e,this.autocompleteService=new e.places.AutocompleteService,this.geocoder=new e.Geocoder)}}},{key:"componentWillUnmount",value:function(){clearTimeout(this.state.timer)}},{key:"focus",value:function(){this.refs.input.focus()}},{key:"update",value:function(e){this.setState({userInput:e}),this.props.onChange(e)}},{key:"clear",value:function(){this.setState({userInput:""},this.hideSuggests)}},{key:"searchSuggests",value:function(){var e=this;if(!this.state.userInput)return void this.updateSuggests();var t={input:this.state.userInput};["location","radius","bounds","types"].forEach(function(n){e.props[n]&&(t[n]=e.props[n])}),this.props.country&&(t.componentRestrictions={country:this.props.country}),this.setState({isLoading:!0},function(){e.autocompleteService.getPlacePredictions(t,function(t){e.setState({isLoading:!1}),e.updateSuggests(t||[],function(){e.props.autoActivateFirstSuggest&&!e.state.activeSuggest&&e.activateSuggest("next")})})})}},{key:"updateSuggests",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],n=arguments[1],o=[],s=new RegExp(i(this.state.userInput),"gim"),u=this.props.skipSuggest,r=10,a=0,l=null;this.props.fixtures.forEach(function(e){a>=r||!u(e)&&e.label.match(s)&&(a++,e.placeId=e.label,e.isFixture=!0,o.push(e))}),t.forEach(function(t){u(t)||o.push({label:e.props.getSuggestLabel(t),placeId:t.place_id,isFixture:!1})}),l=this.updateActiveSuggest(o),this.setState({suggests:o,activeSuggest:l},n)}},{key:"updateActiveSuggest",value:function(){var e=arguments.length<=0||void 0===arguments[0]?[]:arguments[0],t=this.state.activeSuggest;if(t){var n=e.find(function(e){return t.placeId===e.placeId&&t.isFixture===e.isFixture});t=n||null}return t}},{key:"showSuggests",value:function(){this.searchSuggests(),this.setState({isSuggestsHidden:!1})}},{key:"activateSuggest",value:function(e){if(this.state.isSuggestsHidden)return void this.showSuggests();var t=this.state.suggests.length-1,n="next"===e,o=null,s=0,u=0;for(u;t>=u;u++)this.state.suggests[u]===this.state.activeSuggest&&(s=n?u+1:u-1);this.state.activeSuggest||(s=n?0:t),s>=0&&t>=s&&(o=this.state.suggests[s]),this.props.onActivateSuggest(o),this.setState({activeSuggest:o})}},{key:"geocodeSuggest",value:function(e){var t=this;this.geocoder.geocode(e.placeId&&!e.isFixture?{placeId:e.placeId}:{address:e.label},function(n,o){if(o===t.googleMaps.GeocoderStatus.OK){var s=n[0],u=s.geometry.location;e.gmaps=s,e.location={lat:u.lat(),lng:u.lng()}}t.props.onSuggestSelect(e)})}},{key:"render",value:function(){var e=w["default"](this.props),t=g["default"]("geosuggest",this.props.className,{"geosuggest--loading":this.state.isLoading}),n=this.props.label&&e.id,o=c["default"].createElement(_["default"],a({className:this.props.inputClassName,ref:"input",value:this.state.userInput,ignoreEnter:!this.state.isSuggestsHidden,ignoreTab:this.props.ignoreTab,style:this.props.style.input,onChange:this.onInputChange,onFocus:this.onInputFocus,onBlur:this.onInputBlur,onKeyPress:this.props.onKeyPress,onNext:this.onNext,onPrev:this.onPrev,onSelect:this.onSelect,onEscape:this.hideSuggests},e)),s=c["default"].createElement(j["default"],{isHidden:this.state.isSuggestsHidden,style:this.props.style.suggests,suggestItemStyle:this.props.style.suggestItem,suggests:this.state.suggests,activeSuggest:this.state.activeSuggest,onSuggestNoResults:this.onSuggestNoResults,onSuggestMouseDown:this.onSuggestMouseDown,onSuggestMouseOut:this.onSuggestMouseOut,onSuggestSelect:this.selectSuggest});return c["default"].createElement("div",{className:t},c["default"].createElement("div",{className:"geosuggest__input-wrapper"},n&&c["default"].createElement("label",{htmlFor:e.id},this.props.label),o),c["default"].createElement("div",{className:"geosuggest__suggests-wrapper"},s))}}]),t}(c["default"].Component);T.propTypes=m["default"],T.defaultProps=v["default"],n["default"]=T},{"./defaults":7,"./filter-input-attributes":8,"./input":9,"./prop-types":10,"./suggest-list":12,classnames:1,"lodash.debounce":3}],7:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]={fixtures:[],initialValue:"",placeholder:"Search places",disabled:!1,className:"",inputClassName:"",location:null,radius:null,bounds:null,country:null,types:null,queryDelay:250,googleMaps:null,onActivateSuggest:function(){},onSuggestSelect:function(){},onSuggestNoResults:function(){},onFocus:function(){},onBlur:function(){},onChange:function(){},skipSuggest:function(){},getSuggestLabel:function(e){return e.description},autoActivateFirstSuggest:!1,style:{input:{},suggests:{},suggestItem:{}},ignoreTab:!1}},{}],8:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n["default"]=function(e){var t={};return o.forEach(function(n){e[n]&&(t[n]=e[n])}),t};var o=["autoFocus","disabled","form","formAction","formEncType","formMethod","formNoValidate","formTarget","height","id","inputMode","maxLength","name","onClick","onContextMenu","onCopy","onCut","onDoubleClick","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","pattern","placeholder","readOnly","required","size","spellCheck","tabIndex"]},{}],9:[function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},a=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),l=window.React,p=o(l),c=e("react-addons-shallow-compare"),f=o(c),g=e("classnames"),d=o(g),h=e("./filter-input-attributes"),y=o(h),v=function(e){function t(){var e,n,o,r;s(this,t);for(var i=arguments.length,a=Array(i),l=0;i>l;l++)a[l]=arguments[l];return n=o=u(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(a))),o.onChange=function(){o.props.onChange(o.refs.input.value)},o.onFocus=function(){o.props.onFocus()},o.onBlur=function(){o.props.onBlur()},o.onKeyPress=function(e){o.props.onKeyPress(e)},o.onInputKeyDown=function(e){switch(e.which){case 40:e.preventDefault(),o.props.onNext();break;case 38:e.preventDefault(),o.props.onPrev();break;case 13:o.props.ignoreEnter&&e.preventDefault(),o.props.onSelect();break;case 9:o.props.ignoreTab||o.props.onSelect();break;case 27:o.props.onEscape()}},r=n,u(o,r)}return r(t,e),a(t,[{key:"shouldComponentUpdate",value:function(e,t){return f["default"](this,e,t)}},{key:"focus",value:function(){this.refs.input.focus()}},{key:"render",value:function(){var e=y["default"](this.props),t=d["default"]("geosuggest__input",this.props.className);return p["default"].createElement("input",i({className:t,ref:"input",type:"text",autoComplete:"off"},e,{value:this.props.value,style:this.props.style,onKeyDown:this.onInputKeyDown,onChange:this.onChange,onKeyPress:this.onKeyPress,onFocus:this.onFocus,onBlur:this.onBlur}))}}]),t}(p["default"].Component);v.defaultProps={className:"",value:"",ignoreTab:!1,onKeyDown:function(){},onKeyPress:function(){}},n["default"]=v},{"./filter-input-attributes":8,classnames:1,"react-addons-shallow-compare":4}],10:[function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(n,"__esModule",{value:!0});var s=window.React,u=o(s);n["default"]={fixtures:u["default"].PropTypes.array,initialValue:u["default"].PropTypes.string,placeholder:u["default"].PropTypes.string,disabled:u["default"].PropTypes.bool,className:u["default"].PropTypes.string,inputClassName:u["default"].PropTypes.string,location:u["default"].PropTypes.object,radius:u["default"].PropTypes.oneOfType([u["default"].PropTypes.string,u["default"].PropTypes.number]),bounds:u["default"].PropTypes.object,country:u["default"].PropTypes.string,types:u["default"].PropTypes.array,queryDelay:u["default"].PropTypes.number,googleMaps:u["default"].PropTypes.object,onSuggestSelect:u["default"].PropTypes.func,onFocus:u["default"].PropTypes.func,onBlur:u["default"].PropTypes.func,onChange:u["default"].PropTypes.func,onKeyPress:u["default"].PropTypes.func,skipSuggest:u["default"].PropTypes.func,getSuggestLabel:u["default"].PropTypes.func,autoActivateFirstSuggest:u["default"].PropTypes.bool,style:u["default"].PropTypes.shape({input:u["default"].PropTypes.object,suggests:u["default"].PropTypes.object,suggestItem:u["default"].PropTypes.object}),ignoreTab:u["default"].PropTypes.bool,label:u["default"].PropTypes.string}},{}],11:[function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),a=window.React,l=o(a),p=e("react-addons-shallow-compare"),c=o(p),f=e("classnames"),g=o(f),d=function(e){function t(){var e,n,o,r;s(this,t);for(var i=arguments.length,a=Array(i),l=0;i>l;l++)a[l]=arguments[l];return n=o=u(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(a))),o.onClick=function(e){e.preventDefault(),o.props.onSelect(o.props.suggest)},r=n,u(o,r)}return r(t,e),i(t,[{key:"shouldComponentUpdate",value:function(e,t){return c["default"](this,e,t)}},{key:"render",value:function(){var e=g["default"]("geosuggest__item",this.props.className,{"geosuggest__item--active":this.props.isActive});return l["default"].createElement("li",{className:e,style:this.props.style,onMouseDown:this.props.onMouseDown,onMouseOut:this.props.onMouseOut,onClick:this.onClick},this.props.suggest.label)}}]),t}(l["default"].Component);n["default"]=d,d.defaultProps={isActive:!1,className:"",suggest:{}}},{classnames:1,"react-addons-shallow-compare":4}],12:[function(e,t,n){"use strict";function o(e){return e&&e.__esModule?e:{"default":e}}function s(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(n,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),a=window.React,l=o(a),p=e("react-addons-shallow-compare"),c=o(p),f=e("classnames"),g=o(f),d=e("./suggest-item"),h=o(d),y=function(e){function t(){return s(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return r(t,e),i(t,[{key:"shouldComponentUpdate",value:function(e,t){return c["default"](this,e,t)}},{key:"isHidden",value:function(){return this.props.isHidden||0===this.props.suggests.length}},{key:"componentWillReceiveProps",value:function(e){e.suggests!==this.props.suggests&&0===e.suggests.length&&this.props.onSuggestNoResults()}},{key:"render",value:function(){var e=this,t=g["default"]("geosuggest__suggests",{"geosuggest__suggests--hidden":this.isHidden()});return l["default"].createElement("ul",{className:t,style:this.props.style},this.props.suggests.map(function(t){var n=e.props.activeSuggest&&t.placeId===e.props.activeSuggest.placeId;return l["default"].createElement(h["default"],{key:t.placeId,className:t.className,suggest:t,style:e.props.suggestItemStyle,isActive:n,onMouseDown:e.props.onSuggestMouseDown,onMouseOut:e.props.onSuggestMouseOut,onSelect:e.props.onSuggestSelect})}))}}]),t}(l["default"].Component);n["default"]=y,y.defaultProps={isHidden:!0,suggests:[]}},{"./suggest-item":11,classnames:1,"react-addons-shallow-compare":4}]},{},[6])(6)});
!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.Geosuggest=e()}}(function(){var e;return function t(e,s,n){function o(u,a){if(!s[u]){if(!e[u]){var i="function"==typeof require&&require;if(!a&&i)return i(u,!0);if(r)return r(u,!0);var l=new Error("Cannot find module '"+u+"'");throw l.code="MODULE_NOT_FOUND",l}var p=s[u]={exports:{}};e[u][0].call(p.exports,function(t){var s=e[u][1][t];return o(s?s:t)},p,p.exports,t,e,s,n)}return s[u].exports}for(var r="function"==typeof require&&require,u=0;u<n.length;u++)o(n[u]);return o}({1:[function(t,s){!function(){"use strict";function t(){for(var e=[],s=0;s<arguments.length;s++){var o=arguments[s];if(o){var r=typeof o;if("string"===r||"number"===r)e.push(o);else if(Array.isArray(o))e.push(t.apply(null,o));else if("object"===r)for(var u in o)n.call(o,u)&&o[u]&&e.push(u)}}return e.join(" ")}var n={}.hasOwnProperty;"undefined"!=typeof s&&s.exports?s.exports=t:"function"==typeof e&&"object"==typeof e.amd&&e.amd?e("classnames",[],function(){return t}):window.classNames=t}()},{}],2:[function(e,t){"use strict";function s(e,t){return e===t?0!==e||0!==t||1/e===1/t:e!==e&&t!==t}function n(e,t){if(s(e,t))return!0;if("object"!=typeof e||null===e||"object"!=typeof t||null===t)return!1;var n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(var u=0;u<n.length;u++)if(!o.call(t,n[u])||!s(e[n[u]],t[n[u]]))return!1;return!0}var o=Object.prototype.hasOwnProperty;t.exports=n},{}],3:[function(e,t){(function(e){function s(e,t,s){function o(t){var s=h,n=y;return h=y=void 0,O=t,b=e.apply(n,s)}function r(e){return O=e,m=setTimeout(p,t),C?o(e):b}function i(e){var s=e-_,n=e-O,o=t-s;return j?w(o,v-n):o}function l(e){var s=e-_,n=e-O;return void 0===_||s>=t||0>s||j&&n>=v}function p(){var e=P();return l(e)?c(e):void(m=setTimeout(p,i(e)))}function c(e){return m=void 0,T&&h?o(e):(h=y=void 0,b)}function f(){void 0!==m&&clearTimeout(m),O=0,h=_=y=m=void 0}function g(){return void 0===m?b:c(P())}function d(){var e=P(),s=l(e);if(h=arguments,y=this,_=e,s){if(void 0===m)return r(_);if(j)return m=setTimeout(p,t),o(_)}return void 0===m&&(m=setTimeout(p,t)),b}var h,y,v,b,m,_,O=0,C=!1,j=!1,T=!0;if("function"!=typeof e)throw new TypeError(a);return t=u(t)||0,n(s)&&(C=!!s.leading,j="maxWait"in s,v=j?S(u(s.maxWait)||0,t):v,T="trailing"in s?!!s.trailing:T),d.cancel=f,d.flush=g,d}function n(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function o(e){return!!e&&"object"==typeof e}function r(e){return"symbol"==typeof e||o(e)&&m.call(e)==l}function u(e){if("number"==typeof e)return e;if(r(e))return i;if(n(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=n(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(p,"");var s=f.test(e);return s||g.test(e)?d(e.slice(2),s?2:8):c.test(e)?i:+e}var a="Expected a function",i=0/0,l="[object Symbol]",p=/^\s+|\s+$/g,c=/^[-+]0x[0-9a-f]+$/i,f=/^0b[01]+$/i,g=/^0o[0-7]+$/i,d=parseInt,h="object"==typeof e&&e&&e.Object===Object&&e,y="object"==typeof self&&self&&self.Object===Object&&self,v=h||y||Function("return this")(),b=Object.prototype,m=b.toString,S=Math.max,w=Math.min,P=function(){return v.Date.now()};t.exports=s}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],4:[function(e,t){"use strict";function s(e,t,s){return!n(e.props,t)||!n(e.state,s)}var n=e("fbjs/lib/shallowEqual");t.exports=s},{"fbjs/lib/shallowEqual":2}],5:[function(e,t,s){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function a(e){return e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}Object.defineProperty(s,"__esModule",{value:!0});var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n])}return e},l=function(){function e(e,t){for(var s=0;s<t.length;s++){var n=t[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,s,n){return s&&e(t.prototype,s),n&&e(t,n),t}}(),p=window.React,c=n(p),f=e("classnames"),g=n(f),d=e("lodash.debounce"),h=n(d),y=e("./defaults"),v=n(y),b=e("./prop-types"),m=n(b),S=e("./filter-input-attributes"),w=n(S),P=e("./input"),_=n(P),O=e("./suggest-list"),C=n(O),j=function(e){function t(e){o(this,t);var s=r(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e));return s.onInputChange=function(e){s.setState({userInput:e},s.onAfterInputChange)},s.onAfterInputChange=function(){s.state.isSuggestsHidden||s.showSuggests(),s.props.onChange(s.state.userInput)},s.onInputFocus=function(){s.props.onFocus(),s.showSuggests()},s.onInputBlur=function(){s.state.ignoreBlur||s.hideSuggests()},s.onNext=function(){return s.activateSuggest("next")},s.onPrev=function(){return s.activateSuggest("prev")},s.onSelect=function(){return s.selectSuggest(s.state.activeSuggest)},s.onSuggestMouseDown=function(){return s.setState({ignoreBlur:!0})},s.onSuggestMouseOut=function(){return s.setState({ignoreBlur:!1})},s.onSuggestNoResults=function(){s.props.onSuggestNoResults(s.state.userInput)},s.hideSuggests=function(){s.props.onBlur(s.state.userInput),s.timer=setTimeout(function(){s.setState({isSuggestsHidden:!0,activeSuggest:null})},100)},s.selectSuggest=function(e){return e||(e={label:s.state.userInput}),s.setState({isSuggestsHidden:!0,userInput:e.label}),e.location?(s.setState({ignoreBlur:!1}),void s.props.onSuggestSelect(e)):void s.geocodeSuggest(e)},s.state={isSuggestsHidden:!0,isLoading:!1,userInput:e.initialValue,activeSuggest:null,suggests:[]},s.onInputChange=s.onInputChange.bind(s),s.onAfterInputChange=s.onAfterInputChange.bind(s),e.queryDelay&&(s.onAfterInputChange=h["default"](s.onAfterInputChange,e.queryDelay)),s}return u(t,e),l(t,[{key:"componentWillReceiveProps",value:function(e){this.props.initialValue!==e.initialValue&&this.setState({userInput:e.initialValue})}},{key:"componentWillMount",value:function(){if("undefined"!=typeof window){var e=this.props.googleMaps||window.google&&window.google.maps||this.googleMaps;e&&(this.googleMaps=e,this.autocompleteService=new e.places.AutocompleteService,this.geocoder=new e.Geocoder)}}},{key:"componentWillUnmount",value:function(){clearTimeout(this.timer)}},{key:"focus",value:function(){this.refs.input.focus()}},{key:"blur",value:function(){this.refs.input.blur()}},{key:"update",value:function(e){this.setState({userInput:e}),this.props.onChange(e)}},{key:"clear",value:function(){this.setState({userInput:""},this.hideSuggests)}},{key:"searchSuggests",value:function(){var e=this;if(!this.state.userInput)return void this.updateSuggests();var t={input:this.state.userInput};["location","radius","bounds","types"].forEach(function(s){e.props[s]&&(t[s]=e.props[s])}),this.props.country&&(t.componentRestrictions={country:this.props.country}),this.setState({isLoading:!0},function(){e.autocompleteService.getPlacePredictions(t,function(t){e.setState({isLoading:!1}),e.updateSuggests(t||[],function(){e.props.autoActivateFirstSuggest&&!e.state.activeSuggest&&e.activateSuggest("next")})})})}},{key:"updateSuggests",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],s=arguments[1],n=[],o=new RegExp(a(this.state.userInput),"gim"),r=this.props.skipSuggest,u=10,i=0,l=null;this.props.fixtures.forEach(function(e){i>=u||!r(e)&&e.label.match(o)&&(i++,e.placeId=e.label,e.isFixture=!0,n.push(e))}),t.forEach(function(t){r(t)||n.push({label:e.props.getSuggestLabel(t),placeId:t.place_id,isFixture:!1})}),l=this.updateActiveSuggest(n),this.setState({suggests:n,activeSuggest:l},s)}},{key:"updateActiveSuggest",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=this.state.activeSuggest;if(t){var s=e.find(function(e){return t.placeId===e.placeId&&t.isFixture===e.isFixture});t=s||null}return t}},{key:"showSuggests",value:function(){this.searchSuggests(),this.setState({isSuggestsHidden:!1})}},{key:"activateSuggest",value:function(e){if(this.state.isSuggestsHidden)return void this.showSuggests();var t=this.state.suggests.length-1,s="next"===e,n=null,o=0,r=0;for(r;t>=r;r++)this.state.suggests[r]===this.state.activeSuggest&&(o=s?r+1:r-1);this.state.activeSuggest||(o=s?0:t),o>=0&&t>=o&&(n=this.state.suggests[o]),this.props.onActivateSuggest(n),this.setState({activeSuggest:n})}},{key:"geocodeSuggest",value:function(e){var t=this;this.geocoder.geocode(e.placeId&&!e.isFixture?{placeId:e.placeId}:{address:e.label},function(s,n){if(n===t.googleMaps.GeocoderStatus.OK){var o=s[0],r=o.geometry.location;e.gmaps=o,e.location={lat:r.lat(),lng:r.lng()}}t.props.onSuggestSelect(e)})}},{key:"render",value:function(){var e=w["default"](this.props),t=g["default"]("geosuggest",this.props.className,{"geosuggest--loading":this.state.isLoading}),s=this.props.label&&e.id,n=c["default"].createElement(_["default"],i({className:this.props.inputClassName,ref:"input",value:this.state.userInput,ignoreEnter:!this.state.isSuggestsHidden,ignoreTab:this.props.ignoreTab,style:this.props.style.input,onChange:this.onInputChange,onFocus:this.onInputFocus,onBlur:this.onInputBlur,onKeyPress:this.props.onKeyPress,onNext:this.onNext,onPrev:this.onPrev,onSelect:this.onSelect,onEscape:this.hideSuggests},e)),o=c["default"].createElement(C["default"],{isHidden:this.state.isSuggestsHidden,style:this.props.style.suggests,suggestItemStyle:this.props.style.suggestItem,suggestsClassName:this.props.suggestsClassName,suggestItemClassName:this.props.suggestItemClassName,suggests:this.state.suggests,hiddenClassName:this.props.suggestsHiddenClassName,suggestItemActiveClassName:this.props.suggestItemActiveClassName,activeSuggest:this.state.activeSuggest,onSuggestNoResults:this.onSuggestNoResults,onSuggestMouseDown:this.onSuggestMouseDown,onSuggestMouseOut:this.onSuggestMouseOut,onSuggestSelect:this.selectSuggest});return c["default"].createElement("div",{className:t},c["default"].createElement("div",{className:"geosuggest__input-wrapper"},s&&c["default"].createElement("label",{className:"geosuggest__label",htmlFor:e.id},this.props.label),n),c["default"].createElement("div",{className:"geosuggest__suggests-wrapper"},o))}}]),t}(c["default"].Component);j.propTypes=m["default"],j.defaultProps=v["default"],s["default"]=j},{"./defaults":6,"./filter-input-attributes":7,"./input":8,"./prop-types":9,"./suggest-list":11,classnames:1,"lodash.debounce":3}],6:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s["default"]={fixtures:[],initialValue:"",placeholder:"Search places",disabled:!1,className:"",inputClassName:"",location:null,radius:null,bounds:null,country:null,types:null,queryDelay:250,googleMaps:null,onActivateSuggest:function(){},onSuggestSelect:function(){},onSuggestNoResults:function(){},onFocus:function(){},onBlur:function(){},onChange:function(){},skipSuggest:function(){},getSuggestLabel:function(e){return e.description},autoActivateFirstSuggest:!1,style:{input:{},suggests:{},suggestItem:{}},ignoreTab:!1}},{}],7:[function(e,t,s){"use strict";Object.defineProperty(s,"__esModule",{value:!0}),s["default"]=function(e){var t={};return n.forEach(function(s){e[s]&&(t[s]=e[s])}),t};var n=["autoFocus","disabled","form","formAction","formEncType","formMethod","formNoValidate","formTarget","height","id","inputMode","maxLength","name","onClick","onContextMenu","onCopy","onCut","onDoubleClick","onMouseDown","onMouseEnter","onMouseLeave","onMouseMove","onMouseOut","onMouseOver","onMouseUp","onPaste","pattern","placeholder","readOnly","required","size","spellCheck","tabIndex","aria-atomic","aria-busy","aria-controls","aria-current","aria-describedby","aria-details","aria-disabled","aria-dropeffect","aria-errormessage","aria-flowto","aria-grabbed","aria-haspopup","aria-hidden","aria-invalid","aria-keyshortcuts","aria-label","aria-labelledby","aria-live","aria-owns","aria-relevant","aria-roledescription","aria-activedescendant","aria-autocomplete","aria-multiline","aria-placeholder","aria-readonly","aria-required"]},{}],8:[function(e,t,s){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function r(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function u(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(s,"__esModule",{value:!0});var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n])}return e},i=function(){function e(e,t){for(var s=0;s<t.length;s++){var n=t[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,s,n){return s&&e(t.prototype,s),n&&e(t,n),t}}(),l=window.React,p=n(l),c=e("react/lib/shallowCompare"),f=n(c),g=e("classnames"),d=n(g),h=e("./filter-input-attributes"),y=n(h),v=function(e){function t(){var e,s,n,u;o(this,t);for(var a=arguments.length,i=Array(a),l=0;a>l;l++)i[l]=arguments[l];return s=n=r(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),n.onChange=function(){n.props.onChange(n.refs.input.value)},n.onFocus=function(){n.props.onFocus()},n.onBlur=function(){n.props.onBlur()},n.onKeyPress=function(e){n.props.onKeyPress(e)},n.onInputKeyDown=function(e){switch(e.which){case 40:e.preventDefault(),n.props.onNext();break;case 38:e.preventDefault(),n.props.onPrev();break;case 13:n.props.ignoreEnter&&e.preventDefault(),n.props.onSelect();break;case 9:n.props.ignoreTab||n.props.onSelect();break;case 27:n.props.onEscape()}},u=s,r(n,u)}return u(t,e),i(t,[{key:"shouldComponentUpdate",value:function(e,t){return f["default"](this,e,t)}},{key:"focus",value:function(){this.refs.input.focus()}},{key:"blur",value:function(){this.refs.input.blur()}},{key:"render",value:function(){var e=y["default"](this.props),t=d["default"]("geosuggest__input",this.props.className);return p["default"].createElement("input",a({className:t,ref:"input",type:"text",autoComplete:"off"},e,{value:this.props.value,style:this.props.style,onKeyDown:this.onInputKeyDown,onChange:this.onChange,onKeyPress:this.onKeyPress,onFocus:this.onFocus,onBlur:this.onBlur}))}}]),t}(p["default"].Component);v.defaultProps={className:"",value:"",ignoreTab:!1,onKeyDown:function(){},onKeyPress:function(){}},s["default"]=v},{"./filter-input-attributes":7,classnames:1,"react/lib/shallowCompare":4}],9:[function(e,t,s){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(s,"__esModule",{value:!0});var o=window.React,r=n(o);s["default"]={fixtures:r["default"].PropTypes.array,initialValue:r["default"].PropTypes.string,placeholder:r["default"].PropTypes.string,disabled:r["default"].PropTypes.bool,className:r["default"].PropTypes.string,inputClassName:r["default"].PropTypes.string,suggestsClassName:r["default"].PropTypes.string,suggestsHiddenClassName:r["default"].PropTypes.string,suggestItemClassName:r["default"].PropTypes.string,suggestItemActiveClassName:r["default"].PropTypes.string,location:r["default"].PropTypes.object,radius:r["default"].PropTypes.oneOfType([r["default"].PropTypes.string,r["default"].PropTypes.number]),bounds:r["default"].PropTypes.object,country:r["default"].PropTypes.string,types:r["default"].PropTypes.array,queryDelay:r["default"].PropTypes.number,googleMaps:r["default"].PropTypes.object,onSuggestSelect:r["default"].PropTypes.func,onFocus:r["default"].PropTypes.func,onBlur:r["default"].PropTypes.func,onChange:r["default"].PropTypes.func,onKeyPress:r["default"].PropTypes.func,skipSuggest:r["default"].PropTypes.func,getSuggestLabel:r["default"].PropTypes.func,autoActivateFirstSuggest:r["default"].PropTypes.bool,style:r["default"].PropTypes.shape({input:r["default"].PropTypes.object,suggests:r["default"].PropTypes.object,suggestItem:r["default"].PropTypes.object}),ignoreTab:r["default"].PropTypes.bool,label:r["default"].PropTypes.string}},{}],10:[function(e,t,s){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(s,"__esModule",{value:!0});var i=function(){function e(e,t){for(var s=0;s<t.length;s++){var n=t[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,s,n){return s&&e(t.prototype,s),n&&e(t,n),t}}(),l=window.React,p=n(l),c=e("react/lib/shallowCompare"),f=n(c),g=e("classnames"),d=n(g),h=function(e){function t(){var e,s,n,o;r(this,t);for(var a=arguments.length,i=Array(a),l=0;a>l;l++)i[l]=arguments[l];return s=n=u(this,(e=t.__proto__||Object.getPrototypeOf(t)).call.apply(e,[this].concat(i))),n.onClick=function(e){e.preventDefault(),n.props.onSelect(n.props.suggest)},o=s,u(n,o)}return a(t,e),i(t,[{key:"shouldComponentUpdate",value:function(e,t){return f["default"](this,e,t)}},{key:"render",value:function(){var e=d["default"]("geosuggest__item",this.props.className,this.props.suggestItemClassName,{"geosuggest__item--active":this.props.isActive},o({},this.props.activeClassname,this.props.activeClassname?this.props.isActive:null));return p["default"].createElement("li",{className:e,style:this.props.style,onMouseDown:this.props.onMouseDown,onMouseOut:this.props.onMouseOut,onClick:this.onClick},this.props.suggest.label)}}]),t}(p["default"].Component);s["default"]=h,h.defaultProps={isActive:!1,className:"",suggest:{}}},{classnames:1,"react/lib/shallowCompare":4}],11:[function(e,t,s){"use strict";function n(e){return e&&e.__esModule?e:{"default":e}}function o(e,t,s){return t in e?Object.defineProperty(e,t,{value:s,enumerable:!0,configurable:!0,writable:!0}):e[t]=s,e}function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(s,"__esModule",{value:!0});var i=function(){function e(e,t){for(var s=0;s<t.length;s++){var n=t[s];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}return function(t,s,n){return s&&e(t.prototype,s),n&&e(t,n),t}}(),l=window.React,p=n(l),c=e("react/lib/shallowCompare"),f=n(c),g=e("classnames"),d=n(g),h=e("./suggest-item"),y=n(h),v=function(e){function t(){return r(this,t),u(this,(t.__proto__||Object.getPrototypeOf(t)).apply(this,arguments))}return a(t,e),i(t,[{key:"shouldComponentUpdate",value:function(e,t){return f["default"](this,e,t)}},{key:"isHidden",value:function(){return this.props.isHidden||0===this.props.suggests.length}},{key:"componentWillReceiveProps",value:function(e){e.suggests!==this.props.suggests&&0===e.suggests.length&&this.props.onSuggestNoResults()}},{key:"render",value:function(){var e=this,t=d["default"]("geosuggest__suggests",this.props.suggestsClassName,{"geosuggest__suggests--hidden":this.isHidden()},o({},this.props.hiddenClassName,this.props.hiddenClassName?this.isHidden():null));return p["default"].createElement("ul",{className:t,style:this.props.style},this.props.suggests.map(function(t){var s=e.props.activeSuggest&&t.placeId===e.props.activeSuggest.placeId;return p["default"].createElement(y["default"],{key:t.placeId,className:t.className,suggest:t,style:e.props.suggestItemStyle,suggestItemClassName:e.props.suggestItemClassName,isActive:s,activeClassname:e.props.suggestItemActiveClassName,onMouseDown:e.props.onSuggestMouseDown,onMouseOut:e.props.onSuggestMouseOut,onSelect:e.props.onSuggestSelect})}))}}]),t}(p["default"].Component);s["default"]=v,v.defaultProps={isHidden:!0,suggests:[]}},{"./suggest-item":10,classnames:1,"react/lib/shallowCompare":4}]},{},[5])(5)});

@@ -22,3 +22,3 @@ 'use strict';

*/
var allowedAttributes = ['autoFocus', 'disabled', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget', 'height', 'id', 'inputMode', 'maxLength', 'name', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onDoubleClick', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onPaste', 'pattern', 'placeholder', 'readOnly', 'required', 'size', 'spellCheck', 'tabIndex'];
var allowedAttributes = ['autoFocus', 'disabled', 'form', 'formAction', 'formEncType', 'formMethod', 'formNoValidate', 'formTarget', 'height', 'id', 'inputMode', 'maxLength', 'name', 'onClick', 'onContextMenu', 'onCopy', 'onCut', 'onDoubleClick', 'onMouseDown', 'onMouseEnter', 'onMouseLeave', 'onMouseMove', 'onMouseOut', 'onMouseOver', 'onMouseUp', 'onPaste', 'pattern', 'placeholder', 'readOnly', 'required', 'size', 'spellCheck', 'tabIndex', 'aria-atomic', 'aria-busy', 'aria-controls', 'aria-current', 'aria-describedby', 'aria-details', 'aria-disabled', 'aria-dropeffect', 'aria-errormessage', 'aria-flowto', 'aria-grabbed', 'aria-haspopup', 'aria-hidden', 'aria-invalid', 'aria-keyshortcuts', 'aria-label', 'aria-labelledby', 'aria-live', 'aria-owns', 'aria-relevant', 'aria-roledescription', 'aria-activedescendant', 'aria-autocomplete', 'aria-multiline', 'aria-placeholder', 'aria-readonly', 'aria-required'];

@@ -25,0 +25,0 @@ /**

@@ -120,3 +120,3 @@ 'use strict';

_this.props.onBlur(_this.state.userInput);
var timer = setTimeout(function () {
_this.timer = setTimeout(function () {
_this.setState({

@@ -127,4 +127,2 @@ isSuggestsHidden: true,

}, 100);
_this.setState({ timer: timer });
};

@@ -158,4 +156,3 @@

activeSuggest: null,
suggests: [],
timer: null
suggests: []
};

@@ -221,3 +218,3 @@

value: function componentWillUnmount() {
clearTimeout(this.state.timer);
clearTimeout(this.timer);
}

@@ -257,2 +254,12 @@

/**
* Blur the input
*/
}, {
key: 'blur',
value: function blur() {
this.refs.input.blur();
}
/**
* Update the value of the user input

@@ -333,3 +340,3 @@ * @param {String} userInput the new value of the user input

var suggestsGoogle = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
var suggestsGoogle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var callback = arguments[1];

@@ -381,3 +388,3 @@

value: function updateActiveSuggest() {
var suggests = arguments.length <= 0 || arguments[0] === undefined ? [] : arguments[0];
var suggests = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];

@@ -511,3 +518,7 @@ var activeSuggest = this.state.activeSuggest;

suggestItemStyle: this.props.style.suggestItem,
suggestsClassName: this.props.suggestsClassName,
suggestItemClassName: this.props.suggestItemClassName,
suggests: this.state.suggests,
hiddenClassName: this.props.suggestsHiddenClassName,
suggestItemActiveClassName: this.props.suggestItemActiveClassName,
activeSuggest: this.state.activeSuggest,

@@ -527,3 +538,4 @@ onSuggestNoResults: this.onSuggestNoResults,

'label',
{ htmlFor: attributes.id },
{ className: 'geosuggest__label',
htmlFor: attributes.id },
this.props.label

@@ -530,0 +542,0 @@ ),

@@ -15,5 +15,5 @@ 'use strict';

var _reactAddonsShallowCompare = require('react-addons-shallow-compare');
var _shallowCompare = require('react/lib/shallowCompare');
var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare);
var _shallowCompare2 = _interopRequireDefault(_shallowCompare);

@@ -112,3 +112,3 @@ var _classnames = require('classnames');

value: function shouldComponentUpdate(nextProps, nextState) {
return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState);
return (0, _shallowCompare2.default)(this, nextProps, nextState);
}

@@ -154,2 +154,12 @@

/**
* Blur the input
*/
}, {
key: 'blur',
value: function blur() {
this.refs.input.blur();
}
/**
* Render the view

@@ -156,0 +166,0 @@ * @return {Function} The React element to render

@@ -23,2 +23,6 @@ 'use strict';

inputClassName: _react2.default.PropTypes.string,
suggestsClassName: _react2.default.PropTypes.string,
suggestsHiddenClassName: _react2.default.PropTypes.string,
suggestItemClassName: _react2.default.PropTypes.string,
suggestItemActiveClassName: _react2.default.PropTypes.string,
location: _react2.default.PropTypes.object,

@@ -25,0 +29,0 @@ radius: _react2.default.PropTypes.oneOfType([_react2.default.PropTypes.string, _react2.default.PropTypes.number]),

@@ -13,12 +13,14 @@ 'use strict';

var _reactAddonsShallowCompare = require('react-addons-shallow-compare');
var _shallowCompare = require('react/lib/shallowCompare');
var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare);
var _shallowCompare2 = _interopRequireDefault(_shallowCompare);
var _classnames = require('classnames');
var _classnames2 = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _classnames3 = _interopRequireDefault(_classnames2);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

@@ -65,3 +67,3 @@

value: function shouldComponentUpdate(nextProps, nextState) {
return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState);
return (0, _shallowCompare2.default)(this, nextProps, nextState);
}

@@ -83,3 +85,3 @@

value: function render() {
var classes = (0, _classnames2.default)('geosuggest__item', this.props.className, { 'geosuggest__item--active': this.props.isActive });
var classes = (0, _classnames3.default)('geosuggest__item', this.props.className, this.props.suggestItemClassName, { 'geosuggest__item--active': this.props.isActive }, _defineProperty({}, this.props.activeClassname, this.props.activeClassname ? this.props.isActive : null));

@@ -86,0 +88,0 @@ return _react2.default.createElement(

@@ -13,9 +13,9 @@ 'use strict';

var _reactAddonsShallowCompare = require('react-addons-shallow-compare');
var _shallowCompare = require('react/lib/shallowCompare');
var _reactAddonsShallowCompare2 = _interopRequireDefault(_reactAddonsShallowCompare);
var _shallowCompare2 = _interopRequireDefault(_shallowCompare);
var _classnames = require('classnames');
var _classnames2 = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _classnames3 = _interopRequireDefault(_classnames2);

@@ -28,2 +28,4 @@ var _suggestItem = require('./suggest-item');

function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

@@ -60,3 +62,3 @@

value: function shouldComponentUpdate(nextProps, nextState) {
return (0, _reactAddonsShallowCompare2.default)(this, nextProps, nextState);
return (0, _shallowCompare2.default)(this, nextProps, nextState);
}

@@ -100,3 +102,3 @@

var classes = (0, _classnames2.default)('geosuggest__suggests', { 'geosuggest__suggests--hidden': this.isHidden() });
var classes = (0, _classnames3.default)('geosuggest__suggests', this.props.suggestsClassName, { 'geosuggest__suggests--hidden': this.isHidden() }, _defineProperty({}, this.props.hiddenClassName, this.props.hiddenClassName ? this.isHidden() : null));

@@ -113,3 +115,5 @@ return _react2.default.createElement(

style: _this2.props.suggestItemStyle,
suggestItemClassName: _this2.props.suggestItemClassName,
isActive: isActive,
activeClassname: _this2.props.suggestItemActiveClassName,
onMouseDown: _this2.props.onSuggestMouseDown,

@@ -116,0 +120,0 @@ onMouseOut: _this2.props.onSuggestMouseOut,

{
"name": "react-geosuggest",
"version": "2.0.0",
"version": "2.1.0",
"description": "A React autosuggest for the Google Maps Places API.",

@@ -17,4 +17,3 @@ "main": "module/Geosuggest.js",

"peerDependencies": {
"react": "^0.14.0 || ^15.0.0",
"react-addons-shallow-compare": "^0.14.0 || ^15.0.0"
"react": "^0.14.0 || ^15.0.0"
},

@@ -47,3 +46,2 @@ "dependencies": {

"react-addons-test-utils": "^15.1.0",
"react-addons-shallow-compare": "^15.1.0",
"react-dom": "^15.1.0",

@@ -50,0 +48,0 @@ "sinon": "^1.17.3",

@@ -28,3 +28,3 @@ # React Geosuggest [![Build Status](https://travis-ci.org/ubilabs/react-geosuggest.svg?branch=master)](https://travis-ci.org/ubilabs/react-geosuggest)

Visit the [Google Developer Console](https://console.developers.google.com) to generate your API key.
Visit the [Google Developer Console](https://console.developers.google.com) to generate your API key. The API's that you have to enable in your Google API Manager Dashboard are [Google Maps Geocoding API](https://developers.google.com/maps/documentation/geocoding/start), [Google Places API Web Service](https://developers.google.com/places/web-service/) and [Google Maps Javascript API] (https://developers.google.com/maps/documentation/javascript/).

@@ -35,14 +35,6 @@ The easiest way to use geosuggest is to install it from NPM and include it in your own React build process (using [Browserify](http://browserify.org), [Webpack](http://webpack.github.io/), etc).

```
```sh
npm install react-geosuggest --save
```
### Peer Dependencies
To allow for the greatest flexiblity in react version support, this module specifies `react-addons-shallow-compare` as a peer dependency. Therefore in order to use it, you must also install a version of `react-addons-shallow-compare` that matches your `react` version, ie:
```
npm install react-addons-shallow-compare@0.14.6
```
## Usage

@@ -54,3 +46,3 @@

```
```js
import Geosuggest from 'react-geosuggest';

@@ -63,3 +55,3 @@

```
```js
var Geosuggest = require('react-geosuggest').default;

@@ -244,9 +236,35 @@

#### suggestsClassName
Type: `String`
Default: `''`
Add an additional class to suggest list.
#### suggestsHiddenClassName
Type: `String`
Default: `null`
Additional `className` to toggle as the list of suggestions changes visibility.
#### suggestItemClassName
Type: `String`
Default: `''`
Add an additional class to suggest item.
#### suggestItemActiveClassName
Type: `String`,
Default: `null`
Additional `className` to add when a suggestion item is active.
#### Others
All standard `input[type="text"]` attributes are allowed. See the [documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input) for more information.
All [allowed attributes for `input[type="text"]`](https://github.com/ubilabs/react-geosuggest/blob/master/src/filter-input-attributes.js#L4)
All [DOM clipboard events](https://facebook.github.io/react/docs/events.html#clipboard-events).
All [DOM mouse events](https://facebook.github.io/react/docs/events.html#mouse-events) except for drag & drop.
### Exposed component functions
These functions are accessible by setting "ref" on the component (see example below)

@@ -256,2 +274,5 @@ #### focus()

#### blur()
Call `blur` to blur (unfocus) the element. The suggest list will be closed.
#### update(value)

@@ -265,3 +286,3 @@ It is possible to update the value of the input contained within the GeoSuggest component by calling the `update` function with a new desired `value` of the type String.

```
```jsx
import React from 'react';

@@ -285,2 +306,3 @@ import ReactDOM from 'react-dom';

<Geosuggest
ref={el=>this._geoSuggest=el}
placeholder="Start typing!"

@@ -292,2 +314,7 @@ initialValue="Hamburg"

radius="20" />
{* Buttons to trigger exposed component functions *}
<button onClick={()=>this._geoSuggest.focus()}>Focus</button>
<button onClick={()=>this._geoSuggest.update('New Zeland')}>Update</button>
<button onClick={()=>this._geoSuggest.clear()}>Clear</button>
</div>

@@ -316,3 +343,3 @@ )

The `geosuggest__suggests--hidden` class is added to hide the suggestion list. You should copy the style below into your CSS file.
```
```css
.geosuggest__suggests--hidden {

@@ -327,3 +354,3 @@ max-height: 0;

Similarly, you need to have the class `geosuggest__item--active` similar to this:
```
```css
.geosuggest__item--active {

@@ -330,0 +357,0 @@ background: #267dc0;

@@ -247,2 +247,9 @@ import React from 'react'; // eslint-disable-line no-unused-vars

it('should not have the focus after calling `blur`', () => {
component.focus();
expect(document.activeElement.classList.contains('geosuggest__input')).to.be.true; // eslint-disable-line no-unused-expressions, max-len
component.blur();
expect(document.activeElement.classList.contains('geosuggest__input')).to.be.false; // eslint-disable-line no-unused-expressions, max-len
});
it('should add external inline `style` to input component', () => { // eslint-disable-line max-len

@@ -462,2 +469,67 @@ const geoSuggestInput = TestUtils.findRenderedDOMComponentWithClass(component, 'geosuggest__input'); // eslint-disable-line max-len

});
describe('with suggestsHiddenClassName and suggestItemActiveClassName', () => { // eslint-disable-line max-len
const props = {
suggestsHiddenClassName: 'suggests-hidden-class',
suggestItemActiveClassName: 'suggest-item-active',
autoActivateFirstSuggest: true
};
beforeEach(() => render(props));
it('should apply suggestsHiddenClassName when the list is hidden', () => {
const geoSuggestInput = TestUtils.findRenderedDOMComponentWithClass(component, 'geosuggest__input'); // eslint-disable-line max-len
TestUtils.Simulate.focus(geoSuggestInput);
const suggests = TestUtils.scryRenderedDOMComponentsWithClass(component, 'geosuggest__suggests'); // eslint-disable-line max-len, one-var
expect(suggests[0].classList.contains('suggests-hidden-class')).to.be.true; // eslint-disable-line no-unused-expressions, max-len
expect(suggests[0].classList.contains('geosuggest__suggests--hidden')).to.be.true; // eslint-disable-line no-unused-expressions, max-len
});
it('should apply suggestItemActiveClassName when a list item is active', done => { // eslint-disable-line max-len
const geoSuggestInput = TestUtils.findRenderedDOMComponentWithClass(component, 'geosuggest__input'); // eslint-disable-line max-len
geoSuggestInput.value = 'New';
TestUtils.Simulate.change(geoSuggestInput);
TestUtils.Simulate.focus(geoSuggestInput);
setImmediate(() => {
const activeItems = TestUtils.scryRenderedDOMComponentsWithClass(component, 'suggest-item-active'); // eslint-disable-line max-len
expect(activeItems.length).to.be.equal(1);
expect(activeItems[0].classList.contains('geosuggest__item--active')).to.be.true; // eslint-disable-line no-unused-expressions, max-len
done();
});
});
});
describe('with suggestsClassName and suggestItemClassName', () => { // eslint-disable-line max-len
const props = {
suggestsClassName: 'suggests-class',
suggestItemClassName: 'suggest-item'
};
beforeEach(() => render(props));
it('should apply suggestsClassName to the list', () => {
const geoSuggestInput = TestUtils.findRenderedDOMComponentWithClass(component, 'geosuggest__input'); // eslint-disable-line max-len
TestUtils.Simulate.focus(geoSuggestInput);
const suggests = TestUtils.scryRenderedDOMComponentsWithClass(component, 'geosuggest__suggests'); // eslint-disable-line max-len, one-var
expect(suggests[0].classList.contains('suggests-class')).to.be.true; // eslint-disable-line no-unused-expressions, max-len
});
it('should apply suggestItemClassName to each list item', done => { // eslint-disable-line max-len
const geoSuggestInput = TestUtils.findRenderedDOMComponentWithClass(component, 'geosuggest__input'); // eslint-disable-line max-len
geoSuggestInput.value = 'New';
TestUtils.Simulate.change(geoSuggestInput);
TestUtils.Simulate.focus(geoSuggestInput);
setImmediate(() => {
const totalItems = TestUtils.scryRenderedDOMComponentsWithClass(component, 'suggest-item'), // eslint-disable-line max-len
itemsWithItemClass = TestUtils.scryRenderedDOMComponentsWithClass(component, 'geosuggest__item'); // eslint-disable-line max-len
expect(totalItems.length).to.be.equal(itemsWithItemClass.length);
done();
});
});
});
});

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc