Osman2010
Deploy DataLine with Gemini integration to HF Spaces
9470652
import { MutableRefObject, useEffect, useRef } from "react";
export function generateUUID() {
// Public Domain/MIT
var d = new Date().getTime(); //Timestamp
var d2 =
(typeof performance !== "undefined" &&
performance.now &&
performance.now() * 1000) ||
0; //Time in microseconds since page-load or 0 if unsupported
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (c) {
var r = Math.random() * 16; //random number between 0 and 16
if (d > 0) {
//Use timestamp until depleted
r = (d + r) % 16 | 0;
d = Math.floor(d / 16);
} else {
//Use microseconds since page-load if supported
r = (d2 + r) % 16 | 0;
d2 = Math.floor(d2 / 16);
}
return (c === "x" ? r : (r & 0x3) | 0x8).toString(16);
});
}
export const useClickOutside = (
elementRefs: MutableRefObject<HTMLElement | null>[],
callback: (event: Event) => void
): void => {
const callbackRef = useRef(callback);
callbackRef.current = callback;
useEffect(() => {
const handleClickOutside = (event: Event): void => {
if (
elementRefs.every(
(elementRef) => !elementRef.current?.contains(event.target as Node)
)
) {
callbackRef.current?.(event);
}
};
document.addEventListener("click", handleClickOutside, true);
return () =>
document.removeEventListener("click", handleClickOutside, true);
}, [elementRefs]);
};