matrix-react-sdk
Version:
SDK for matrix.org using React
56 lines (53 loc) • 6.12 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.parseGeoUri = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
/*
Copyright 2024 New Vector Ltd.
Copyright 2022 The Matrix.org Foundation C.I.C.
SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only
Please see LICENSE files in the repository root for full details.
*/
const parseGeoUri = uri => {
function parse(s) {
const ret = parseFloat(s);
if (Number.isNaN(ret)) {
return null;
} else {
return ret;
}
}
const m = uri.match(/^\s*geo:(.*?)\s*$/);
if (!m) return;
const parts = m[1].split(";");
const coords = parts[0].split(",");
let uncertainty = undefined;
for (const param of parts.slice(1)) {
const m = param.match(/u=(.*)/);
if (m) uncertainty = parse(m[1]);
}
const latitude = parse(coords[0]);
const longitude = parse(coords[1]);
if (latitude === null || longitude === null) {
return;
}
const geoCoords = {
latitude: latitude,
longitude: longitude,
altitude: parse(coords[2]),
accuracy: uncertainty,
altitudeAccuracy: null,
heading: null,
speed: null
};
return _objectSpread({
toJSON: () => geoCoords
}, geoCoords);
};
exports.parseGeoUri = parseGeoUri;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwYXJzZUdlb1VyaSIsInVyaSIsInBhcnNlIiwicyIsInJldCIsInBhcnNlRmxvYXQiLCJOdW1iZXIiLCJpc05hTiIsIm0iLCJtYXRjaCIsInBhcnRzIiwic3BsaXQiLCJjb29yZHMiLCJ1bmNlcnRhaW50eSIsInVuZGVmaW5lZCIsInBhcmFtIiwic2xpY2UiLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImdlb0Nvb3JkcyIsImFsdGl0dWRlIiwiYWNjdXJhY3kiLCJhbHRpdHVkZUFjY3VyYWN5IiwiaGVhZGluZyIsInNwZWVkIiwiX29iamVjdFNwcmVhZCIsInRvSlNPTiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMvbG9jYXRpb24vcGFyc2VHZW9VcmkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQy5cblxuU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFHUEwtMy4wLW9ubHkgT1IgR1BMLTMuMC1vbmx5XG5QbGVhc2Ugc2VlIExJQ0VOU0UgZmlsZXMgaW4gdGhlIHJlcG9zaXRvcnkgcm9vdCBmb3IgZnVsbCBkZXRhaWxzLlxuKi9cblxuZXhwb3J0IGNvbnN0IHBhcnNlR2VvVXJpID0gKHVyaTogc3RyaW5nKTogR2VvbG9jYXRpb25Db29yZGluYXRlcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgZnVuY3Rpb24gcGFyc2Uoczogc3RyaW5nKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHJldCA9IHBhcnNlRmxvYXQocyk7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4ocmV0KSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbSA9IHVyaS5tYXRjaCgvXlxccypnZW86KC4qPylcXHMqJC8pO1xuICAgIGlmICghbSkgcmV0dXJuO1xuICAgIGNvbnN0IHBhcnRzID0gbVsxXS5zcGxpdChcIjtcIik7XG4gICAgY29uc3QgY29vcmRzID0gcGFydHNbMF0uc3BsaXQoXCIsXCIpO1xuICAgIGxldCB1bmNlcnRhaW50eTogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBmb3IgKGNvbnN0IHBhcmFtIG9mIHBhcnRzLnNsaWNlKDEpKSB7XG4gICAgICAgIGNvbnN0IG0gPSBwYXJhbS5tYXRjaCgvdT0oLiopLyk7XG4gICAgICAgIGlmIChtKSB1bmNlcnRhaW50eSA9IHBhcnNlKG1bMV0pO1xuICAgIH1cbiAgICBjb25zdCBsYXRpdHVkZSA9IHBhcnNlKGNvb3Jkc1swXSk7XG4gICAgY29uc3QgbG9uZ2l0dWRlID0gcGFyc2UoY29vcmRzWzFdKTtcblxuICAgIGlmIChsYXRpdHVkZSA9PT0gbnVsbCB8fCBsb25naXR1ZGUgPT09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGdlb0Nvb3JkcyA9IHtcbiAgICAgICAgbGF0aXR1ZGU6IGxhdGl0dWRlISxcbiAgICAgICAgbG9uZ2l0dWRlOiBsb25naXR1ZGUhLFxuICAgICAgICBhbHRpdHVkZTogcGFyc2UoY29vcmRzWzJdKSxcbiAgICAgICAgYWNjdXJhY3k6IHVuY2VydGFpbnR5ISxcbiAgICAgICAgYWx0aXR1ZGVBY2N1cmFjeTogbnVsbCxcbiAgICAgICAgaGVhZGluZzogbnVsbCxcbiAgICAgICAgc3BlZWQ6IG51bGwsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHRvSlNPTjogKCkgPT4gZ2VvQ29vcmRzLFxuICAgICAgICAuLi5nZW9Db29yZHMsXG4gICAgfTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFTyxNQUFNQSxXQUFXLEdBQUlDLEdBQVcsSUFBeUM7RUFDNUUsU0FBU0MsS0FBS0EsQ0FBQ0MsQ0FBUyxFQUFpQjtJQUNyQyxNQUFNQyxHQUFHLEdBQUdDLFVBQVUsQ0FBQ0YsQ0FBQyxDQUFDO0lBQ3pCLElBQUlHLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDSCxHQUFHLENBQUMsRUFBRTtNQUNuQixPQUFPLElBQUk7SUFDZixDQUFDLE1BQU07TUFDSCxPQUFPQSxHQUFHO0lBQ2Q7RUFDSjtFQUVBLE1BQU1JLENBQUMsR0FBR1AsR0FBRyxDQUFDUSxLQUFLLENBQUMsbUJBQW1CLENBQUM7RUFDeEMsSUFBSSxDQUFDRCxDQUFDLEVBQUU7RUFDUixNQUFNRSxLQUFLLEdBQUdGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQ0csS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUM3QixNQUFNQyxNQUFNLEdBQUdGLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUNsQyxJQUFJRSxXQUFzQyxHQUFHQyxTQUFTO0VBQ3RELEtBQUssTUFBTUMsS0FBSyxJQUFJTCxLQUFLLENBQUNNLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRTtJQUNoQyxNQUFNUixDQUFDLEdBQUdPLEtBQUssQ0FBQ04sS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUMvQixJQUFJRCxDQUFDLEVBQUVLLFdBQVcsR0FBR1gsS0FBSyxDQUFDTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFDcEM7RUFDQSxNQUFNUyxRQUFRLEdBQUdmLEtBQUssQ0FBQ1UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ2pDLE1BQU1NLFNBQVMsR0FBR2hCLEtBQUssQ0FBQ1UsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0VBRWxDLElBQUlLLFFBQVEsS0FBSyxJQUFJLElBQUlDLFNBQVMsS0FBSyxJQUFJLEVBQUU7SUFDekM7RUFDSjtFQUVBLE1BQU1DLFNBQVMsR0FBRztJQUNkRixRQUFRLEVBQUVBLFFBQVM7SUFDbkJDLFNBQVMsRUFBRUEsU0FBVTtJQUNyQkUsUUFBUSxFQUFFbEIsS0FBSyxDQUFDVSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUJTLFFBQVEsRUFBRVIsV0FBWTtJQUN0QlMsZ0JBQWdCLEVBQUUsSUFBSTtJQUN0QkMsT0FBTyxFQUFFLElBQUk7SUFDYkMsS0FBSyxFQUFFO0VBQ1gsQ0FBQztFQUVELE9BQUFDLGFBQUE7SUFDSUMsTUFBTSxFQUFFQSxDQUFBLEtBQU1QO0VBQVMsR0FDcEJBLFNBQVM7QUFFcEIsQ0FBQztBQUFDUSxPQUFBLENBQUEzQixXQUFBLEdBQUFBLFdBQUEiLCJpZ25vcmVMaXN0IjpbXX0=