UNPKG

remix-nlux

Version:

Remix IDE NLUX integration. Remix IDE is the leading IDE for building and deploying smart contracts on Ethereum. NLUX is a JavaScript and React library for building conversational AI experiences.

31 lines (28 loc) 1.04 kB
import {AiChatProps} from '../../types/aiChat/props'; import {ControllerContext, ControllerContextProps} from '../../types/controllerContext'; import {EventName, EventsMap} from '../../types/event'; export const createControllerContext = <AiMsg>( props: ControllerContextProps<AiMsg>, getAiChatProps: () => AiChatProps<AiMsg>, emitEvent: <EventToEmit extends EventName>( event: EventToEmit, ...params: Parameters<EventsMap<AiMsg>[EventToEmit]> ) => void, ): ControllerContext<AiMsg> => { const context: ControllerContext<AiMsg> = { ...props, update: (newProps: Partial<ControllerContextProps<AiMsg>>) => { Object.assign(context, newProps); }, emit: <EventToEmit extends EventName>( eventName: EventToEmit, ...params: Parameters<EventsMap<AiMsg>[EventToEmit]> ) => { emitEvent(eventName, ...params); }, get aiChatProps() { return getAiChatProps(); }, }; return context; };