Summary: Previously every single visualisation node would have jsx for a tooltip and would control its own tooltop. now we have the overlay we can have just one. this improves perf a bit and simplifies the code. i also increased the delay slightly Reviewed By: lblasa Differential Revision: D46274098 fbshipit-source-id: cb8afbc4804c549da9abf33d69aaf190397f74c7
31 lines
753 B
TypeScript
31 lines
753 B
TypeScript
/**
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*
|
|
* @format
|
|
*/
|
|
|
|
import {useEffect, useRef, useState} from 'react';
|
|
|
|
export function useDelay(delayTimeMs: number) {
|
|
const [isDone, setIsDone] = useState(false);
|
|
const delayTimerStarted = useRef(false);
|
|
useEffect(() => {
|
|
let handle: NodeJS.Timeout | null = null;
|
|
if (delayTimerStarted.current === false) {
|
|
handle = setTimeout(() => setIsDone(true), delayTimeMs);
|
|
delayTimerStarted.current = true;
|
|
}
|
|
|
|
return () => {
|
|
if (handle !== null) {
|
|
clearTimeout(handle);
|
|
}
|
|
};
|
|
}, [delayTimeMs]);
|
|
|
|
return isDone;
|
|
}
|