feat: the frontend part of mcp (#22131)

Co-authored-by: jZonG <jzongcode@gmail.com>
Co-authored-by: Novice <novice12185727@gmail.com>
Co-authored-by: nite-knite <nkCoding@gmail.com>
Co-authored-by: Hanqing Zhao <sherry9277@gmail.com>
This commit is contained in:
Joel
2025-07-10 14:14:02 +08:00
committed by GitHub
parent 535fff62f3
commit 5375d9bb27
152 changed files with 6340 additions and 695 deletions

View File

@@ -0,0 +1,31 @@
import { useEffect, useState } from 'react'
const useCheckVerticalScrollbar = (ref: React.RefObject<HTMLElement>) => {
const [hasVerticalScrollbar, setHasVerticalScrollbar] = useState(false)
useEffect(() => {
const elem = ref.current
if (!elem) return
const checkScrollbar = () => {
setHasVerticalScrollbar(elem.scrollHeight > elem.clientHeight)
}
checkScrollbar()
const resizeObserver = new ResizeObserver(checkScrollbar)
resizeObserver.observe(elem)
const mutationObserver = new MutationObserver(checkScrollbar)
mutationObserver.observe(elem, { childList: true, subtree: true, characterData: true })
return () => {
resizeObserver.disconnect()
mutationObserver.disconnect()
}
}, [ref])
return hasVerticalScrollbar
}
export default useCheckVerticalScrollbar