@@ -1010,24 +1010,31 @@ export class PaperArea extends React.Component<PaperAreaProps, State> implements
10101010 }
10111011
10121012 private applyViewportState ( targetState : ViewportState ) {
1013- const previous = this . state . transform ;
1013+ let previous = this . state . transform ;
10141014 const scale = targetState . scale . x ;
10151015 const paperCenter = targetState . center ;
10161016
1017- this . setState ( { transform : { ...previous , scale} } , ( ) => {
1018- const { originX, originY, paddingX, paddingY} = this . state . transform ;
1019- const scrollCenterX = ( paperCenter . x + originX ) * scale ;
1020- const scrollCenterY = ( paperCenter . y + originY ) * scale ;
1021- const { clientWidth, clientHeight} = this . area ;
1022-
1023- this . area . scrollLeft = scrollCenterX - clientWidth / 2 + paddingX ;
1024- this . area . scrollTop = scrollCenterY - clientHeight / 2 + paddingY ;
1025-
1026- if ( scale !== previous . scale ) {
1027- this . source . trigger ( 'changeScale' , { source : this , previous : previous . scale } ) ;
1028- this . source . trigger ( 'changeTransform' , { previous, source : this } ) ;
1017+ this . setState (
1018+ state => {
1019+ previous = state . transform ;
1020+ return {
1021+ transform : { ...state . transform , scale} ,
1022+ } ;
1023+ } , ( ) => {
1024+ const { originX, originY, paddingX, paddingY} = this . state . transform ;
1025+ const scrollCenterX = ( paperCenter . x + originX ) * scale ;
1026+ const scrollCenterY = ( paperCenter . y + originY ) * scale ;
1027+ const { clientWidth, clientHeight} = this . area ;
1028+
1029+ this . area . scrollLeft = scrollCenterX - clientWidth / 2 + paddingX ;
1030+ this . area . scrollTop = scrollCenterY - clientHeight / 2 + paddingY ;
1031+
1032+ if ( scale !== previous . scale ) {
1033+ this . source . trigger ( 'changeScale' , { source : this , previous : previous . scale } ) ;
1034+ this . source . trigger ( 'changeTransform' , { previous, source : this } ) ;
1035+ }
10291036 }
1030- } ) ;
1037+ ) ;
10311038 }
10321039}
10331040
0 commit comments