@@ -2,38 +2,33 @@ import * as React from 'react'
22import * as CR from 'typings'
33import { useMachine } from '@xstate/react'
44import machine from '../../services/state/machine'
5- import Debugger from '../Debugger'
5+
66import Route from './Route'
7- import stateToString from './stateToString'
7+ import debuggerWrapper from '../Debugger/debuggerWrapper'
8+ import messageBusReceiver from '../../services/channel/receiver'
89
910interface Props {
1011 children : any
1112}
1213
13- const wrapDebugger = ( element : React . ReactElement , state : any ) => {
14- if ( process . env . REACT_APP_DEBUG ) {
15- return (
16- < Debugger state = { stateToString ( state . value ) } >
17- { element }
18- </ Debugger >
19- )
20- }
21- return element
22- }
23-
2414interface CloneElementProps {
2515 send ( action : CR . Action ) : void
2616}
2717
2818// router finds first state match of <Route path='' />
2919const Router = ( { children } : Props ) : React . ReactElement < CloneElementProps > | null => {
30- const [ state , send ] = useMachine ( machine )
20+ const [ state , send ] = useMachine ( machine , {
21+ logger : console . log . bind ( 'XSTATE:' )
22+ } )
23+
24+ // event bus listener
25+ React . useEffect ( messageBusReceiver , [ ] )
3126
3227 const childArray = React . Children . toArray ( children )
3328 for ( const child of childArray ) {
3429 if ( state . matches ( child . props . path ) ) {
3530 const element = React . cloneElement < CloneElementProps > ( child . props . children , { send } )
36- return wrapDebugger ( element , state )
31+ return debuggerWrapper ( element , state )
3732 }
3833 }
3934 console . warn ( `No Route matches for ${ JSON . stringify ( state ) } ` )
0 commit comments