summaryrefslogtreecommitdiffhomepage
path: root/gui/src
diff options
context:
space:
mode:
authorOskar Nyberg <oskar@mullvad.net>2020-09-25 16:33:51 +0200
committerOskar Nyberg <oskar@mullvad.net>2020-10-13 14:18:01 +0200
commit6b2a644e4e6bb3e54a0e3396e1e6fb8bb4908cb7 (patch)
treed7b4c80fc367d4c4a24eb26c7fb85a1647abd55e /gui/src
parent8ed83fceec60a0b55011c35db6bdcec31d7e3971 (diff)
downloadmullvadvpn-6b2a644e4e6bb3e54a0e3396e1e6fb8bb4908cb7.tar.xz
mullvadvpn-6b2a644e4e6bb3e54a0e3396e1e6fb8bb4908cb7.zip
Fix marker size when disconnected and add transition
Diffstat (limited to 'gui/src')
-rw-r--r--gui/src/renderer/components/SvgMap.tsx31
1 files changed, 15 insertions, 16 deletions
diff --git a/gui/src/renderer/components/SvgMap.tsx b/gui/src/renderer/components/SvgMap.tsx
index 0c1b862cb5..27bc846d73 100644
--- a/gui/src/renderer/components/SvgMap.tsx
+++ b/gui/src/renderer/components/SvgMap.tsx
@@ -36,11 +36,13 @@ const zoomableGroupStyle = {
transition: `transform ${MOVE_SPEED}ms ease-out`,
};
-const markerStyle = mergeRsmStyle({
- default: {
+function getMarkerImageStyle(zoom: number) {
+ return {
+ width: '60px',
+ transform: `translate(${-30 / zoom}px, ${-30 / zoom}px) scale(${1 / zoom})`,
transition: `transform ${MOVE_SPEED}ms ease-out`,
- },
-});
+ };
+}
const geographyStyle = mergeRsmStyle({
default: {
@@ -219,6 +221,12 @@ function SvgMap(props: IProps) {
const enableTransitionScheduler = useScheduler();
useEffect(() => enableTransitionScheduler.schedule(() => setEnableTransition(true)), []);
+ const markerStyle = useMemo(
+ () => mergeRsmStyle({ default: { display: props.showMarker ? undefined : 'none' } }),
+ [props.showMarker],
+ );
+ const markerImageStyle = useMemo(() => getMarkerImageStyle(zoomLevel), [zoomLevel]);
+
return (
<ComposableMap
width={width}
@@ -257,18 +265,9 @@ function SvgMap(props: IProps) {
));
}}
</Geographies>
- {
- // disable CSS transition when moving between locations
- // by using the different "key"
- props.showMarker && (
- <Marker
- key={`user-location-${center.join('-')}`}
- coordinates={center}
- style={markerStyle}>
- <image x="-6" y="-6" width="12" xlinkHref={props.markerImagePath} />
- </Marker>
- )
- }
+ <Marker coordinates={center} style={markerStyle}>
+ <image style={markerImageStyle} xlinkHref={props.markerImagePath} />
+ </Marker>
</ZoomableGroup>
</ComposableMap>
);