summaryrefslogtreecommitdiff
path: root/src/node.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/node.ts')
-rw-r--r--src/node.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/node.ts b/src/node.ts
new file mode 100644
index 0000000..1f4d5eb
--- /dev/null
+++ b/src/node.ts
@@ -0,0 +1,27 @@
+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<I extends {}> {
+ id: number;
+ x: Signal<number>;
+ y: Signal<number>;
+ inputs: { [Property in keyof I]: InputSocket<I[Property]> };
+}
+export type NodeComponent<I extends {}> = FunctionComponent<NodeComponentProps<I>>;
+
+export interface NodeInfo<I extends {}, O extends {}> {
+ component: NodeComponent<I>;
+ func: (inputs: I) => O;
+ inputs: I;
+}
+
+export const SocketHandlers = createContext<SocketHandlers>({});
+export const NodeId = createContext<number>(0);