mirror of
https://github.com/blakeblackshear/frigate.git
synced 2025-02-18 00:16:41 +01:00
* Add overview stats for overall detection and skipped fps * Fix intel memory stats * Fix iOS image long pressing * Cleanup
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import { MutableRefObject, useEffect } from "react";
|
|
import { isIOS } from "react-device-detect";
|
|
|
|
export default function useContextMenu(
|
|
ref: MutableRefObject<HTMLDivElement | null>,
|
|
callback: () => void,
|
|
) {
|
|
useEffect(() => {
|
|
if (!ref.current) {
|
|
return;
|
|
}
|
|
|
|
const elem = ref.current;
|
|
|
|
if (isIOS) {
|
|
let timeoutId: NodeJS.Timeout;
|
|
const touchStart = () => {
|
|
timeoutId = setTimeout(() => {
|
|
callback();
|
|
}, 610);
|
|
};
|
|
const touchClear = () => {
|
|
clearTimeout(timeoutId);
|
|
};
|
|
elem.addEventListener("touchstart", touchStart);
|
|
elem.addEventListener("touchmove", touchClear);
|
|
elem.addEventListener("touchend", touchClear);
|
|
|
|
return () => {
|
|
elem.removeEventListener("touchstart", touchStart);
|
|
elem.removeEventListener("touchmove", touchClear);
|
|
elem.removeEventListener("touchend", touchClear);
|
|
};
|
|
} else {
|
|
const context = (e: MouseEvent) => {
|
|
e.preventDefault();
|
|
callback();
|
|
};
|
|
elem.addEventListener("contextmenu", context);
|
|
|
|
return () => {
|
|
elem.removeEventListener("contextmenu", context);
|
|
};
|
|
}
|
|
}, [callback, ref]);
|
|
}
|