@firestitch/address
Version:
69 lines • 9.96 kB
JavaScript
import { createEmptyAddress } from './create-empty-address';
export function googlePlaceToFsAddress(result, config) {
const address = createEmptyAddress();
let countryLongName, regionLongName, streetShortName;
address.lat = result.location.lat();
address.lng = result.location.lng();
address.description = result.formattedAddress;
// Finding different parts of address
result.addressComponents.forEach((item) => {
if (item.types.some(type => type === 'country')) {
address.country = item.shortText;
countryLongName = item.longText;
}
if (item.types.some(type => type === 'administrative_area_level_1')) {
address.region = item.shortText;
regionLongName = item.longText;
}
if (item.types.some(type => type === 'locality' || type === 'political')) {
address.city = item.longText;
}
if (item.types.some(type => type === 'postal_code')) {
address.zip = item.longText;
}
});
// Address.Street consists from number and street
const streetNumber = result.addressComponents
.find(el => el.types.some(type => type === 'street_number'));
if (streetNumber) {
address.street = streetNumber.longText + ' ';
streetShortName = streetNumber.longText + ' ';
}
else {
const match = address.description.match(/^[\d-]+/);
if (match) {
address.street = match[0] + ' ';
streetShortName = match[0] + ' ';
}
}
const streetAddress = result.addressComponents
.find(el => el.types.some(type => type === 'route'));
if (streetAddress) {
if (!address.street) {
address.street = streetAddress.longText;
streetShortName = streetAddress.shortText;
}
else {
address.street += streetAddress.longText;
streetShortName += streetAddress.shortText;
}
}
// Checking correct place NAME
if (address.country !== result.displayName
&& countryLongName !== result.displayName
&& address.region !== result.displayName
&& regionLongName !== result.displayName
&& address.city !== result.displayName
&& streetShortName !== result.displayName
&& address.zip !== result.displayName
&& address.street !== result.displayName) {
if (config.name && config.name.visible !== false) {
address.name = result.displayName;
}
}
else {
address.name = '';
}
return address;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBsYWNlLXRvLWFkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBwL2hlbHBlcnMvZ29vZ2xlLXBsYWNlLXRvLWFkZHJlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFLNUQsTUFBTSxVQUFVLHNCQUFzQixDQUNwQyxNQUFnQyxFQUNoQyxNQUF1QjtJQUV2QixNQUFNLE9BQU8sR0FBRyxrQkFBa0IsRUFBRSxDQUFDO0lBRXJDLElBQUksZUFBdUIsRUFBRSxjQUFzQixFQUFFLGVBQXVCLENBQUM7SUFFN0UsT0FBTyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3BDLE9BQU8sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUNwQyxPQUFPLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQztJQUU5QyxxQ0FBcUM7SUFDckMsTUFBTSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1FBQ3hDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNoRCxPQUFPLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDakMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDbEMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssNkJBQTZCLENBQUMsRUFBRSxDQUFDO1lBQ3BFLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNoQyxj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Q0FBQztTQUFNLENBQUM7UUFDTixPQUFPLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZUVtcHR5QWRkcmVzcyB9IGZyb20gJy4vY3JlYXRlLWVtcHR5LWFkZHJlc3MnO1xuaW1wb3J0IHsgRnNBZGRyZXNzQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9hZGRyZXNzLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgRnNBZGRyZXNzIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9hZGRyZXNzLmludGVyZmFjZSc7XG5cblxuZXhwb3J0IGZ1bmN0aW9uIGdvb2dsZVBsYWNlVG9Gc0FkZHJlc3MoXG4gIHJlc3VsdDogZ29vZ2xlLm1hcHMucGxhY2VzLlBsYWNlLFxuICBjb25maWc6IEZzQWRkcmVzc0NvbmZpZyxcbik6IEZzQWRkcmVzcyB7XG4gIGNvbnN0IGFkZHJlc3MgPSBjcmVhdGVFbXB0eUFkZHJlc3MoKTtcblxuICBsZXQgY291bnRyeUxvbmdOYW1lOiBzdHJpbmcsIHJlZ2lvbkxvbmdOYW1lOiBzdHJpbmcsIHN0cmVldFNob3J0TmFtZTogc3RyaW5nO1xuXG4gIGFkZHJlc3MubGF0ID0gcmVzdWx0LmxvY2F0aW9uLmxhdCgpO1xuICBhZGRyZXNzLmxuZyA9IHJlc3VsdC5sb2NhdGlvbi5sbmcoKTtcbiAgYWRkcmVzcy5kZXNjcmlwdGlvbiA9IHJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzO1xuXG4gIC8vIEZpbmRpbmcgZGlmZmVyZW50IHBhcnRzIG9mIGFkZHJlc3NcbiAgcmVzdWx0LmFkZHJlc3NDb21wb25lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICBpZiAoaXRlbS50eXBlcy5zb21lKHR5cGUgPT4gdHlwZSA9PT0gJ2NvdW50cnknKSkge1xuICAgICAgYWRkcmVzcy5jb3VudHJ5ID0gaXRlbS5zaG9ydFRleHQ7XG4gICAgICBjb3VudHJ5TG9uZ05hbWUgPSBpdGVtLmxvbmdUZXh0O1xuICAgIH1cblxuICAgIGlmIChpdGVtLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAnYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xJykpIHtcbiAgICAgIGFkZHJlc3MucmVnaW9uID0gaXRlbS5zaG9ydFRleHQ7XG4gICAgICByZWdpb25Mb25nTmFtZSA9IGl0ZW0ubG9uZ1RleHQ7XG4gICAgfVxuXG4gICAgaWYgKGl0ZW0udHlwZXMuc29tZSh0eXBlID0+IHR5cGUgPT09ICdsb2NhbGl0eScgfHwgdHlwZSA9PT0gJ3BvbGl0aWNhbCcpKSB7XG4gICAgICBhZGRyZXNzLmNpdHkgPSBpdGVtLmxvbmdUZXh0O1xuICAgIH1cblxuICAgIGlmIChpdGVtLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAncG9zdGFsX2NvZGUnKSkge1xuICAgICAgYWRkcmVzcy56aXAgPSBpdGVtLmxvbmdUZXh0O1xuICAgIH1cbiAgfSk7XG5cbiAgLy8gQWRkcmVzcy5TdHJlZXQgY29uc2lzdHMgZnJvbSBudW1iZXIgYW5kIHN0cmVldFxuICBjb25zdCBzdHJlZXROdW1iZXIgPSByZXN1bHQuYWRkcmVzc0NvbXBvbmVudHNcbiAgICAuZmluZChlbCA9PiBlbC50eXBlcy5zb21lKHR5cGUgPT4gdHlwZSA9PT0gJ3N0cmVldF9udW1iZXInKSk7XG5cbiAgaWYgKHN0cmVldE51bWJlcikge1xuICAgIGFkZHJlc3Muc3RyZWV0ID0gc3RyZWV0TnVtYmVyLmxvbmdUZXh0ICsgJyAnO1xuICAgIHN0cmVldFNob3J0TmFtZSA9IHN0cmVldE51bWJlci5sb25nVGV4dCArICcgJztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBtYXRjaCA9IGFkZHJlc3MuZGVzY3JpcHRpb24ubWF0Y2goL15bXFxkLV0rLyk7XG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBhZGRyZXNzLnN0cmVldCA9IG1hdGNoWzBdICsgJyAnO1xuICAgICAgc3RyZWV0U2hvcnROYW1lID0gbWF0Y2hbMF0gKyAnICc7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgc3RyZWV0QWRkcmVzcyA9IHJlc3VsdC5hZGRyZXNzQ29tcG9uZW50c1xuICAgIC5maW5kKGVsID0+IGVsLnR5cGVzLnNvbWUodHlwZSA9PiB0eXBlID09PSAncm91dGUnKSk7XG5cbiAgaWYgKHN0cmVldEFkZHJlc3MpIHtcbiAgICBpZiAoIWFkZHJlc3Muc3RyZWV0KSB7XG4gICAgICBhZGRyZXNzLnN0cmVldCA9IHN0cmVldEFkZHJlc3MubG9uZ1RleHQ7XG4gICAgICBzdHJlZXRTaG9ydE5hbWUgPSBzdHJlZXRBZGRyZXNzLnNob3J0VGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRkcmVzcy5zdHJlZXQgKz0gc3RyZWV0QWRkcmVzcy5sb25nVGV4dDtcbiAgICAgIHN0cmVldFNob3J0TmFtZSArPSBzdHJlZXRBZGRyZXNzLnNob3J0VGV4dDtcbiAgICB9XG4gIH1cblxuICAvLyBDaGVja2luZyBjb3JyZWN0IHBsYWNlIE5BTUVcbiAgaWYgKFxuICAgIGFkZHJlc3MuY291bnRyeSAhPT0gcmVzdWx0LmRpc3BsYXlOYW1lXG4gICAgJiYgY291bnRyeUxvbmdOYW1lICE9PSByZXN1bHQuZGlzcGxheU5hbWVcbiAgICAmJiBhZGRyZXNzLnJlZ2lvbiAhPT0gcmVzdWx0LmRpc3BsYXlOYW1lXG4gICAgJiYgcmVnaW9uTG9uZ05hbWUgIT09IHJlc3VsdC5kaXNwbGF5TmFtZVxuICAgICYmIGFkZHJlc3MuY2l0eSAhPT0gcmVzdWx0LmRpc3BsYXlOYW1lXG4gICAgJiYgc3RyZWV0U2hvcnROYW1lICE9PSByZXN1bHQuZGlzcGxheU5hbWVcbiAgICAmJiBhZGRyZXNzLnppcCAhPT0gcmVzdWx0LmRpc3BsYXlOYW1lXG4gICAgJiYgYWRkcmVzcy5zdHJlZXQgIT09IHJlc3VsdC5kaXNwbGF5TmFtZVxuICApIHtcbiAgICBpZiAoY29uZmlnLm5hbWUgJiYgY29uZmlnLm5hbWUudmlzaWJsZSAhPT0gZmFsc2UpIHtcbiAgICAgIGFkZHJlc3MubmFtZSA9IHJlc3VsdC5kaXNwbGF5TmFtZTtcbiAgICB9XG5cbiAgfSBlbHNlIHtcbiAgICBhZGRyZXNzLm5hbWUgPSAnJztcbiAgfVxuXG4gIHJldHVybiBhZGRyZXNzO1xufVxuIl19