From 05d58ae5e23c70a2f81306aadc836b8b9ff21f5c Mon Sep 17 00:00:00 2001 From: Emil Haldrup Eriksen Date: Sun, 3 Sep 2023 22:17:12 +0200 Subject: [PATCH 1/3] First attempt at viewport property implementation --- CHANGELOG.md | 6 +++++ src/ts/components/MapContainer.tsx | 39 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88490f7..db65570 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,12 @@ All notable changes to this project will be documented in this file. +## [1.0.9] - UNRELEASED + +### Added + +- Add `viewport` property for the `Map` component to enable easy manipulation of the viewport (i.e. zoom/center) + ## [1.0.8] - 2023-08-30 ### Added diff --git a/src/ts/components/MapContainer.tsx b/src/ts/components/MapContainer.tsx index 52ef923..ed071cd 100644 --- a/src/ts/components/MapContainer.tsx +++ b/src/ts/components/MapContainer.tsx @@ -32,6 +32,30 @@ function EventSubscriber(props) { } }, [props.invalidateSize]) + useEffect(function updateViewport(){ + if(props.viewport === undefined){ + return; + } + let {transition, center, zoom, options} = props.viewport; + if(!center){ + center = map.getCenter(); + } + if(!zoom){ + zoom = map.getZoom(); + } + // TODO: Maybe check for change before invoking transition? + switch (transition) { + case 'flyTo': + map.flyTo(center, zoom, options) + return; + case 'panTo': + map.panTo(center, options) + return; + default: + map.setView(center, zoom, options) + } + }, [props.viewport]) + return null } @@ -54,6 +78,21 @@ type Props = Modify Date: Fri, 15 Sep 2023 22:35:40 +0200 Subject: [PATCH 2/3] Fix map viewport center/zoom tracking --- src/ts/components/MapContainer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ts/components/MapContainer.tsx b/src/ts/components/MapContainer.tsx index ed071cd..a584347 100644 --- a/src/ts/components/MapContainer.tsx +++ b/src/ts/components/MapContainer.tsx @@ -8,7 +8,7 @@ import {ClickEvents, KeyboardEvents, LoadEvents, MapContainerProps, DashComponen const trackViewport = (map, props) => { const bounds = map.getBounds() props.setProps({ - zoom: map.zoom, center: map.center, + zoom: map.getZoom(), center: map.getCenter(), bounds: [[bounds.getSouth(), bounds.getWest()], [bounds.getNorth(), bounds.getEast()]] }) } From 12690297e5d50efe15b49939e4b990e67ecca2ec Mon Sep 17 00:00:00 2001 From: Emil Haldrup Eriksen Date: Mon, 25 Sep 2023 19:47:48 +0200 Subject: [PATCH 3/3] Prep 1.0.9 release --- CHANGELOG.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index db65570..5b23226 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to this project will be documented in this file. -## [1.0.9] - UNRELEASED +## [1.0.9] - 2023-09-25 ### Added diff --git a/package-lock.json b/package-lock.json index 60b6aca..34666ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "dash-leaflet", - "version": "1.0.8rc2", + "version": "1.0.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "dash-leaflet", - "version": "1.0.8rc2", + "version": "1.0.9", "license": "MIT", "dependencies": { "base64-js": "^1.5.1", diff --git a/package.json b/package.json index 4a96be9..721bf5a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dash-leaflet", - "version": "1.0.8", + "version": "1.0.9", "description": "Dash Leaflet is a light wrapper around React-Leaflet. The syntax is similar to other Dash components, with naming conventions following the React-Leaflet API.", "main": "index.ts", "repository": {