@@ -14,6 +14,7 @@ import {
1414 importTwitter ,
1515 importWiki ,
1616} from './api/EpiData' ;
17+ import { NavMode } from './components/chartUtils' ;
1718import DataSet , { DataGroup , DEFAULT_GROUP , flatten , DEFAULT_VIEWPORT } from './data/DataSet' ;
1819import EpiDate from './data/EpiDate' ;
1920import EpiPoint from './data/EpiPoint' ;
@@ -35,13 +36,15 @@ export interface SharedState {
3536 active : DataSet [ ] ;
3637 viewport : null | [ number , number , number , number ] ;
3738 showPoints : boolean ;
39+ navMode : NavMode ;
3840}
3941
4042const DEFAULT_VALUES : SharedState = {
4143 group : DEFAULT_GROUP ,
4244 active : [ ] ,
4345 viewport : DEFAULT_VIEWPORT ,
4446 showPoints : false ,
47+ navMode : NavMode . pan ,
4548} ;
4649
4750const lookups = {
@@ -202,6 +205,8 @@ export default function deriveLinkDefaults(): SharedState & { loader?: ReturnTyp
202205 active : [ ] ,
203206 showPoints : parsed . chart ?. showPoints ?? DEFAULT_VALUES . showPoints ,
204207 viewport : parsed . chart ?. viewport ?? DEFAULT_VALUES . viewport ,
208+ // if we were not passed viewport coords, set to autofit mode
209+ navMode : parsed . chart ?. viewport ? DEFAULT_VALUES . navMode : NavMode . autofit ,
205210 loader : initialLoader ( parsed . datasets ) ,
206211 } ;
207212 } catch ( err ) {
@@ -214,7 +219,8 @@ export default function deriveLinkDefaults(): SharedState & { loader?: ReturnTyp
214219export function getDirectLinkImpl ( state : SharedState ) : { url : URL ; anySkipped : boolean } {
215220 const config : ILinkConfig = {
216221 chart : {
217- viewport : state . viewport ?? [ 0 , 0 , 0 , 0 ] ,
222+ // if in autofit mode, pass null viewport, else preserve viewport (or default to 0s)
223+ viewport : state . navMode == NavMode . autofit ? null : state . viewport ?? [ 0 , 0 , 0 , 0 ] ,
218224 showPoints : state . showPoints ,
219225 } ,
220226 datasets : [ ] ,
0 commit comments