diff options
| author | Sam Nystrom <sam@samnystrom.dev> | 2024-03-14 00:10:12 +0000 |
|---|---|---|
| committer | Sam Nystrom <sam@samnystrom.dev> | 2024-03-13 20:17:07 -0400 |
| commit | 71abdb2ee3f5bdb1e029c9f4266f4b797fa960f9 (patch) | |
| tree | 2c044cb3475cd0b8584648dc1d170e1c55c95855 /src/NodeEditor.tsx | |
| parent | b4d7b00dd1add8e1cffb7771539fa6c419b64846 (diff) | |
fix: memoize stuff
Diffstat (limited to 'src/NodeEditor.tsx')
| -rw-r--r-- | src/NodeEditor.tsx | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/src/NodeEditor.tsx b/src/NodeEditor.tsx index 435aec4..a9e7c83 100644 --- a/src/NodeEditor.tsx +++ b/src/NodeEditor.tsx @@ -1,4 +1,4 @@ -import { useContext, useEffect, useMemo, useRef } from 'preact/hooks'; +import { useContext, useEffect, useMemo, useCallback, useRef } from 'preact/hooks'; import { signal, computed, batch, useSignal, useComputed, Signal } from '@preact/signals'; import { Pb } from './context.ts'; import { SocketHandlers } from './node.ts'; @@ -80,7 +80,7 @@ const NodeEditor = ({ user, project }) => { nodes.value = nodes.value.concat(instances); }, []); - const onOutMouseDown: SocketHandler = (nodeId, socket, event) => { + const onOutMouseDown: SocketHandler = useCallback((nodeId, socket, event) => { event.stopPropagation(); const svgRect = svgRef.current?.getBoundingClientRect(); const svgX = svgRect?.x ?? 0; @@ -117,9 +117,9 @@ const NodeEditor = ({ user, project }) => { window.addEventListener('mouseup', onMouseUp); currentLink.value = {from: {nodeId, socket}, fromX, fromY, toX, toY}; - }; + }, []); - const onInMouseDown: SocketHandler = (nodeId, socket, event) => { + const onInMouseDown: SocketHandler = useCallback((nodeId, socket, event) => { event.stopPropagation(); const i = links.value.findIndex(l => l.to.nodeId === nodeId && l.to.socket === socket); if (i == -1) return; @@ -154,9 +154,9 @@ const NodeEditor = ({ user, project }) => { window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', onMouseUp); - }; + }, []); - const onInMouseUp: SocketHandler = (nodeId, socket, event) => { + const onInMouseUp: SocketHandler = useCallback((nodeId, socket, event) => { if (!currentLink.value) return; event.stopPropagation(); const fromNode = nodes.value.find(x => x.id === currentLink.value!.from.nodeId); @@ -184,7 +184,7 @@ const NodeEditor = ({ user, project }) => { ]; currentLink.value = null; }); - }; + }, []); const socketHandlers = { onOutMouseDown, @@ -192,18 +192,18 @@ const NodeEditor = ({ user, project }) => { onInMouseUp, }; - const onKeyDown = (event: KeyboardEvent) => { + const onKeyDown = useCallback((event: KeyboardEvent) => { if (event.code === 'KeyX') { alert('X'); } - }; + }, []); useEffect(() => { document.addEventListener('keydown', onKeyDown); return () => document.removeEventListener('keydown', onKeyDown); }, []); - const onBgMouseDown = () => { + const onBgMouseDown = useCallback(() => { const onMouseMove = (event: MouseEvent) => batch(() => { offsetX.value += event.movementX; offsetY.value += event.movementY; @@ -216,18 +216,18 @@ const NodeEditor = ({ user, project }) => { window.addEventListener('mousemove', onMouseMove); window.addEventListener('mouseup', onMouseUp); - }; + }, []); - const onBgWheel = (event: WheelEvent) => batch(() => { + const onBgWheel = useCallback((event: WheelEvent) => batch(() => { const delta = event.deltaY * 0.001; offsetX.value -= (event.clientX - offsetX.value) * delta; offsetY.value -= (event.clientY - offsetY.value) * delta; scale.value *= 1 + delta; - }); + }), []); - const addNode = (node: NodeInfo) => { + const addNode = useCallback((node: NodeInfo) => { nodes.value = nodes.value.concat(instantiateNode(100, 100, node)); - }; + }, []); return ( <div class="__NodeEditor"> |
