UNPKG

matrix-react-sdk

Version:
45 lines (41 loc) 5.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getBeaconBounds = void 0; var _arrays = require("../arrays"); var _location = require("../location"); /* 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. */ /** * Get the geo bounds of given list of beacons * * Latitude: * equator: 0, North pole: 90, South pole -90 * Longitude: * Prime Meridian (Greenwich): 0 * east of Greenwich has a positive longitude, max 180 * west of Greenwich has a negative longitude, min -180 */ const getBeaconBounds = beacons => { const coords = (0, _arrays.filterBoolean)(beacons.map(beacon => !!beacon.latestLocationState?.uri ? (0, _location.parseGeoUri)(beacon.latestLocationState.uri) : undefined)); if (!coords.length) { return; } // sort descending const sortedByLat = [...coords].sort((left, right) => right.latitude - left.latitude); const sortedByLong = [...coords].sort((left, right) => right.longitude - left.longitude); if (sortedByLat.length < 1 || sortedByLong.length < 1) return; return { north: sortedByLat[0].latitude, south: sortedByLat[sortedByLat.length - 1].latitude, east: sortedByLong[0].longitude, west: sortedByLong[sortedByLong.length - 1].longitude }; }; exports.getBeaconBounds = getBeaconBounds; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXJyYXlzIiwicmVxdWlyZSIsIl9sb2NhdGlvbiIsImdldEJlYWNvbkJvdW5kcyIsImJlYWNvbnMiLCJjb29yZHMiLCJmaWx0ZXJCb29sZWFuIiwibWFwIiwiYmVhY29uIiwibGF0ZXN0TG9jYXRpb25TdGF0ZSIsInVyaSIsInBhcnNlR2VvVXJpIiwidW5kZWZpbmVkIiwibGVuZ3RoIiwic29ydGVkQnlMYXQiLCJzb3J0IiwibGVmdCIsInJpZ2h0IiwibGF0aXR1ZGUiLCJzb3J0ZWRCeUxvbmciLCJsb25naXR1ZGUiLCJub3J0aCIsInNvdXRoIiwiZWFzdCIsIndlc3QiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3V0aWxzL2JlYWNvbi9ib3VuZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbkNvcHlyaWdodCAyMDI0IE5ldyBWZWN0b3IgTHRkLlxuQ29weXJpZ2h0IDIwMjIgVGhlIE1hdHJpeC5vcmcgRm91bmRhdGlvbiBDLkkuQ1xuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgeyBCZWFjb24gfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCB7IGZpbHRlckJvb2xlYW4gfSBmcm9tIFwiLi4vYXJyYXlzXCI7XG5pbXBvcnQgeyBwYXJzZUdlb1VyaSB9IGZyb20gXCIuLi9sb2NhdGlvblwiO1xuXG5leHBvcnQgdHlwZSBCb3VuZHMgPSB7XG4gICAgbm9ydGg6IG51bWJlcjtcbiAgICBlYXN0OiBudW1iZXI7XG4gICAgd2VzdDogbnVtYmVyO1xuICAgIHNvdXRoOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIEdldCB0aGUgZ2VvIGJvdW5kcyBvZiBnaXZlbiBsaXN0IG9mIGJlYWNvbnNcbiAqXG4gKiBMYXRpdHVkZTpcbiAqIGVxdWF0b3I6IDAsIE5vcnRoIHBvbGU6IDkwLCBTb3V0aCBwb2xlIC05MFxuICogTG9uZ2l0dWRlOlxuICogUHJpbWUgTWVyaWRpYW4gKEdyZWVud2ljaCk6IDBcbiAqIGVhc3Qgb2YgR3JlZW53aWNoIGhhcyBhIHBvc2l0aXZlIGxvbmdpdHVkZSwgbWF4IDE4MFxuICogd2VzdCBvZiBHcmVlbndpY2ggaGFzIGEgbmVnYXRpdmUgbG9uZ2l0dWRlLCBtaW4gLTE4MFxuICovXG5leHBvcnQgY29uc3QgZ2V0QmVhY29uQm91bmRzID0gKGJlYWNvbnM6IEJlYWNvbltdKTogQm91bmRzIHwgdW5kZWZpbmVkID0+IHtcbiAgICBjb25zdCBjb29yZHMgPSBmaWx0ZXJCb29sZWFuPEdlb2xvY2F0aW9uQ29vcmRpbmF0ZXM+KFxuICAgICAgICBiZWFjb25zLm1hcCgoYmVhY29uKSA9PlxuICAgICAgICAgICAgISFiZWFjb24ubGF0ZXN0TG9jYXRpb25TdGF0ZT8udXJpID8gcGFyc2VHZW9VcmkoYmVhY29uLmxhdGVzdExvY2F0aW9uU3RhdGUudXJpKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgKSxcbiAgICApO1xuXG4gICAgaWYgKCFjb29yZHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBzb3J0IGRlc2NlbmRpbmdcbiAgICBjb25zdCBzb3J0ZWRCeUxhdCA9IFsuLi5jb29yZHNdLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiByaWdodC5sYXRpdHVkZSAtIGxlZnQubGF0aXR1ZGUpO1xuICAgIGNvbnN0IHNvcnRlZEJ5TG9uZyA9IFsuLi5jb29yZHNdLnNvcnQoKGxlZnQsIHJpZ2h0KSA9PiByaWdodC5sb25naXR1ZGUgLSBsZWZ0LmxvbmdpdHVkZSk7XG5cbiAgICBpZiAoc29ydGVkQnlMYXQubGVuZ3RoIDwgMSB8fCBzb3J0ZWRCeUxvbmcubGVuZ3RoIDwgMSkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgbm9ydGg6IHNvcnRlZEJ5TGF0WzBdIS5sYXRpdHVkZSxcbiAgICAgICAgc291dGg6IHNvcnRlZEJ5TGF0W3NvcnRlZEJ5TGF0Lmxlbmd0aCAtIDFdIS5sYXRpdHVkZSxcbiAgICAgICAgZWFzdDogc29ydGVkQnlMb25nWzBdIS5sb25naXR1ZGUsXG4gICAgICAgIHdlc3Q6IHNvcnRlZEJ5TG9uZ1tzb3J0ZWRCeUxvbmcubGVuZ3RoIC0gMV0hLmxvbmdpdHVkZSxcbiAgICB9O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBVUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBY0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxNQUFNRSxlQUFlLEdBQUlDLE9BQWlCLElBQXlCO0VBQ3RFLE1BQU1DLE1BQU0sR0FBRyxJQUFBQyxxQkFBYSxFQUN4QkYsT0FBTyxDQUFDRyxHQUFHLENBQUVDLE1BQU0sSUFDZixDQUFDLENBQUNBLE1BQU0sQ0FBQ0MsbUJBQW1CLEVBQUVDLEdBQUcsR0FBRyxJQUFBQyxxQkFBVyxFQUFDSCxNQUFNLENBQUNDLG1CQUFtQixDQUFDQyxHQUFHLENBQUMsR0FBR0UsU0FDdEYsQ0FDSixDQUFDO0VBRUQsSUFBSSxDQUFDUCxNQUFNLENBQUNRLE1BQU0sRUFBRTtJQUNoQjtFQUNKOztFQUVBO0VBQ0EsTUFBTUMsV0FBVyxHQUFHLENBQUMsR0FBR1QsTUFBTSxDQUFDLENBQUNVLElBQUksQ0FBQyxDQUFDQyxJQUFJLEVBQUVDLEtBQUssS0FBS0EsS0FBSyxDQUFDQyxRQUFRLEdBQUdGLElBQUksQ0FBQ0UsUUFBUSxDQUFDO0VBQ3JGLE1BQU1DLFlBQVksR0FBRyxDQUFDLEdBQUdkLE1BQU0sQ0FBQyxDQUFDVSxJQUFJLENBQUMsQ0FBQ0MsSUFBSSxFQUFFQyxLQUFLLEtBQUtBLEtBQUssQ0FBQ0csU0FBUyxHQUFHSixJQUFJLENBQUNJLFNBQVMsQ0FBQztFQUV4RixJQUFJTixXQUFXLENBQUNELE1BQU0sR0FBRyxDQUFDLElBQUlNLFlBQVksQ0FBQ04sTUFBTSxHQUFHLENBQUMsRUFBRTtFQUV2RCxPQUFPO0lBQ0hRLEtBQUssRUFBRVAsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFFSSxRQUFRO0lBQy9CSSxLQUFLLEVBQUVSLFdBQVcsQ0FBQ0EsV0FBVyxDQUFDRCxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUVLLFFBQVE7SUFDcERLLElBQUksRUFBRUosWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFFQyxTQUFTO0lBQ2hDSSxJQUFJLEVBQUVMLFlBQVksQ0FBQ0EsWUFBWSxDQUFDTixNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUVPO0VBQ2pELENBQUM7QUFDTCxDQUFDO0FBQUNLLE9BQUEsQ0FBQXRCLGVBQUEsR0FBQUEsZUFBQSIsImlnbm9yZUxpc3QiOltdfQ==