import { createElement, FunctionComponent } from 'react'; import { Actions, DakpanHoc, DakpanHook } from './types'; export function createHoc>(hook: DakpanHook): DakpanHoc { return (map) => (component) => { const hoc: FunctionComponent = (props) => { const [state, actions] = hook(); return createElement(component, { ...props, ...map(state, actions) }); }; hoc.displayName = `WithDakpan(${component.displayName || component.name || 'Component'})`; return hoc; }; }