@@ -24,7 +24,12 @@ export class AnimatedPoint extends AnimatedWithChildren {
2424 this . latitude = new Animated . Value ( this . latitude ) ;
2525 }
2626
27- this . _listeners = { } ;
27+ // React Native < 0.83 uses object, >= 0.83 uses Map
28+ // We only initialize to object if super didn't initialize it (or initiated it to empty object/null)
29+ // and we want to preserve the type if it is a Map.
30+ if ( ! this . _listeners ) {
31+ this . _listeners = { } ;
32+ }
2833 }
2934
3035 setValue ( point = DEFAULT_POINT ) {
@@ -61,18 +66,36 @@ export class AnimatedPoint extends AnimatedWithChildren {
6166 }
6267 } ;
6368
64- this . _listeners [ id ] = {
69+ const listener = {
6570 longitude : this . longitude . addListener ( completeCB ) ,
6671 latitude : this . latitude . addListener ( completeCB ) ,
6772 } ;
6873
74+ if ( this . _listeners instanceof Map ) {
75+ this . _listeners . set ( id , listener ) ;
76+ } else {
77+ this . _listeners [ id ] = listener ;
78+ }
79+
6980 return id ;
7081 }
7182
7283 removeListener ( id ) {
73- this . longitude . removeListener ( this . _listeners [ id ] . longitude ) ;
74- this . latitude . removeListener ( this . _listeners [ id ] . latitude ) ;
75- delete this . _listeners [ id ] ;
84+ if ( this . _listeners instanceof Map ) {
85+ const listener = this . _listeners . get ( id ) ;
86+ if ( listener ) {
87+ this . longitude . removeListener ( listener . longitude ) ;
88+ this . latitude . removeListener ( listener . latitude ) ;
89+ this . _listeners . delete ( id ) ;
90+ }
91+ } else {
92+ const listener = this . _listeners [ id ] ;
93+ if ( listener ) {
94+ this . longitude . removeListener ( listener . longitude ) ;
95+ this . latitude . removeListener ( listener . latitude ) ;
96+ delete this . _listeners [ id ] ;
97+ }
98+ }
7699 }
77100
78101 spring ( config = { coordinates : DEFAULT_COORD } ) {
0 commit comments