@prefecthq/prefect-design
Version:
A collection of low-level Vue components.
22 lines (16 loc) • 491 B
text/typescript
export function scrollIntoView(target: Element, options?: ScrollIntoViewOptions): Promise<void> {
const { promise, resolve } = Promise.withResolvers<void>()
const observer = new IntersectionObserver((entries) => {
const [entry] = entries
if (entry.isIntersecting) {
observer.unobserve(target)
observer.disconnect()
setTimeout(() => {
resolve()
}, 100)
}
})
observer.observe(target)
target.scrollIntoView(options)
return promise
}