linwenling
2023-06-12 90fd5c29248f2f71c877b2f99fed2c375457e95b
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)
  }
}