@julo-ui/sliders
Version:
A React Slider component that implements input[type='range']
37 lines (35 loc) • 973 B
JavaScript
// src/slider/usecase/use-handle-focus-thumb.ts
import { useCallback, useEffect, useRef } from "react";
import { _noop } from "@julo-ui/function-utils";
function useHandleFocusThumb(options) {
const {
focusThumbOnChange,
thumbRef,
eventSource,
onChangeEnd = _noop,
value
} = options;
const timeoutId = useRef();
const onFocusThumb = useCallback(() => {
if (!focusThumbOnChange)
return;
timeoutId.current = setTimeout(() => {
var _a;
return (_a = thumbRef.current) == null ? void 0 : _a.focus();
});
}, [focusThumbOnChange, thumbRef]);
useEffect(() => {
onFocusThumb();
if (eventSource === "keyboard") {
onChangeEnd(value);
}
}, [eventSource, onChangeEnd, onFocusThumb, value]);
useEffect(() => {
return () => clearTimeout(timeoutId.current);
}, []);
return { onFocusThumb };
}
var use_handle_focus_thumb_default = useHandleFocusThumb;
export {
use_handle_focus_thumb_default
};