liusuyi
2023-04-24 4737f1e038743ced243c9e52423404d9034d6107
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// from react-select
export function scrollIntoView($scrollingEl, $focusedEl) {
  const scrollingReact = $scrollingEl.getBoundingClientRect()
  const focusedRect = $focusedEl.getBoundingClientRect()
  const overScroll = $focusedEl.offsetHeight / 3
 
  if (focusedRect.bottom + overScroll > scrollingReact.bottom) {
    $scrollingEl.scrollTop = Math.min(
      $focusedEl.offsetTop + $focusedEl.clientHeight - $scrollingEl.offsetHeight + overScroll,
      $scrollingEl.scrollHeight,
    )
  } else if (focusedRect.top - overScroll < scrollingReact.top) {
    $scrollingEl.scrollTop = Math.max($focusedEl.offsetTop - overScroll, 0)
  }
}