mirror of
https://github.com/DustinBrett/daedalOS.git
synced 2025-12-06 12:20:20 +01:00
22 lines
607 B
TypeScript
22 lines
607 B
TypeScript
import { useState, useRef, useCallback } from "react";
|
|
|
|
export const useMenuPreload = (
|
|
preloadCallback: () => Promise<unknown>
|
|
): {
|
|
onMouseOverCapture?: React.MouseEventHandler<
|
|
HTMLButtonElement | HTMLDivElement
|
|
>;
|
|
} => {
|
|
const [preloaded, setPreloaded] = useState(false);
|
|
const initalizedPreload = useRef(false);
|
|
const preloadMenu = useCallback((): void => {
|
|
if (initalizedPreload.current) return;
|
|
|
|
initalizedPreload.current = true;
|
|
|
|
preloadCallback().then(() => setPreloaded(true));
|
|
}, [preloadCallback]);
|
|
|
|
return preloaded ? {} : { onMouseOverCapture: preloadMenu };
|
|
};
|