// src/hooks/useWorkers.js import { useRef, useEffect } from 'react'; import * as Comlink from 'comlink'; export function useWorkers() { const workersRef = useRef({}); useEffect(() => { workersRef.current.tileLoader = new Worker(new URL('../workers/tileLoader.worker.js', import.meta.url)); workersRef.current.heatmapGen = new Worker(new URL('../workers/heatmapGenerator.worker.js', import.meta.url)); workersRef.current.renderer = new Worker(new URL('../workers/renderer.worker.js', import.meta.url)); Comlink.wrap(workersRef.current.tileLoader); // for async calls return () => { Object.values(workersRef.current).forEach(w => w.terminate()); }; }, []); return workersRef.current; }