@@ -2,15 +2,16 @@ import {memoized, refToHash, hashRecord, getIn, rootAt} from './util';
2
2
import { merge , push , unshift , splice } from 'update-in' ;
3
3
import { makeDerefFromReact , makeSwapFromReact , isReactCmp } from './ReactAdapter' ;
4
4
5
+
5
6
let makeRefinedSwap = memoized (
6
7
( swapFn , paths ) => refToHash ( swapFn ) + hashRecord ( paths ) ,
7
- ( swapFn , paths ) => ( f ) => swapFn ( rootAt ( paths , f ) )
8
- ) ;
8
+ ( swapFn , paths ) => ( f ) => swapFn ( rootAt ( paths , f ) ) ) ;
9
+
9
10
10
11
let makeRefinedDeref = memoized (
11
12
( deref , paths ) => refToHash ( deref ) + hashRecord ( paths ) ,
12
- ( deref , paths ) => ( ) => getIn ( deref ( ) , paths )
13
- ) ;
13
+ ( deref , paths ) => ( ) => getIn ( deref ( ) , paths ) ) ;
14
+
14
15
15
16
class RefCursor {
16
17
constructor ( deref , swapFn ) {
@@ -29,17 +30,14 @@ class RefCursor {
29
30
}
30
31
31
32
32
- let NewRefCursor_ = ( deref , swap ) => new RefCursor ( deref , swap ) ;
33
+ let NewRefCursor = memoized (
34
+ ( deref , swap ) => refToHash ( deref ) + refToHash ( swap ) ,
35
+ ( deref , swap ) => new RefCursor ( deref , swap ) ) ;
33
36
34
- // reuse the same cursor instance for same {deref swap paths}
35
- let hasher = ( deref , swap ) => refToHash ( deref ) + refToHash ( swap ) ;
36
- let NewRefCursor = memoized ( hasher , NewRefCursor_ ) ;
37
37
38
+ RefCursor . build = ( deref , swap ) => isReactCmp ( deref )
39
+ ? NewRefCursor ( makeDerefFromReact ( deref ) , makeSwapFromReact ( deref ) )
40
+ : NewRefCursor ( deref , swap ) ;
38
41
39
- RefCursor . build = ( deref , swap ) => {
40
- return isReactCmp ( deref )
41
- ? NewRefCursor ( makeDerefFromReact ( deref ) , makeSwapFromReact ( deref ) )
42
- : NewRefCursor ( deref , swap ) ;
43
- } ;
44
42
45
43
export default RefCursor ;
0 commit comments