Skip to content

Instantly share code, notes, and snippets.

View ShMcK's full-sized avatar

Shawn McKay ShMcK

View GitHub Profile
@ShMcK
ShMcK / xstateful-react-render-prop.js
Created July 20, 2018 04:12
xstateful-react-render-prop
import AlarmMachine from './statefulAlarmMachine'
const Clock = () => (
<AlarmMachine
render={({ extstate, setextstate }) => (
<TimeDisplay time={extstate.time} />
)}
/>
)
@ShMcK
ShMcK / xstateful-react-cond.js
Created July 20, 2018 04:10
xstateful-react-cond
import AlarmMachine from './statefulAlarmMachine'
const Ringing = () => (
<AlarmMachine cond={({ state, exstate )} => (
state === 'Ringing' && exstate.ringCount < 5
)}>
<PlayRinging />
</AlarmMachine>
)
@ShMcK
ShMcK / xstateful-reducer.js
Created July 20, 2018 04:05
xstateful-reducer
import { createStatefulMachine, Reducer } from '@avaragado/xstateful'
import alarmMachine from './alarmMachine'
const initialState = {
alarmTrigger: +new Date() + 10000
}
const reducer = Reducer.map({
alarmSet: Reducer.update(({ action, extstate }) => ({
alarmTrigger: action.time,
@ShMcK
ShMcK / xstateful-react-activity.js
Created July 20, 2018 04:01
xstateful-react-activity
import AlarmMachine from './statefulAlarmMachine'
const AlarmClock = () => (
<>
<AlarmMachine.Activity is='startRing'>
<Ringing />
</AlarmMachine.Activity>
<Clock>
</>
)
@ShMcK
ShMcK / xstateful-react-provider
Created July 20, 2018 04:00
xstateful-react-provider
<AlarmMachine.Provider>
<>
<AlarmClock />
<AlarmClock />
<>
</AlarmMachine.Provider>
@ShMcK
ShMcK / xstatefull-react-setup.js
Created July 20, 2018 03:58
xstateful-react-setup
import { createReactMachine } from '@avaragado/xstateful-react'
import alarm from './statefulAlarmMachine'
const AlarmMachine = createReactMachine(alarm)
export default AlarmMachine
@ShMcK
ShMcK / xstateful-setup.js
Created July 20, 2018 03:55
xstateful setup
import { Machine } from 'xstate'
import { createStatefulMachine } from '@avaragado/xstateful'
import alarmMachine from './alarmMachine'
const alarm = createStatefulMachine({
machine: alarmMachine
})
alarm.init()
@ShMcK
ShMcK / state-from-actions.js
Created July 20, 2018 03:52
state-from-actions
import { withStatechart } from 'react-automata'
import alarmMachine from './alarmMachine'
class AlarmClock extends React.Component {
state = {
ringing: false
}
startRing = () => {
this.setState({ ringing: true })
}
@ShMcK
ShMcK / action-as-context.js
Last active July 23, 2018 14:40
action-as-context
import { Action, withStatechart } from 'react-automata'
import alarmMachine from './alarmMachine'
const AlarmClock = () => (
<>
<Action show='ring'>
<Ringing />
</Action>
<Clock />
</>
@ShMcK
ShMcK / state-as-context-render-prop.js
Last active July 23, 2018 14:43
state-as-context-render-prop
import { State, withStatechart } from 'react-automata'
import alarmMachine from './alarmMachine'
const AlarmClock = () => (
<State
value='Ringing'
render={(ringing) => (
<Clock ringing={ringing} />
)}
/>