@@ -8,10 +8,12 @@ import { TransitionService } from '../transition/transitionService';
8
8
import { val } from '../common/hof' ;
9
9
import { StateDeclaration } from '../state/interface' ;
10
10
11
+ export const RESOLVE_HOOK_PRIORITY = 1000 ;
12
+
11
13
/**
12
14
* A [[TransitionHookFn]] which resolves all EAGER Resolvables in the To Path
13
15
*
14
- * Registered using `transitionService.onStart({}, eagerResolvePath);`
16
+ * Registered using `transitionService.onStart({}, eagerResolvePath, { priority: 1000 } );`
15
17
*
16
18
* When a Transition starts, this hook resolves all the EAGER Resolvables, which the transition then waits for.
17
19
*
@@ -23,12 +25,12 @@ const eagerResolvePath: TransitionHookFn = (trans: Transition) =>
23
25
. then ( noop ) ;
24
26
25
27
export const registerEagerResolvePath = ( transitionService : TransitionService ) =>
26
- transitionService . onStart ( { } , eagerResolvePath , { priority : 1000 } ) ;
28
+ transitionService . onStart ( { } , eagerResolvePath , { priority : RESOLVE_HOOK_PRIORITY } ) ;
27
29
28
30
/**
29
31
* A [[TransitionHookFn]] which resolves all LAZY Resolvables for the state (and all its ancestors) in the To Path
30
32
*
31
- * Registered using `transitionService.onEnter({ entering: () => true }, lazyResolveState);`
33
+ * Registered using `transitionService.onEnter({ entering: () => true }, lazyResolveState, { priority: 1000 } );`
32
34
*
33
35
* When a State is being entered, this hook resolves all the Resolvables for this state, which the transition then waits for.
34
36
*
@@ -41,5 +43,23 @@ const lazyResolveState: TransitionStateHookFn = (trans: Transition, state: State
41
43
. then ( noop ) ;
42
44
43
45
export const registerLazyResolveState = ( transitionService : TransitionService ) =>
44
- transitionService . onEnter ( { entering : val ( true ) } , lazyResolveState , { priority : 1000 } ) ;
46
+ transitionService . onEnter ( { entering : val ( true ) } , lazyResolveState , { priority : RESOLVE_HOOK_PRIORITY } ) ;
47
+
48
+
49
+ /**
50
+ * A [[TransitionHookFn]] which resolves any dynamically added (LAZY or EAGER) Resolvables.
51
+ *
52
+ * Registered using `transitionService.onFinish({}, eagerResolvePath, { priority: 1000 });`
53
+ *
54
+ * After all entering states have been entered, this hook resolves any remaining Resolvables.
55
+ * These are typically dynamic resolves which were added by some Transition Hook using [[Transition.addResolvable]].
56
+ *
57
+ * See [[StateDeclaration.resolve]]
58
+ */
59
+ const resolveRemaining : TransitionHookFn = ( trans : Transition ) =>
60
+ new ResolveContext ( trans . treeChanges ( ) . to )
61
+ . resolvePath ( "LAZY" , trans )
62
+ . then ( noop ) ;
45
63
64
+ export const registerResolveRemaining = ( transitionService : TransitionService ) =>
65
+ transitionService . onFinish ( { } , resolveRemaining , { priority : RESOLVE_HOOK_PRIORITY } ) ;
0 commit comments