summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/NodeEditor.tsx13
-rw-r--r--src/nodes/Fourier.tsx6
-rw-r--r--src/nodes/Intersperse.tsx6
-rw-r--r--src/nodes/Linspace.tsx2
-rw-r--r--src/nodes/Math.tsx12
-rw-r--r--src/nodes/Plot.tsx3
6 files changed, 27 insertions, 15 deletions
diff --git a/src/NodeEditor.tsx b/src/NodeEditor.tsx
index 83d81bd..0340a49 100644
--- a/src/NodeEditor.tsx
+++ b/src/NodeEditor.tsx
@@ -1,4 +1,4 @@
-import { useMemo, useRef } from 'preact/hooks';
+import { useEffect, useMemo, useRef } from 'preact/hooks';
import { signal, computed, batch, useSignal, useComputed, Signal } from '@preact/signals';
import { nodeRegistry } from './nodes';
import { SocketHandlers, SocketHandler, NodeInfo } from './node.tsx';
@@ -188,6 +188,17 @@ export const NodeEditor = () => {
onInMouseUp,
};
+ const onKeyDown = (event: KeyboardEvent) => {
+ if (event.code === 'KeyX') {
+ alert('X');
+ }
+ };
+
+ useEffect(() => {
+ document.addEventListener('keydown', onKeyDown);
+ return () => document.removeEventListener('keydown', onKeyDown);
+ }, []);
+
const onBgMouseDown = () => {
const onMouseMove = (event: MouseEvent) => batch(() => {
offsetX.value += event.movementX;
diff --git a/src/nodes/Fourier.tsx b/src/nodes/Fourier.tsx
index 3763402..f95f26d 100644
--- a/src/nodes/Fourier.tsx
+++ b/src/nodes/Fourier.tsx
@@ -2,11 +2,11 @@ import { NodeShell, InputArray, OutputNumber, NodeComponentProps, NodeInfo } fro
import { fft } from '../wasm.ts';
export interface FourierInputs {
- data: Float64Array,
+ data: Float32Array,
}
export interface FourierOutputs {
- data: Float64Array,
+ data: Float32Array,
}
export const Fourier = ({ id, x, y, inputs }: NodeComponentProps<FourierInputs>) => {
@@ -21,5 +21,5 @@ export const Fourier = ({ id, x, y, inputs }: NodeComponentProps<FourierInputs>)
export const FourierNode: NodeInfo<FourierInputs, FourierOutputs> = {
component: Fourier,
func: ({ data }) => ({ data: fft(data) }),
- inputs: { data: new Float64Array(0) },
+ inputs: { data: new Float32Array(0) },
}; \ No newline at end of file
diff --git a/src/nodes/Intersperse.tsx b/src/nodes/Intersperse.tsx
index 7487a84..2ef2a03 100644
--- a/src/nodes/Intersperse.tsx
+++ b/src/nodes/Intersperse.tsx
@@ -2,12 +2,12 @@ import { NodeShell, InputArray, OutputNumber, NodeComponentProps, NodeInfo } fro
import { intersperse } from '../wasm.ts';
export interface IntersperseInputs {
- a: Float64Array,
- b: Float64Array,
+ a: Float32Array,
+ b: Float32Array,
}
export interface IntersperseOutputs {
- out: Float64Array,
+ out: Float32Array,
}
export const Intersperse = ({ id, x, y, inputs }: NodeComponentProps<IntersperseInputs>) => {
diff --git a/src/nodes/Linspace.tsx b/src/nodes/Linspace.tsx
index 16d8ba6..df1dbe6 100644
--- a/src/nodes/Linspace.tsx
+++ b/src/nodes/Linspace.tsx
@@ -8,7 +8,7 @@ export interface LinspaceInputs {
}
export interface LinspaceOutputs {
- data: Float64Array,
+ data: Float32Array,
}
export const Linspace = ({ id, x, y, inputs }: NodeComponentProps<LinspaceInputs>) => {
diff --git a/src/nodes/Math.tsx b/src/nodes/Math.tsx
index e513538..ec11277 100644
--- a/src/nodes/Math.tsx
+++ b/src/nodes/Math.tsx
@@ -50,12 +50,12 @@ export type MathOp = typeof MathOp;
export interface MathInputs {
op: MathOp,
- a: number | TypedArray,
- b: number | TypedArray,
+ a: number | Float32Array,
+ b: number | Float32Array,
}
export interface MathOutputs {
- out: boolean | number | TypedArray,
+ out: boolean | number | Float32Array,
}
export const MathC = ({ id, x, y, inputs }: NodeComponentProps<MathInputs>) => {
@@ -127,7 +127,7 @@ const mathFunc = ({ op, a, b }: MathInputs): MathOutputs => {
if (typeof b === 'number') {
return { out: doMathOp(op, a, b) };
} else {
- const out = new Float64Array(b.length);
+ const out = new Float32Array(b.length);
for (let i = 0; i < out.length; i++) {
out[i] = doMathOp(op, a, b[i]);
}
@@ -135,13 +135,13 @@ const mathFunc = ({ op, a, b }: MathInputs): MathOutputs => {
}
} else {
if (typeof b === 'number') {
- const out = new Float64Array(a.length);
+ const out = new Float32Array(a.length);
for (let i = 0; i < out.length; i++) {
out[i] = doMathOp(op, a[i], b);
}
return { out };
} else {
- const out = new Float64Array(Math.min(a.length, b.length));
+ const out = new Float32Array(Math.min(a.length, b.length));
for (let i = 0; i < out.length; i++) {
out[i] = doMathOp(op, a[i], b[i]);
}
diff --git a/src/nodes/Plot.tsx b/src/nodes/Plot.tsx
index dca3219..eaba592 100644
--- a/src/nodes/Plot.tsx
+++ b/src/nodes/Plot.tsx
@@ -13,7 +13,8 @@ export const Plot = ({ id, x, y, inputs }: NodeComponentProps<PlotInputs>) => {
const dy = 0;
let path = '';
if (data !== null && data.length > 3) {
- for (let i = 0; i < data.length - data.length % 2; i += 2) {
+ for (let i = 0; i < data.length; i += Math.max(1, Math.floor(data.length / 1000))) {
+ if (i >= data.length) break;
path += (i ? 'L' : 'M') + (data[i] * scale + dx) + ' ' + (data[i+1] * scale + dy);
}
}