UNPKG

@grafana/ui

Version:
30 lines (27 loc) 1.07 kB
import { useRef, useState, useLayoutEffect } from 'react'; import { measureText } from '../../utils/measureText.mjs'; "use strict"; 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