iterative/vscode-dvc

View on GitHub
webview/src/experiments/components/table/header/WithExpColumnNeedsShadowUpdates.tsx

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import React, { ReactNode, useEffect } from 'react'
import { useInView } from 'react-intersection-observer'

export const WithExpColumnNeedsShadowUpdates: React.FC<{
  children: ReactNode
  setExpColumnNeedsShadow: (needsShadow: boolean) => void
  root: HTMLElement | null
}> = ({ root, setExpColumnNeedsShadow, children }) => {
  const [ref, needsShadow] = useInView({
    initialInView: true,
    root,
    rootMargin: '0px 0px 0px -2px',
    threshold: 1
  })

  useEffect(() => {
    setExpColumnNeedsShadow(needsShadow)
  }, [needsShadow, setExpColumnNeedsShadow])

  return <div ref={ref}>{children}</div>
}