@grafana/ui
Version:
Grafana Components Library
30 lines (27 loc) • 1.07 kB
JavaScript
import { useRef, useState, useLayoutEffect } from 'react';
import { measureText } from '../../utils/measureText.mjs';
;
function useMultiInputAutoSize(inputValue) {
const inputRef = useRef(null);
const initialInputWidth = useRef(0);
const [inputWidth, setInputWidth] = useState("");
useLayoutEffect(() => {
if (inputRef.current && inputValue == null && initialInputWidth.current === 0) {
initialInputWidth.current = inputRef == null ? void 0 : inputRef.current.getBoundingClientRect().width;
}
if (!inputRef.current || inputValue == null) {
setInputWidth("");
return;
}
const fontSize = window.getComputedStyle(inputRef.current).fontSize;
const textWidth = measureText(inputRef.current.value || "", parseInt(fontSize, 10)).width;
if (textWidth < initialInputWidth.current) {
setInputWidth("");
} else {
setInputWidth(`${textWidth + 5}px`);
}
}, [inputValue]);
return { inputRef, inputWidth };
}
export { useMultiInputAutoSize };
//# sourceMappingURL=useMultiInputAutoSize.mjs.map