d68f9a509562a77f10d2cbd4ffcb6fb9b18dc146f32a3db6d0623fd132d8a8ee1be87e7bd49c31e8ad39541c7bd79850b46f9c30beb7f27c94ccb9d9b11a47-exec 635 B

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