@grafana/ui
Version:
Grafana Components Library
1 lines • 2.31 kB
Source Map (JSON)
{"version":3,"file":"useMultiInputAutoSize.mjs","sources":["../../../../src/components/Combobox/useMultiInputAutoSize.tsx"],"sourcesContent":["import { useLayoutEffect, useRef, useState } from 'react';\n\nimport { measureText } from '../../utils/measureText';\n\nexport function useMultiInputAutoSize(inputValue: string) {\n const inputRef = useRef<HTMLInputElement>(null);\n const initialInputWidth = useRef<number>(0); // Store initial width to prevent resizing on backspace\n const [inputWidth, setInputWidth] = useState<string>('');\n\n useLayoutEffect(() => {\n if (inputRef.current && inputValue == null && initialInputWidth.current === 0) {\n initialInputWidth.current = inputRef?.current.getBoundingClientRect().width;\n }\n\n if (!inputRef.current || inputValue == null) {\n setInputWidth('');\n return;\n }\n\n const fontSize = window.getComputedStyle(inputRef.current).fontSize;\n const textWidth = measureText(inputRef.current.value || '', parseInt(fontSize, 10)).width;\n\n if (textWidth < initialInputWidth.current) {\n // Let input fill all space before resizing\n setInputWidth('');\n } else {\n // Add pixels to prevent clipping\n setInputWidth(`${textWidth + 5}px`);\n }\n }, [inputValue]);\n\n return { inputRef, inputWidth };\n}\n"],"names":[],"mappings":";;;;AAIO,SAAS,sBAAsB,UAAA,EAAoB;AACxD,EAAA,MAAM,QAAA,GAAW,OAAyB,IAAI,CAAA;AAC9C,EAAA,MAAM,iBAAA,GAAoB,OAAe,CAAC,CAAA;AAC1C,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAI,SAAiB,EAAE,CAAA;AAEvD,EAAA,eAAA,CAAgB,MAAM;AACpB,IAAA,IAAI,SAAS,OAAA,IAAW,UAAA,IAAc,IAAA,IAAQ,iBAAA,CAAkB,YAAY,CAAA,EAAG;AAC7E,MAAA,iBAAA,CAAkB,OAAA,GAAU,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAU,OAAA,CAAQ,qBAAA,EAAA,CAAwB,KAAA;AAAA,IACxE;AAEA,IAAA,IAAI,CAAC,QAAA,CAAS,OAAA,IAAW,UAAA,IAAc,IAAA,EAAM;AAC3C,MAAA,aAAA,CAAc,EAAE,CAAA;AAChB,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,QAAA,GAAW,MAAA,CAAO,gBAAA,CAAiB,QAAA,CAAS,OAAO,CAAA,CAAE,QAAA;AAC3D,IAAA,MAAM,SAAA,GAAY,WAAA,CAAY,QAAA,CAAS,OAAA,CAAQ,KAAA,IAAS,IAAI,QAAA,CAAS,QAAA,EAAU,EAAE,CAAC,CAAA,CAAE,KAAA;AAEpF,IAAA,IAAI,SAAA,GAAY,kBAAkB,OAAA,EAAS;AAEzC,MAAA,aAAA,CAAc,EAAE,CAAA;AAAA,IAClB,CAAA,MAAO;AAEL,MAAA,aAAA,CAAc,CAAA,EAAG,SAAA,GAAY,CAAC,CAAA,EAAA,CAAI,CAAA;AAAA,IACpC;AAAA,EACF,CAAA,EAAG,CAAC,UAAU,CAAC,CAAA;AAEf,EAAA,OAAO,EAAE,UAAU,UAAA,EAAW;AAChC;;;;"}