1
1
import { debounce } from 'lodash-es' ;
2
- import { onBeforeUnmount , onMounted , ref } from 'vue' ;
3
- import { MOBILE_WIDTH } from '@/constants' ;
2
+ import { onBeforeUnmount , ref } from 'vue' ;
4
3
5
4
export interface IScrollCallbackParams {
6
5
isOutsideOfViewport : boolean
@@ -11,18 +10,9 @@ export type OnViewportScrollCallback = (p: IScrollCallbackParams) => any;
11
10
const viewportElement = ref < Element | undefined > ( ) ;
12
11
13
12
export const useViewport = ( ) => {
14
- function checkIsDesktop ( ) : boolean {
15
- return ! ! (
16
- document . documentElement . clientWidth > MOBILE_WIDTH
17
- || process . env . IS_EXTENSION
18
- ) ;
19
- }
20
-
21
13
const viewportScroll = debounce ( ( callback : OnViewportScrollCallback ) => {
22
- const element = checkIsDesktop ( ) ? viewportElement . value : document . documentElement ;
23
-
24
- if ( element ) {
25
- const { scrollHeight, scrollTop, clientHeight } = element ;
14
+ if ( viewportElement . value ) {
15
+ const { scrollHeight, scrollTop, clientHeight } = viewportElement . value ;
26
16
const isOutsideOfViewport = scrollHeight - scrollTop <= clientHeight + 100 ;
27
17
28
18
callback ( { isOutsideOfViewport } ) ;
@@ -34,12 +24,10 @@ export const useViewport = () => {
34
24
}
35
25
36
26
function onViewportScroll ( onScrollMethod : OnViewportScrollCallback ) {
37
- onMounted ( ( ) => {
38
- if ( viewportElement . value ) {
39
- viewportElement . value . addEventListener ( 'scroll' , ( ) => viewportScroll ( onScrollMethod ) ) ;
40
- }
41
- window . addEventListener ( 'scroll' , ( ) => viewportScroll ( onScrollMethod ) ) ;
42
- } ) ;
27
+ if ( viewportElement . value ) {
28
+ viewportElement . value . addEventListener ( 'scroll' , ( ) => viewportScroll ( onScrollMethod ) ) ;
29
+ }
30
+ window . addEventListener ( 'scroll' , ( ) => viewportScroll ( onScrollMethod ) ) ;
43
31
onBeforeUnmount ( ( ) => {
44
32
if ( viewportElement . value ) {
45
33
viewportElement . value . removeEventListener ( 'scroll' , ( ) => viewportScroll ( onScrollMethod ) ) ;
0 commit comments