// Copyright (c) 2019 Gonzalo Müller Bravo. import React, { createContext } from 'react' import ReducerContext, { ReducerContextInterface, useReducerDispatcher, useReducerState, useReducerContext } from '../../../main/js/ReducerContext' import type { Context, Element, Node } from 'react' import type { ReducerContextDefaultValue, Dispatcher } from '../../../main/js/ReducerContext' interface TestState { lastAction: number; } const initialState: TestState = { lastAction: 0 } function reduce(prevState: TestState, action: string): TestState { switch (action) { case 'ACTION1': return { lastAction: 1 } default: return prevState } } const testReducerContext: Context> = createContext(null) function TestReducerContext({ children }: {children: Element}): Node { return ( {children} ) } function TestReducerMainHook(): Node { const { state, dispatch }: ReducerContextInterface = useReducerContext(testReducerContext) return ( ) } function TestReducerStateHook(): Node { const theState: TestState = useReducerState(testReducerContext) return ( ) } function TestReducerDispatcherHook(): Node { const theDispatcher: Dispatcher = useReducerDispatcher(testReducerContext) return ( ) }