Skip to content

Instantly share code, notes, and snippets.

@robertpenner
Last active October 7, 2021 19:53
Show Gist options
  • Save robertpenner/bbe237581bb79c372c33420074cd671d to your computer and use it in GitHub Desktop.
Save robertpenner/bbe237581bb79c372c33420074cd671d to your computer and use it in GitHub Desktop.
Generated by XState Viz: https://xstate.js.org/viz
const machine = Machine({
id: "Page transition",
type: "parallel",
states: {
"current page": {
initial: "visible",
states: {
visible: {
on: {
"LOAD NEXT PAGE": "fading out",
},
},
"fading out": {
on: {
},
after: {
"FADE TIME": {
target: "hidden",
actions: send("SHOW SPINNER"),
},
},
},
hidden: {
entry: [send("SHOW SPINNER"), send("DONE FADING OUT")],
},
},
},
"next page": {
id: "#next page",
initial: "waiting",
states: {
waiting: {
on: {
"LOAD NEXT PAGE": "loading",
},
},
loading: {
initial: 'pending fade out',
states: {
'pending fade out': {
on: {
"DONE FADING OUT": "done fade out",
"DONE LOADING": "#loaded",
},
},
'done fade out': {
on: {
"DONE LOADING": '#fading in'
}
},
},
// on: {
// "DONE LOADING": "loaded",
// },
},
loaded: {
id: 'loaded',
on: {
"DONE FADING OUT": "fading in",
},
},
// TODO: wait for spinner 1 second
"fading in": {
id: 'fading in',
entry: [send("HIDE SPINNER")],
after: {
// "FADE TIME": { target: ["visible", "#spinner.hidden"] }
"FADE TIME": { target: ["visible"] },
},
},
visible: {
type: "final",
},
},
},
spinner: {
id: "spinner",
initial: "hidden",
states: {
hidden: {
on: {
"SHOW SPINNER": "visible",
},
},
visible: {
on: {
"HIDE SPINNER": "hidden",
},
},
},
},
},
// on: {
// "DONE LOADING": {},
// },
},
{
delays: {
"FADE TIME": 2000,
},
}
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment