Last active
September 8, 2020 14:34
-
-
Save signaes/64402adb59bdb39e88a0e9ab617578ee to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
This file contains hidden or 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
| // Available variables: | |
| // - Machine | |
| // - interpret | |
| // - assign | |
| // - send | |
| // - sendParent | |
| // - spawn | |
| // - raise | |
| // - actions | |
| // - XState (all XState exports) | |
| const defineProgramMachine = Machine({ | |
| id: 'defineProgram', | |
| type: 'parallel', | |
| context: { | |
| workoutToBeRemoved: null, | |
| weekToBeRemoved: null, | |
| selectedEvent: null, | |
| selectedWeek: null, | |
| }, | |
| states: { | |
| desktop: { | |
| initial: 'idle', | |
| states: { | |
| deleted: { | |
| type: 'final', | |
| }, | |
| idle: { | |
| on: { | |
| DEFINE_WORKOUTS: 'define_workouts', | |
| EDIT_EVENT: { | |
| target: 'edit_event', | |
| actions: ['setSelectedEvent'], | |
| }, | |
| REMOVE_WORKOUT: { | |
| target: 'confirm_workout_removal', | |
| actions: ['setWorkoutToBeRemoved'] | |
| }, | |
| REMOVE_WEEK: { | |
| target: 'confirm_week_removal', | |
| actions: ['setWeekToBeRemoved'] | |
| }, | |
| DELETE_PROGRAM: 'confirm_program_deletion', | |
| } | |
| }, | |
| define_workouts: { | |
| on: { | |
| CANCEL: 'idle', | |
| COMMIT: 'idle', | |
| } | |
| }, | |
| edit_event: { | |
| on: { | |
| EDIT_EVENT: { | |
| target: 'edit_event', | |
| actions: ['setSelectedEvent'], | |
| }, | |
| DEFINE_WORKOUTS: 'define_workouts', | |
| BACK: { | |
| target: 'idle', | |
| actions: ['unsetSelectedEvent'], | |
| }, | |
| CONFIRM: 'confirm_day', | |
| } | |
| }, | |
| confirm_program_deletion: { | |
| on: { | |
| CANCEL: { | |
| target: 'idle', | |
| }, | |
| COMMIT: { | |
| target: 'deleted', | |
| }, | |
| } | |
| }, | |
| confirm_day: { | |
| on: { | |
| CANCEL: { | |
| target: 'idle', | |
| actions: ['unsetSelectedEvent'], | |
| }, | |
| COMMIT: { | |
| target: 'idle', | |
| actions: ['unsetSelectedEvent'], | |
| }, | |
| } | |
| }, | |
| confirm_workout_removal: { | |
| on: { | |
| CANCEL: { | |
| target: 'idle', | |
| actions: ['unsetWorkoutToBeRemoved'], | |
| }, | |
| COMMIT: { | |
| target: 'idle', | |
| actions: ['unsetWorkoutToBeRemoved'], | |
| } | |
| } | |
| }, | |
| confirm_week_removal: { | |
| on: { | |
| CANCEL: { | |
| target: 'idle', | |
| actions: ['unsetWeekToBeRemoved'], | |
| }, | |
| COMMIT: { | |
| target: 'idle', | |
| actions: ['unsetWeekToBeRemoved'], | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| mobile: { | |
| initial: 'idle', | |
| states: { | |
| deleted: { | |
| type: 'final', | |
| }, | |
| idle: { | |
| on: { | |
| DEFINE_WORKOUTS: 'define_workouts', | |
| WEEKLY_VIEW: { | |
| target: 'weekly_view', | |
| actions: ['setSelectedWeek'], | |
| }, | |
| EDIT_EVENT: { | |
| target: 'weekly_view.edit_event', | |
| actions: ['setSelectedEvent'], | |
| }, | |
| REMOVE_WORKOUT: { | |
| target: 'weekly_view.confirm_workout_removal', | |
| actions: ['setWorkoutToBeRemoved'] | |
| }, | |
| REMOVE_WEEK: { | |
| target: 'confirm_week_removal', | |
| actions: ['setWeekToBeRemoved'] | |
| }, | |
| DELETE_PROGRAM: 'confirm_program_deletion', | |
| } | |
| }, | |
| confirm_week_removal: { | |
| on: { | |
| CANCEL: { | |
| target: 'idle', | |
| actions: ['unsetWeekToBeRemoved'], | |
| }, | |
| COMMIT: { | |
| target: 'idle', | |
| actions: ['unsetWeekToBeRemoved'], | |
| } | |
| } | |
| }, | |
| confirm_program_deletion: { | |
| on: { | |
| CANCEL: { | |
| target: 'idle', | |
| }, | |
| COMMIT: { | |
| target: 'deleted', | |
| }, | |
| } | |
| }, | |
| define_workouts: { | |
| on: { | |
| CANCEL: 'idle', | |
| COMMIT: 'idle', | |
| } | |
| }, | |
| weekly_view: { | |
| initial: 'idle', | |
| states: { | |
| idle: { | |
| on: { | |
| BACK: { | |
| target: '#defineProgram.mobile.idle', | |
| actions: ['unsetSelectedWeek'], | |
| }, | |
| DEFINE_WORKOUTS: 'define_workouts', | |
| EDIT_EVENT: { | |
| target: 'edit_event', | |
| actions: ['setSelectedEvent'], | |
| }, | |
| REMOVE_WORKOUT: { | |
| target: 'confirm_workout_removal', | |
| actions: ['setWorkoutToBeRemoved'] | |
| }, | |
| } | |
| }, | |
| define_workouts: { | |
| on: { | |
| CANCEL: 'idle', | |
| COMMIT: 'idle', | |
| } | |
| }, | |
| edit_event: { | |
| on: { | |
| BACK: { | |
| target: 'idle', | |
| actions: ['unsetSelectedEvent'], | |
| }, | |
| CONFIRM: 'confirm_day', | |
| } | |
| }, | |
| confirm_day: { | |
| on: { | |
| CANCEL: { | |
| target: 'idle', | |
| actions: ['unsetSelectedEvent'], | |
| }, | |
| COMMIT: { | |
| target: 'idle', | |
| actions: ['unsetSelectedEvent'], | |
| }, | |
| } | |
| }, | |
| confirm_workout_removal: { | |
| on: { | |
| CANCEL: { | |
| target: 'idle', | |
| actions: ['unsetWorkoutToBeRemoved'], | |
| }, | |
| COMMIT: { | |
| target: 'idle', | |
| actions: ['unsetWorkoutToBeRemoved'], | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| actions: { | |
| setSelectedEvent: assign({ | |
| selectedEvent: (_, { selectedEvent }) => selectedEvent, | |
| }), | |
| unsetSelectedEvent: assign({ | |
| selectedEvent: () => null, | |
| }), | |
| setSelectedWeek: assign({ | |
| selectedWeek: (_, { week }) => week, | |
| }), | |
| unsetSelectedWeek: assign({ | |
| selectedWeek: () => null, | |
| }), | |
| setWorkoutToBeRemoved: assign({ | |
| workoutToBeRemoved: (_, { workoutToBeRemoved }) => workoutToBeRemoved, | |
| }), | |
| unsetWorkoutToBeRemoved: assign({ | |
| workoutToBeRemoved: () => null, | |
| }), | |
| setWeekToBeRemoved: assign({ | |
| weekToBeRemoved: (_, { weekToBeRemoved }) => weekToBeRemoved, | |
| }), | |
| unsetWeekToBeRemoved: assign({ | |
| weekToBeRemoved: () => null, | |
| }), | |
| } | |
| }) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment