import { createContext } from 'react'; import { createHoc } from './createHoc'; import { createHook } from './createHook'; import { createProvider } from './createProvider'; import { Actions, Dakpan, DakpanContext, InitialState } from './types'; export function createDakpan(): >(actions: A) => Dakpan; export function createDakpan( initialState: InitialState ): >(actions: A) => Dakpan; export function createDakpan(initialState?: InitialState) { return >(actions: A): Dakpan => { const context = createContext>(undefined); const hook = createHook(context); const state = initialState instanceof Function ? initialState() : initialState; return [ createProvider(context, actions, state), hook, createHoc(hook) ]; }; }