Created
July 17, 2020 13:35
-
-
Save n8io/a20709703fec28327b73a7bbddc9555c to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const State = { | |
START: 'START', | |
EMAIL_INPUT_FOCUS: 'EMAIL_INPUT_FOCUS', | |
EMAIL_INPUT_INVALID: 'EMAIL_INPUT_INVALID', | |
EMAIL_INPUT_VALID: 'EMAIL_INPUT_VALID', | |
FORGOT_PASSWORD_LINK_FOCUS: 'FORGOT_PASSWORD_LINK_FOCUS', | |
FORGOT_PASSWORD_LINK_REDIRECT: 'FORGOT_PASSWORD_LINK_REDIRECT', | |
PASSWORD_INPUT_FOCUS: 'PASSWORD_INPUT_FOCUS', | |
PASSWORD_INPUT_INVALID: 'PASSWORD_INPUT_INVALID', | |
PASSWORD_INPUT_VALID: 'PASSWORD_INPUT_VALID', | |
LOG_IN_AWAITING_RESPONSE: 'LOG_IN_AWAITING_RESPONSE', | |
LOG_IN_BUTTON_FOCUS: 'LOG_IN_BUTTON_FOCUS', | |
LOG_IN_FAILURE: 'LOG_IN_FAILURE', | |
LOG_IN_SUCCESS_REDIRECT: 'LOG_IN_SUCCESS_REDIRECT', | |
SIGN_UP_LINK_FOCUS: 'SIGN_UP_LINK_FOCUS', | |
SIGN_UP_LINK_REDIRECT: 'SIGN_UP_LINK_REDIRECT', | |
}; | |
const Event = { | |
EMAIL_INPUT_BLURRED: 'EMAIL_INPUT_BLURRED', | |
EMAIL_INPUT_FOCUSED: 'EMAIL_INPUT_FOCUSED', | |
EMAIL_INPUT_TABBED: 'EMAIL_INPUT_TABBED', | |
EMAIL_INPUT_TYPED_INVALID: 'EMAIL_INPUT_TYPED_INVALID', | |
EMAIL_INPUT_TYPED_VALID: 'EMAIL_INPUT_TYPED_VALID', | |
FORGOT_PASSWORD_LINK_BLURRED: 'FORGOT_PASSWORD_LINK_BLURRED', | |
FORGOT_PASSWORD_LINK_PRESSED: 'FORGOT_PASSWORD_LINK_PRESSED', | |
FORGOT_PASSWORD_LINK_FOCUSED: 'FORGOT_PASSWORD_LINK_FOCUSED', | |
FORGOT_PASSWORD_LINK_TABBED: 'FORGOT_PASSWORD_LINK_TABBED', | |
LOG_IN_RESPONSE_FAILED: 'LOG_IN_RESPONSE_FAILED', | |
LOG_IN_RESPONSE_SUCCESSFUL: 'LOG_IN_RESPONSE_SUCCESSFUL', | |
LOG_IN_SUBMITTED: 'LOG_IN_SUBMITTED', | |
LOG_IN_BUTTON_BLURRED: 'LOG_IN_BUTTON_BLURRED', | |
LOG_IN_BUTTON_PRESSED: 'LOG_IN_BUTTON_PRESSED', | |
LOG_IN_BUTTON_FOCUSED: 'LOG_IN_BUTTON_FOCUSED', | |
LOG_IN_BUTTON_TABBED: 'LOG_IN_BUTTON_TABBED', | |
PASSWORD_INPUT_BLURRED: 'PASSWORD_INPUT_BLURRED', | |
PASSWORD_INPUT_FOCUSED: 'PASSWORD_INPUT_FOCUSED', | |
PASSWORD_INPUT_TABBED: 'PASSWORD_INPUT_TABBED', | |
PASSWORD_INPUT_TYPED_INVALID: 'PASSWORD_INPUT_TYPED_INVALID', | |
PASSWORD_INPUT_TYPED_VALID: 'PASSWORD_INPUT_TYPED_VALID', | |
SIGN_UP_LINK_BLURRED: 'SIGN_UP_LINK_BLURRED', | |
SIGN_UP_LINK_PRESSED: 'SIGN_UP_LINK_PRESSED', | |
SIGN_UP_LINK_FOCUSED: 'SIGN_UP_LINK_FOCUSED', | |
SIGN_UP_LINK_TABBED: 'SIGN_UP_LINK_TABBED', | |
}; | |
const fetchMachine = Machine({ | |
initial: State.START, | |
context: { userExists: true }, | |
states: { | |
[State.START]: { | |
on: { | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.EMAIL_INPUT_FOCUS]: { | |
on: { | |
[Event.EMAIL_INPUT_BLURRED]: State.START, | |
[Event.EMAIL_INPUT_TABBED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.EMAIL_INPUT_TYPED_INVALID]: State.EMAIL_INPUT_INVALID, | |
[Event.EMAIL_INPUT_TYPED_VALID]: State.EMAIL_INPUT_VALID, | |
[Event.LOG_IN_SUBMITTED]: State.LOG_IN_AWAITING_RESPONSE, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.EMAIL_INPUT_INVALID]: { | |
on: { | |
[Event.EMAIL_INPUT_BLURRED]: State.START, | |
[Event.EMAIL_INPUT_TABBED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.EMAIL_INPUT_TYPED_VALID]: State.EMAIL_INPUT_VALID, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.EMAIL_INPUT_VALID]: { | |
on: { | |
[Event.EMAIL_INPUT_BLURRED]: State.START, | |
[Event.EMAIL_INPUT_TABBED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.LOG_IN_SUBMITTED]: State.LOG_IN_AWAITING_RESPONSE, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.PASSWORD_INPUT_FOCUS]: { | |
on: { | |
[Event.LOG_IN_SUBMITTED]: State.LOG_IN_AWAITING_RESPONSE, | |
[Event.PASSWORD_INPUT_BLURRED]: State.START, | |
[Event.PASSWORD_INPUT_TABBED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.PASSWORD_INPUT_TYPED_INVALID]: State.PASSWORD_INPUT_INVALID, | |
[Event.PASSWORD_INPUT_TYPED_VALID]: State.PASSWORD_INPUT_VALID, | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.PASSWORD_INPUT_INVALID]: { | |
on: { | |
[Event.PASSWORD_INPUT_BLURRED]: State.START, | |
[Event.PASSWORD_INPUT_TABBED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.PASSWORD_INPUT_TYPED_VALID]: State.PASSWORD_INPUT_VALID, | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.PASSWORD_INPUT_VALID]: { | |
on: { | |
[Event.PASSWORD_INPUT_BLURRED]: State.START, | |
[Event.PASSWORD_INPUT_TABBED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.LOG_IN_SUBMITTED]: State.LOG_IN_AWAITING_RESPONSE, | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.LOG_IN_BUTTON_FOCUS]: { | |
on: { | |
[Event.LOG_IN_BUTTON_BLURRED]: State.START, | |
[Event.LOG_IN_BUTTON_TABBED]: State.SIGN_UP_LINK_FOCUS, | |
[Event.LOG_IN_BUTTON_PRESSED]: State.LOG_IN_AWAITING_RESPONSE, | |
[Event.LOG_IN_SUBMITTED]: State.LOG_IN_AWAITING_RESPONSE, | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.LOG_IN_AWAITING_RESPONSE]: { | |
on: { | |
[Event.LOG_IN_RESPONSE_SUCCESSFUL]: State.LOG_IN_SUCCESS_REDIRECT, | |
[Event.LOG_IN_RESPONSE_FAILED]: State.LOG_IN_FAILURE, | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.SIGN_UP_LINK_FOCUS]: { | |
on: { | |
[Event.SIGN_UP_LINK_BLURRED]: State.START, | |
[Event.SIGN_UP_LINK_TABBED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_PRESSED]: State.SIGN_UP_LINK_REDIRECT, | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
}, | |
}, | |
[State.FORGOT_PASSWORD_LINK_FOCUS]: { | |
on: { | |
[Event.FORGOT_PASSWORD_LINK_BLURRED]: State.START, | |
[Event.FORGOT_PASSWORD_LINK_PRESSED]: | |
State.FORGOT_PASSWORD_LINK_REDIRECT, | |
[Event.FORGOT_PASSWORD_LINK_TABBED]: State.EMAIL_INPUT_FOCUS, | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
}, | |
[State.LOG_IN_FAILURE]: { | |
[Event.EMAIL_INPUT_FOCUSED]: State.EMAIL_INPUT_FOCUS, | |
[Event.PASSWORD_INPUT_FOCUSED]: State.PASSWORD_INPUT_FOCUS, | |
[Event.LOG_IN_BUTTON_FOCUSED]: State.LOG_IN_BUTTON_FOCUS, | |
[Event.FORGOT_PASSWORD_LINK_FOCUSED]: State.FORGOT_PASSWORD_LINK_FOCUS, | |
[Event.SIGN_UP_LINK_FOCUSED]: State.SIGN_UP_LINK_FOCUS, | |
}, | |
[State.LOG_IN_SUCCESS_REDIRECT]: {}, | |
[State.FORGOT_PASSWORD_LINK_REDIRECT]: {}, | |
[State.SIGN_UP_LINK_REDIRECT]: {}, | |
}, | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment