File: /srv/www/csmcri-res-in-d10/web/libraries/algolia.places/src/createAutocompleteSource.js
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = createAutocompleteSource;
var _configure = _interopRequireDefault(require("./configure"));
var _formatHit = _interopRequireDefault(require("./formatHit"));
var _version = _interopRequireDefault(require("./version"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
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 createAutocompleteSource(_ref) {
var algoliasearch = _ref.algoliasearch,
clientOptions = _ref.clientOptions,
apiKey = _ref.apiKey,
appId = _ref.appId,
hitsPerPage = _ref.hitsPerPage,
postcodeSearch = _ref.postcodeSearch,
aroundLatLng = _ref.aroundLatLng,
aroundRadius = _ref.aroundRadius,
aroundLatLngViaIP = _ref.aroundLatLngViaIP,
insideBoundingBox = _ref.insideBoundingBox,
insidePolygon = _ref.insidePolygon,
getRankingInfo = _ref.getRankingInfo,
countries = _ref.countries,
formatInputValue = _ref.formatInputValue,
_ref$computeQueryPara = _ref.computeQueryParams,
computeQueryParams = _ref$computeQueryPara === void 0 ? function (params) {
return params;
} : _ref$computeQueryPara,
_ref$useDeviceLocatio = _ref.useDeviceLocation,
useDeviceLocation = _ref$useDeviceLocatio === void 0 ? false : _ref$useDeviceLocatio,
_ref$language = _ref.language,
language = _ref$language === void 0 ? navigator.language.split('-')[0] : _ref$language,
_ref$onHits = _ref.onHits,
onHits = _ref$onHits === void 0 ? function () {} : _ref$onHits,
_ref$onError = _ref.onError,
onError = _ref$onError === void 0 ? function (e) {
throw e;
} : _ref$onError,
onRateLimitReached = _ref.onRateLimitReached,
onInvalidCredentials = _ref.onInvalidCredentials,
type = _ref.type;
var placesClient = algoliasearch.initPlaces(appId, apiKey, clientOptions);
placesClient.as.addAlgoliaAgent("Algolia Places ".concat(_version["default"]));
var configuration = (0, _configure["default"])({
hitsPerPage: hitsPerPage,
type: type,
postcodeSearch: postcodeSearch,
countries: countries,
language: language,
aroundLatLng: aroundLatLng,
aroundRadius: aroundRadius,
aroundLatLngViaIP: aroundLatLngViaIP,
insideBoundingBox: insideBoundingBox,
insidePolygon: insidePolygon,
getRankingInfo: getRankingInfo,
formatInputValue: formatInputValue,
computeQueryParams: computeQueryParams,
useDeviceLocation: useDeviceLocation,
onHits: onHits,
onError: onError,
onRateLimitReached: onRateLimitReached,
onInvalidCredentials: onInvalidCredentials
});
var params = configuration.params;
var controls = configuration.controls;
var userCoords;
var tracker = null;
if (controls.useDeviceLocation) {
tracker = navigator.geolocation.watchPosition(function (_ref2) {
var coords = _ref2.coords;
userCoords = "".concat(coords.latitude, ",").concat(coords.longitude);
});
}
function searcher(query, cb) {
var searchParams = _objectSpread(_objectSpread({}, params), {}, {
query: query
});
if (userCoords) {
searchParams.aroundLatLng = userCoords;
}
return placesClient.search(controls.computeQueryParams(searchParams)).then(function (content) {
var hits = content.hits.map(function (hit, hitIndex) {
return (0, _formatHit["default"])({
formatInputValue: controls.formatInputValue,
hit: hit,
hitIndex: hitIndex,
query: query,
rawAnswer: content
});
});
controls.onHits({
hits: hits,
query: query,
rawAnswer: content
});
return hits;
}).then(cb)["catch"](function (e) {
if (e.statusCode === 403 && e.message === 'Invalid Application-ID or API key') {
controls.onInvalidCredentials();
return;
} else if (e.statusCode === 429) {
controls.onRateLimitReached();
return;
}
controls.onError(e);
});
}
searcher.configure = function (partial) {
var updated = (0, _configure["default"])(_objectSpread(_objectSpread(_objectSpread({}, params), controls), partial));
params = updated.params;
controls = updated.controls;
if (controls.useDeviceLocation && tracker === null) {
tracker = navigator.geolocation.watchPosition(function (_ref3) {
var coords = _ref3.coords;
userCoords = "".concat(coords.latitude, ",").concat(coords.longitude);
});
} else if (!controls.useDeviceLocation && tracker !== null) {
navigator.geolocation.clearWatch(tracker);
tracker = null;
userCoords = null;
}
};
return searcher;
}