@@ -35,94 +35,96 @@ function updateLoginStatus(status) {
3535} 
3636
3737class  LoginExtent  extends  bg . Extent  { 
38-     email  =  new   bg . State ( this , null ) ; 
39-     password  =  new   bg . State ( this , null ) ; 
40-     emailValid  =  new   bg . State ( this , false ) ; 
41-     passwordValid  =  new   bg . State ( this , false ) ; 
42-     loginEnabled  =  new   bg . State ( this , false ) ; 
43-     loggingIn  =  new   bg . State ( this ,   false ) ; 
44-     loginClick  =  new   bg . Moment ( this ) ; 
45-     loginComplete  =  new   bg . Moment ( this ) ; 
38+     email  =  this . state ( null ) ; 
39+     password  =  this . state ( null ) ; 
40+     emailValid  =  this . state ( false ) ; 
41+     passwordValid  =  this . state ( false ) ; 
42+     loginEnabled  =  this . state ( false ) ; 
43+     loggingIn  =  this . state ( false ) ; 
44+     loginClick  =  this . moment ( ) ; 
45+     loginComplete  =  this . moment ( this ) ; 
4646
4747    constructor ( graph )  { 
4848        super ( graph ) ; 
4949
50-         this . makeBehavior ( [ this . email ,   this . addedToGraph ] ,   [ this . emailValid ] ,   ( extent )   =>   { 
51- 
52-             let   email   =   extent . email . value ; 
53-             let   emailValid   =   validateEmail ( email ) ; 
54-             extent . emailValid . update ( emailValid ) ; 
55-             extent . sideEffect ( ( extent )   =>   { 
56-                 inputFeedback ( "emailFeedback" ,   extent . emailValid . value ) ; 
57-             } ,   undefined ,   null ) ; 
58- 
59-         } ) ; 
60- 
61- 
62-         this . makeBehavior ( [ this . password ,   this . addedToGraph ] ,   [ this . passwordValid ] ,   ( extent )   =>   { 
63- 
64-             let   password   =   extent . password . value   ??   "" ; 
65-             let   passwordValid   =   password . length   >   0 ; 
66-             extent . passwordValid . update ( passwordValid ) ; 
67-             extent . sideEffect ( ( extent )   =>   { 
68-                 inputFeedback ( "passwordFeedback" ,   extent . passwordValid . value ) ; 
69-             } ,   undefined ,   "passwordFeedback" ) ; 
70- 
71-         } ) ; 
72- 
50+         this . behavior ( ) 
51+              . supplies ( this . emailValid ) 
52+             . demands ( this . email ,   this . addedToGraph ) 
53+             . runs ( extent   =>   { 
54+                  let   email   =   extent . email . value ; 
55+                  let   emailValid   =   validateEmail ( email ) ; 
56+                 extent . emailValid . update ( emailValid ) ; 
57+                  extent . sideEffect ( ( extent )   =>   { 
58+                      inputFeedback ( "emailFeedback" ,   extent . emailValid . value ) ; 
59+                  } ,   undefined ,   null ) ; 
60+              } ) ; 
61+ 
62+         this . behavior ( ) 
63+              . supplies ( this . passwordValid ) 
64+             . demands ( this . password ,   this . addedToGraph ) 
65+             . runs ( extent   =>   { 
66+                  let   password   =   extent . password . value   ??   "" ; 
67+                  let   passwordValid   =   password . length   >   0 ; 
68+                 extent . passwordValid . update ( passwordValid ) ; 
69+                  extent . sideEffect ( ( extent )   =>   { 
70+                      inputFeedback ( "passwordFeedback" ,   extent . passwordValid . value ) ; 
71+                  } ,   undefined ,   "passwordFeedback" ) ; 
72+              } ) ; 
7373
74-         this . makeBehavior ( [ this . emailValid ,  this . passwordValid ,  this . loggingIn ,  this . addedToGraph ] ,  [ this . loginEnabled ] ,  ( extent )  =>  { 
74+         this . behavior ( ) 
75+             . supplies ( this . loginEnabled ) 
76+             . demands ( this . emailValid ,  this . passwordValid ,  this . loggingIn ,  this . addedToGraph ) 
77+             . runs ( extent  =>  { 
7578
76-             let  enabled  =  extent . emailValid . value  &&  extent . passwordValid . value  &&  ! extent . loggingIn . value ; 
77-             extent . loginEnabled . update ( enabled ) 
78-             extent . sideEffect ( ( extent )  =>  { 
79-                 loginButtonEnable ( extent . loginEnabled . value ) ; 
80-             } ,  undefined ,  "enable login button" ) ; 
79+                  let  enabled  =  extent . emailValid . value  &&  extent . passwordValid . value  &&  ! extent . loggingIn . value ; 
80+                  extent . loginEnabled . update ( enabled ) 
81+                  extent . sideEffect ( ( extent )  =>  { 
82+                      loginButtonEnable ( extent . loginEnabled . value ) ; 
83+                  } ,  undefined ,  "enable login button" ) ; 
8184
82-         } ) ; 
85+              } ) ; 
8386
87+         this . behavior ( ) 
88+             . supplies ( this . loggingIn ) 
89+             . demands ( this . loginClick ,  this . loginComplete ,  this . addedToGraph ) 
90+             . runs ( extent  =>  { 
8491
85-         this . makeBehavior ( [ this . loginClick ,  this . loginComplete ,  this . addedToGraph ] ,  [ this . loggingIn ] ,  ( extent )  =>  { 
92+                 if  ( extent . loginClick . justUpdated  &&  extent . loginEnabled . traceValue )  { 
93+                     extent . loggingIn . update ( true ) ; 
94+                 }  else  if  ( extent . loginComplete . justUpdated  &&  extent . loggingIn . value )  { 
95+                     extent . loggingIn . update ( false ) ; 
96+                 } 
8697
87-             if  ( extent . loginClick . justUpdated  &&  extent . loginEnabled . traceValue )  { 
88-                 extent . loggingIn . update ( true ) ; 
89-             }  else  if  ( extent . loginComplete . justUpdated  &&  extent . loggingIn . value )  { 
90-                 extent . loggingIn . update ( false ) ; 
91-             } 
98+                 if  ( extent . loggingIn . justUpdatedTo ( true ) )  { 
99+                     extent . sideEffect ( ( extent )  =>  { 
100+                         loginToServer ( extent . email . value ,  extent . password . value ) ; 
101+                     } ,  undefined ,  "login api call" ) ; 
102+                 } 
103+             } ) ; 
92104
93-             if  ( extent . loggingIn . justUpdatedTo ( true ) )  { 
105+         this . behavior ( ) 
106+             . demands ( this . loggingIn ,  this . loginComplete ,  this . addedToGraph ) 
107+             . runs ( extent  =>  { 
94108                extent . sideEffect ( ( extent )  =>  { 
95-                     loginToServer ( extent . email . value ,  extent . password . value ) ; 
96-                 } ,  undefined ,  "login api call" ) ; 
97-             } 
98- 
99-         } ) ; 
100- 
101- 
102-         this . makeBehavior ( [ this . loggingIn ,  this . loginComplete ,  this . addedToGraph ] ,  null ,  ( extent )  =>  { 
103-             extent . sideEffect ( ( extent )  =>  { 
104-                 let  status  =  " " 
105-                 if  ( extent . loggingIn . value )  { 
106-                     status  =  "Logging in..." ; 
107-                 }  else  if  ( extent . loggingIn . justUpdatedTo ( false ) )  { 
108-                     if  ( extent . loginComplete . justUpdated  &&  extent . loginComplete . value )  { 
109-                         status  =  "Login Success" ; 
110-                     }  else  if  ( extent . loginComplete . justUpdated  &&  ! extent . loginComplete . value )  { 
111-                         status  =  "Login Failed" ; 
109+                     let  status  =  " " 
110+                     if  ( extent . loggingIn . value )  { 
111+                         status  =  "Logging in..." ; 
112+                     }  else  if  ( extent . loggingIn . justUpdatedTo ( false ) )  { 
113+                         if  ( extent . loginComplete . justUpdated  &&  extent . loginComplete . value )  { 
114+                             status  =  "Login Success" ; 
115+                         }  else  if  ( extent . loginComplete . justUpdated  &&  ! extent . loginComplete . value )  { 
116+                             status  =  "Login Failed" ; 
117+                         } 
112118                    } 
113-                 } 
114-                 updateLoginStatus ( status ) ; 
115-             } ,  undefined ,  "login status" ) ; 
116-         } ) ; 
117- 
119+                     updateLoginStatus ( status ) ; 
120+                 } ,  undefined ,  "login status" ) ; 
121+             } ) ; 
118122    } 
119123} 
120124
121125let  graph  =  new  bg . Graph ( ) ; 
122126let  loginExtent  =  new  LoginExtent ( graph ) ; 
123- graph . action ( "startup" ,  ( )  =>  { 
124-     loginExtent . addToGraph ( ) 
125- } ) ; 
127+ loginExtent . addToGraphWithAction ( ) ; 
126128
127129document . getElementById ( "email" ) . addEventListener ( "input" ,  ( event )  =>  { 
128130    loginExtent . email . updateWithAction ( event . target . value ) ; 
0 commit comments