@@ -11,18 +11,31 @@ import { TargetObserver, TargetObserverDelegate } from "./target_observer"
1111import { OutletObserver , OutletObserverDelegate } from "./outlet_observer"
1212import { namespaceCamelize } from "./string_helpers"
1313
14+ export enum Lifecycle {
15+ Idle ,
16+ Initialized ,
17+ Connected ,
18+ Disconnected ,
19+ }
20+
1421export class Context implements ErrorHandler , TargetObserverDelegate , OutletObserverDelegate {
1522 readonly module : Module
1623 readonly scope : Scope
1724 readonly controller : Controller
25+ private _lifecycle : Lifecycle
1826 private bindingObserver : BindingObserver
1927 private valueObserver : ValueObserver
2028 private targetObserver : TargetObserver
2129 private outletObserver : OutletObserver
2230
31+ get lifecycle ( ) : Lifecycle {
32+ return this . _lifecycle
33+ }
34+
2335 constructor ( module : Module , scope : Scope ) {
2436 this . module = module
2537 this . scope = scope
38+ this . _lifecycle = Lifecycle . Idle
2639 this . controller = new module . controllerConstructor ( this )
2740 this . bindingObserver = new BindingObserver ( this , this . dispatcher )
2841 this . valueObserver = new ValueObserver ( this , this . controller )
@@ -31,6 +44,8 @@ export class Context implements ErrorHandler, TargetObserverDelegate, OutletObse
3144
3245 try {
3346 this . controller . initialize ( )
47+ this . _lifecycle = Lifecycle . Initialized
48+ this . controller . dispatch ( "initialized" )
3449 this . logDebugActivity ( "initialize" )
3550 } catch ( error : any ) {
3651 this . handleError ( error , "initializing controller" )
@@ -45,6 +60,8 @@ export class Context implements ErrorHandler, TargetObserverDelegate, OutletObse
4560
4661 try {
4762 this . controller . connect ( )
63+ this . _lifecycle = Lifecycle . Connected
64+ this . controller . dispatch ( "connected" )
4865 this . logDebugActivity ( "connect" )
4966 } catch ( error : any ) {
5067 this . handleError ( error , "connecting controller" )
@@ -58,6 +75,8 @@ export class Context implements ErrorHandler, TargetObserverDelegate, OutletObse
5875 disconnect ( ) {
5976 try {
6077 this . controller . disconnect ( )
78+ this . _lifecycle = Lifecycle . Disconnected
79+ this . controller . dispatch ( "disconnected" )
6180 this . logDebugActivity ( "disconnect" )
6281 } catch ( error : any ) {
6382 this . handleError ( error , "disconnecting controller" )
@@ -112,11 +131,15 @@ export class Context implements ErrorHandler, TargetObserverDelegate, OutletObse
112131 // Target observer delegate
113132
114133 targetConnected ( element : Element , name : string ) {
115- this . invokeControllerMethod ( `${ name } TargetConnected` , element )
134+ const methodName = `${ name } TargetConnected`
135+ this . invokeControllerMethod ( methodName , element )
136+ this . controller . dispatch ( methodName , { detail : { element} } )
116137 }
117138
118139 targetDisconnected ( element : Element , name : string ) {
119- this . invokeControllerMethod ( `${ name } TargetDisconnected` , element )
140+ const methodName = `${ name } TargetDisconnected`
141+ this . invokeControllerMethod ( methodName , element )
142+ this . controller . dispatch ( methodName , { detail : { element} } )
120143 }
121144
122145 // Outlet observer delegate
0 commit comments