fsm = new StateMachine({
init: "solid",
transitions: [
{ name: "melt", from: "solid", to: "liquid" },
{ name: "freeze", from: "liquid", to: "solid" },
{ name: "vaporize", from: "liquid", to: "gas" },
{ name: "condense", from: "gas", to: "liquid" }
],
methods: {
onMelt: function () {
viewof output.value = "I melted";
},
onFreeze: function () {
viewof output.value = "I froze";
},
onVaporize: function () {
viewof output.value = "I vaporized";
},
onCondense: function () {
viewof output.value = "I condensed";
},
onAfterTransition: () => viewof output.dispatchEvent(new Event("input"))
}
})