Skip to content

Commit cb60de1

Browse files
authored
update babel, IE 11 support, add sessionToken to autocomplete service (#104)
1 parent 3755f73 commit cb60de1

15 files changed

+3224
-2398
lines changed

.babelrc

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,17 @@
11
{
2-
"presets": ["es2015", "react", "stage-0", "minify"]
2+
"presets": [
3+
"@babel/preset-react",
4+
[
5+
"@babel/preset-env",
6+
{
7+
"useBuiltIns": "usage",
8+
"targets": {
9+
"ie": "11"
10+
},
11+
"corejs": "3.6.5"
12+
}
13+
]
14+
// TODO: Minify breaks IE 11
15+
// ["minify"]
16+
]
317
}

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
1. [ReactGoogleAutocomplete](#reactgoogleautocomplete) is a simple html input component that provides functionality of the [google places widgets](https://developers.google.com/maps/documentation/javascript/reference/places-widget#AutocompleteOptions).
1111
2. [usePlacesWidget](#useplaceswidget) is a react hook that provides the same functionality as `ReactGoogleAutocomplete` does but it does not create any dom elements. Instead, it gives you back a react ref which you can set to any input you want.
12-
3. [usePlacesAutocompleteService](#useplacesautocompleteservice) is a more complex tool. It uses [google places autocomplete service](https://developers.google.com/maps/documentation/javascript/reference/places-autocomplete-service) and it provides all the functionality to you as the returned value. In addition to that, you can set a `debounce` prop which will reduce the amount of requests users send to Google.
12+
3. [usePlacesAutocompleteService](#useplacesautocompleteservice) is a more complex react hook. It uses [google places autocomplete service](https://developers.google.com/maps/documentation/javascript/reference/places-autocomplete-service) and it provides all the functionality to you as the returned value. In addition to that, you can set a `debounce` prop which will reduce the amount of requests users send to Google.
1313

1414
## Install
1515

@@ -153,6 +153,7 @@ The hook has only one config argument.
153153
- `googleMapsScriptBaseUrl`: Provide custom google maps url. By default `https://maps.googleapis.com/maps/api/js`.
154154
- `debounce`: Number of milliseconds to accumulate responses for.
155155
- `options`: Default [options](https://developers.google.com/maps/documentation/javascript/reference/places-autocomplete-service#QueryAutocompletionRequest) which will be passed to every request.
156+
- `sessionToken`: If true then a [session token](https://developers.google.com/maps/documentation/javascript/reference/places-autocomplete-service#AutocompleteSessionToken) will be attached to every request.
156157

157158
### Returned value
158159

lib/ReactGoogleAutocomplete.js

Lines changed: 102 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,102 @@
1-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_react=require("react"),_react2=_interopRequireDefault(_react),_propTypes=require("prop-types"),_propTypes2=_interopRequireDefault(_propTypes),_usePlacesWidget2=require("./usePlacesWidget"),_usePlacesWidget3=_interopRequireDefault(_usePlacesWidget2);function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _objectWithoutProperties(a,b){var c={};for(var d in a)0<=b.indexOf(d)||Object.prototype.hasOwnProperty.call(a,d)&&(c[d]=a[d]);return c}function ReactGoogleAutocomplete(a){var b=a.onPlaceSelected,c=a.apiKey,d=a.inputAutocompleteValue,e=a.options,f=a.googleMapsScriptBaseUrl,g=a.refProp,h=_objectWithoutProperties(a,["onPlaceSelected","apiKey","inputAutocompleteValue","options","googleMapsScriptBaseUrl","refProp"]),i=(0,_usePlacesWidget3.default)({ref:g,googleMapsScriptBaseUrl:f,onPlaceSelected:b,apiKey:c,inputAutocompleteValue:d,options:e}),j=i.ref;return _react2.default.createElement("input",_extends({ref:j},h))}ReactGoogleAutocomplete.propTypes={apiKey:_propTypes2.default.string,ref:_propTypes2.default.oneOfType([// Either a function
2-
_propTypes2.default.func,// Or anything shaped { current: any }
3-
_propTypes2.default.shape({current:_propTypes2.default.any})]),googleMapsScriptBaseUrl:_propTypes2.default.string,onPlaceSelected:_propTypes2.default.func,inputAutocompleteValue:_propTypes2.default.string,options:_propTypes2.default.shape({componentRestrictions:_propTypes2.default.object,bounds:_propTypes2.default.object,location:_propTypes2.default.object,offset:_propTypes2.default.number,origin:_propTypes2.default.object,radius:_propTypes2.default.number,sessionToken:_propTypes2.default.object,types:_propTypes2.default.arrayOf(_propTypes2.default.string)})},exports.default=(0,_react.forwardRef)(function(a,b){return _react2.default.createElement(ReactGoogleAutocomplete,_extends({},a,{refProp:b}))});
1+
"use strict";
2+
3+
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4+
5+
require("core-js/modules/es.symbol.js");
6+
7+
require("core-js/modules/es.object.assign.js");
8+
9+
require("core-js/modules/es.array.iterator.js");
10+
11+
require("core-js/modules/es.object.to-string.js");
12+
13+
require("core-js/modules/es.string.iterator.js");
14+
15+
require("core-js/modules/es.weak-map.js");
16+
17+
require("core-js/modules/web.dom-collections.iterator.js");
18+
19+
require("core-js/modules/es.object.get-own-property-descriptor.js");
20+
21+
require("core-js/modules/es.symbol.description.js");
22+
23+
require("core-js/modules/es.symbol.iterator.js");
24+
25+
Object.defineProperty(exports, "__esModule", {
26+
value: true
27+
});
28+
exports.default = void 0;
29+
30+
require("core-js/modules/es.object.keys.js");
31+
32+
var _react = _interopRequireWildcard(require("react"));
33+
34+
var _propTypes = _interopRequireDefault(require("prop-types"));
35+
36+
var _usePlacesWidget2 = _interopRequireDefault(require("./usePlacesWidget"));
37+
38+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
39+
40+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
41+
42+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43+
44+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
45+
46+
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
47+
48+
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
49+
50+
function ReactGoogleAutocomplete(props) {
51+
var onPlaceSelected = props.onPlaceSelected,
52+
apiKey = props.apiKey,
53+
inputAutocompleteValue = props.inputAutocompleteValue,
54+
options = props.options,
55+
googleMapsScriptBaseUrl = props.googleMapsScriptBaseUrl,
56+
refProp = props.refProp,
57+
rest = _objectWithoutProperties(props, ["onPlaceSelected", "apiKey", "inputAutocompleteValue", "options", "googleMapsScriptBaseUrl", "refProp"]);
58+
59+
var _usePlacesWidget = (0, _usePlacesWidget2.default)({
60+
ref: refProp,
61+
googleMapsScriptBaseUrl: googleMapsScriptBaseUrl,
62+
onPlaceSelected: onPlaceSelected,
63+
apiKey: apiKey,
64+
inputAutocompleteValue: inputAutocompleteValue,
65+
options: options
66+
}),
67+
ref = _usePlacesWidget.ref;
68+
69+
return /*#__PURE__*/_react.default.createElement("input", _extends({
70+
ref: ref
71+
}, rest));
72+
}
73+
74+
ReactGoogleAutocomplete.propTypes = {
75+
apiKey: _propTypes.default.string,
76+
ref: _propTypes.default.oneOfType([// Either a function
77+
_propTypes.default.func, // Or anything shaped { current: any }
78+
_propTypes.default.shape({
79+
current: _propTypes.default.any
80+
})]),
81+
googleMapsScriptBaseUrl: _propTypes.default.string,
82+
onPlaceSelected: _propTypes.default.func,
83+
inputAutocompleteValue: _propTypes.default.string,
84+
options: _propTypes.default.shape({
85+
componentRestrictions: _propTypes.default.object,
86+
bounds: _propTypes.default.object,
87+
location: _propTypes.default.object,
88+
offset: _propTypes.default.number,
89+
origin: _propTypes.default.object,
90+
radius: _propTypes.default.number,
91+
sessionToken: _propTypes.default.object,
92+
types: _propTypes.default.arrayOf(_propTypes.default.string)
93+
})
94+
};
95+
96+
var _default = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
97+
return /*#__PURE__*/_react.default.createElement(ReactGoogleAutocomplete, _extends({}, props, {
98+
refProp: ref
99+
}));
100+
});
101+
102+
exports.default = _default;

lib/constants.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
1-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var GOOGLE_MAP_SCRIPT_BASE_URL=exports.GOOGLE_MAP_SCRIPT_BASE_URL="https://maps.googleapis.com/maps/api/js";
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
exports.GOOGLE_MAP_SCRIPT_BASE_URL = void 0;
7+
var GOOGLE_MAP_SCRIPT_BASE_URL = "https://maps.googleapis.com/maps/api/js";
8+
exports.GOOGLE_MAP_SCRIPT_BASE_URL = GOOGLE_MAP_SCRIPT_BASE_URL;

lib/index.js

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,23 @@
1-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var _ReactGoogleAutocomplete=require("./ReactGoogleAutocomplete");Object.defineProperty(exports,"default",{enumerable:!0,get:function a(){return _interopRequireDefault(_ReactGoogleAutocomplete).default}});var _usePlacesWidget=require("./usePlacesWidget");Object.defineProperty(exports,"usePlacesWidget",{enumerable:!0,get:function a(){return _interopRequireDefault(_usePlacesWidget).default}});function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}
1+
"use strict";
2+
3+
Object.defineProperty(exports, "__esModule", {
4+
value: true
5+
});
6+
Object.defineProperty(exports, "default", {
7+
enumerable: true,
8+
get: function get() {
9+
return _ReactGoogleAutocomplete.default;
10+
}
11+
});
12+
Object.defineProperty(exports, "usePlacesWidget", {
13+
enumerable: true,
14+
get: function get() {
15+
return _usePlacesWidget.default;
16+
}
17+
});
18+
19+
var _ReactGoogleAutocomplete = _interopRequireDefault(require("./ReactGoogleAutocomplete"));
20+
21+
var _usePlacesWidget = _interopRequireDefault(require("./usePlacesWidget"));
22+
23+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
interface usePlacesAutocompleteServiceConfig {
2+
apiKey?: string;
3+
googleMapsScriptBaseUrl?: string;
4+
debounce?: number;
5+
options?: google.maps.places.QueryAutocompletionRequest;
6+
sessionToken?: boolean;
7+
}
8+
9+
interface usePlacesAutocompleteServiceResponse {
10+
placePredictions: google.maps.places.AutocompletePrediction[];
11+
isPlacePredictionsLoading: boolean;
12+
getPlacePredictions: (opt: google.maps.places.AutocompletionRequest) => void;
13+
queryPredictions: google.maps.places.QueryAutocompletePrediction[];
14+
isQueryPredictionsLoading: boolean;
15+
getQueryPredictions: (
16+
opt: google.maps.places.QueryAutocompletionRequest
17+
) => void;
18+
}
19+
20+
export default function usePlacesAutocompleteService(
21+
options: usePlacesAutocompleteServiceConfig
22+
): usePlacesAutocompleteServiceResponse;

0 commit comments

Comments
 (0)