import { createContext, FunctionComponent } from 'preact'; import { InputSocket } from './dataflow.ts'; export type SocketHandler = (nodeId: number, socket: string, event: MouseEvent) => void; export interface SocketHandlers { onOutMouseDown?: SocketHandler; onOutMouseUp?: SocketHandler; onInMouseDown?: SocketHandler; onInMouseUp?: SocketHandler; } export interface NodeComponentProps { id: number; x: Signal; y: Signal; inputs: { [Property in keyof I]: InputSocket }; } export type NodeComponent = FunctionComponent>; export interface NodeInfo { component: NodeComponent; func: (inputs: I) => O; inputs: I; } export const SocketHandlers = createContext({}); export const NodeId = createContext(0);