1- import type { Ref } from 'vue'
21import { ref , unref , watchEffect } from 'vue'
32import type { Options } from '@/types/state'
43import { inView } from 'framer-motion/dom'
5- import type { MaybeRef } from '@vueuse/core'
4+ import { type MaybeComputedElementRef , type MaybeRef , unrefElement } from '@vueuse/core'
65
76type InViewOptions = Options [ 'inViewOptions' ]
87export interface UseInViewOptions extends Omit < InViewOptions , 'root' > {
98 root ?: MaybeRef < Element | Document >
109}
1110
12- export function useInView < T extends Element = any > (
13- domRef : Ref < T | null > ,
11+ export function useInView (
12+ domRef : MaybeComputedElementRef ,
1413 options ?: MaybeRef < UseInViewOptions > ,
1514) {
1615 const isInView = ref ( false )
1716
1817 watchEffect ( ( onCleanup ) => {
1918 const realOptions = unref ( options ) || { }
2019 const { once } = realOptions
21- if ( ! domRef . value || ( once && isInView . value ) ) {
20+ const el = unrefElement ( domRef )
21+ if ( ! el || ( once && isInView . value ) ) {
2222 return
2323 }
2424 const onEnter = ( ) => {
@@ -29,7 +29,7 @@ export function useInView<T extends Element = any>(
2929 isInView . value = false
3030 }
3131 }
32- const cleanup = inView ( domRef . value , onEnter , {
32+ const cleanup = inView ( el , onEnter , {
3333 ...realOptions ,
3434 root : unref ( realOptions . root ) ,
3535 } )
0 commit comments