UNPKG

@grafana/ui

Version:
43 lines (38 loc) 1.16 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); "use strict"; function useDelayedSwitch(value, options = {}) { const { duration = 250, delay = 250 } = options; const [delayedValue, setDelayedValue] = React.useState(value); const onStartTime = React.useRef(void 0); React.useEffect(() => { let timeout; if (value) { timeout = setTimeout(() => { onStartTime.current = /* @__PURE__ */ new Date(); setDelayedValue(value); }, delay); } else { const timeSpent = onStartTime.current ? Date.now() - onStartTime.current.valueOf() : 0; const turnOff = () => { onStartTime.current = void 0; setDelayedValue(value); }; if (timeSpent >= duration) { turnOff(); } else { timeout = setTimeout(turnOff, duration - timeSpent); } } return () => { if (timeout) { clearTimeout(timeout); timeout = void 0; } }; }, [value, duration, delay]); return delayedValue; } exports.useDelayedSwitch = useDelayedSwitch; //# sourceMappingURL=useDelayedSwitch.cjs.map