matrix-react-sdk
Version:
SDK for matrix.org using React
87 lines (84 loc) • 11.2 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _location = require("../../../utils/location");
var _map = require("../../../utils/location/map");
var _Marker = _interopRequireDefault(require("./Marker"));
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/*
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 useMapMarker = (map, geoUri) => {
const [marker, setMarker] = (0, _react.useState)();
const onElementRef = (0, _react.useCallback)(element => {
if (marker || !element) {
return;
}
const coords = (0, _location.parseGeoUri)(geoUri);
if (coords) {
const newMarker = (0, _map.createMarker)(coords, element);
newMarker.addTo(map);
setMarker(newMarker);
}
}, [marker, geoUri, map]);
(0, _react.useEffect)(() => {
if (marker) {
const coords = (0, _location.parseGeoUri)(geoUri);
if (coords) {
marker.setLngLat({
lon: coords.longitude,
lat: coords.latitude
});
}
}
}, [marker, geoUri]);
(0, _react.useEffect)(() => () => {
if (marker) {
marker.remove();
}
}, [marker]);
return {
marker,
onElementRef
};
};
/**
* Generic location marker
*/
const SmartMarker = ({
id,
map,
geoUri,
roomMember,
useMemberColor,
tooltip
}) => {
const {
onElementRef
} = useMapMarker(map, geoUri);
return (
/*#__PURE__*/
// maplibregl hijacks the Marker dom element
// and removes it from the dom when the maplibregl.Marker instance
// is removed
// wrap in a span so that react doesn't get confused
// when trying to unmount this component
_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_Marker.default, {
ref: onElementRef,
id: id,
roomMember: roomMember,
useMemberColor: useMemberColor,
tooltip: tooltip
}))
);
};
var _default = exports.default = SmartMarker;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfbG9jYXRpb24iLCJfbWFwIiwiX01hcmtlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJoYXMiLCJnZXQiLCJuIiwiX19wcm90b19fIiwiYSIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwidSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImkiLCJzZXQiLCJ1c2VNYXBNYXJrZXIiLCJtYXAiLCJnZW9VcmkiLCJtYXJrZXIiLCJzZXRNYXJrZXIiLCJ1c2VTdGF0ZSIsIm9uRWxlbWVudFJlZiIsInVzZUNhbGxiYWNrIiwiZWxlbWVudCIsImNvb3JkcyIsInBhcnNlR2VvVXJpIiwibmV3TWFya2VyIiwiY3JlYXRlTWFya2VyIiwiYWRkVG8iLCJ1c2VFZmZlY3QiLCJzZXRMbmdMYXQiLCJsb24iLCJsb25naXR1ZGUiLCJsYXQiLCJsYXRpdHVkZSIsInJlbW92ZSIsIlNtYXJ0TWFya2VyIiwiaWQiLCJyb29tTWVtYmVyIiwidXNlTWVtYmVyQ29sb3IiLCJ0b29sdGlwIiwiY3JlYXRlRWxlbWVudCIsInJlZiIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3ZpZXdzL2xvY2F0aW9uL1NtYXJ0TWFya2VyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IDIwMjQgTmV3IFZlY3RvciBMdGQuXG5Db3B5cmlnaHQgMjAyMiBUaGUgTWF0cml4Lm9yZyBGb3VuZGF0aW9uIEMuSS5DLlxuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQUdQTC0zLjAtb25seSBPUiBHUEwtMy4wLW9ubHlcblBsZWFzZSBzZWUgTElDRU5TRSBmaWxlcyBpbiB0aGUgcmVwb3NpdG9yeSByb290IGZvciBmdWxsIGRldGFpbHMuXG4qL1xuXG5pbXBvcnQgUmVhY3QsIHsgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICogYXMgbWFwbGlicmVnbCBmcm9tIFwibWFwbGlicmUtZ2xcIjtcbmltcG9ydCB7IFJvb21NZW1iZXIgfSBmcm9tIFwibWF0cml4LWpzLXNkay9zcmMvbWF0cml4XCI7XG5cbmltcG9ydCB7IHBhcnNlR2VvVXJpIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxzL2xvY2F0aW9uXCI7XG5pbXBvcnQgeyBjcmVhdGVNYXJrZXIgfSBmcm9tIFwiLi4vLi4vLi4vdXRpbHMvbG9jYXRpb24vbWFwXCI7XG5pbXBvcnQgTWFya2VyIGZyb20gXCIuL01hcmtlclwiO1xuXG5jb25zdCB1c2VNYXBNYXJrZXIgPSAoXG4gICAgbWFwOiBtYXBsaWJyZWdsLk1hcCxcbiAgICBnZW9Vcmk6IHN0cmluZyxcbik6IHsgbWFya2VyPzogbWFwbGlicmVnbC5NYXJrZXI7IG9uRWxlbWVudFJlZjogKGVsOiBIVE1MRGl2RWxlbWVudCkgPT4gdm9pZCB9ID0+IHtcbiAgICBjb25zdCBbbWFya2VyLCBzZXRNYXJrZXJdID0gdXNlU3RhdGU8bWFwbGlicmVnbC5NYXJrZXI+KCk7XG5cbiAgICBjb25zdCBvbkVsZW1lbnRSZWYgPSB1c2VDYWxsYmFjayhcbiAgICAgICAgKGVsZW1lbnQ6IEhUTUxEaXZFbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAobWFya2VyIHx8ICFlbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgY29vcmRzID0gcGFyc2VHZW9VcmkoZ2VvVXJpKTtcbiAgICAgICAgICAgIGlmIChjb29yZHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdNYXJrZXIgPSBjcmVhdGVNYXJrZXIoY29vcmRzLCBlbGVtZW50KTtcbiAgICAgICAgICAgICAgICBuZXdNYXJrZXIuYWRkVG8obWFwKTtcbiAgICAgICAgICAgICAgICBzZXRNYXJrZXIobmV3TWFya2VyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgW21hcmtlciwgZ2VvVXJpLCBtYXBdLFxuICAgICk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAobWFya2VyKSB7XG4gICAgICAgICAgICBjb25zdCBjb29yZHMgPSBwYXJzZUdlb1VyaShnZW9VcmkpO1xuICAgICAgICAgICAgaWYgKGNvb3Jkcykge1xuICAgICAgICAgICAgICAgIG1hcmtlci5zZXRMbmdMYXQoeyBsb246IGNvb3Jkcy5sb25naXR1ZGUsIGxhdDogY29vcmRzLmxhdGl0dWRlIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW21hcmtlciwgZ2VvVXJpXSk7XG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICAgICgpID0+ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChtYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBtYXJrZXIucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIFttYXJrZXJdLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBtYXJrZXIsXG4gICAgICAgIG9uRWxlbWVudFJlZixcbiAgICB9O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBTbWFydE1hcmtlclByb3BzIHtcbiAgICBtYXA6IG1hcGxpYnJlZ2wuTWFwO1xuICAgIGdlb1VyaTogc3RyaW5nO1xuICAgIGlkPzogc3RyaW5nO1xuICAgIC8vIHJlbmRlcnMgTWVtYmVyQXZhdGFyIHdoZW4gcHJvdmlkZWRcbiAgICByb29tTWVtYmVyPzogUm9vbU1lbWJlcjtcbiAgICAvLyB1c2UgbWVtYmVyIHRleHQgY29sb3IgYXMgYmFja2dyb3VuZFxuICAgIHVzZU1lbWJlckNvbG9yPzogYm9vbGVhbjtcbiAgICB0b29sdGlwPzogUmVhY3ROb2RlO1xufVxuXG4vKipcbiAqIEdlbmVyaWMgbG9jYXRpb24gbWFya2VyXG4gKi9cbmNvbnN0IFNtYXJ0TWFya2VyOiBSZWFjdC5GQzxTbWFydE1hcmtlclByb3BzPiA9ICh7IGlkLCBtYXAsIGdlb1VyaSwgcm9vbU1lbWJlciwgdXNlTWVtYmVyQ29sb3IsIHRvb2x0aXAgfSkgPT4ge1xuICAgIGNvbnN0IHsgb25FbGVtZW50UmVmIH0gPSB1c2VNYXBNYXJrZXIobWFwLCBnZW9VcmkpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgLy8gbWFwbGlicmVnbCBoaWphY2tzIHRoZSBNYXJrZXIgZG9tIGVsZW1lbnRcbiAgICAgICAgLy8gYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgZG9tIHdoZW4gdGhlIG1hcGxpYnJlZ2wuTWFya2VyIGluc3RhbmNlXG4gICAgICAgIC8vIGlzIHJlbW92ZWRcbiAgICAgICAgLy8gd3JhcCBpbiBhIHNwYW4gc28gdGhhdCByZWFjdCBkb2Vzbid0IGdldCBjb25mdXNlZFxuICAgICAgICAvLyB3aGVuIHRyeWluZyB0byB1bm1vdW50IHRoaXMgY29tcG9uZW50XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPE1hcmtlclxuICAgICAgICAgICAgICAgIHJlZj17b25FbGVtZW50UmVmfVxuICAgICAgICAgICAgICAgIGlkPXtpZH1cbiAgICAgICAgICAgICAgICByb29tTWVtYmVyPXtyb29tTWVtYmVyfVxuICAgICAgICAgICAgICAgIHVzZU1lbWJlckNvbG9yPXt1c2VNZW1iZXJDb2xvcn1cbiAgICAgICAgICAgICAgICB0b29sdGlwPXt0b29sdGlwfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTbWFydE1hcmtlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQVFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUlBLElBQUFDLFNBQUEsR0FBQUQs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