Skip to content

Commit 3927dd3

Browse files
authored
feat(useMouse): support eventFilter (#1261)
1 parent b18b9d8 commit 3927dd3

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

packages/core/useMouse/index.ts

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { ref } from 'vue-demi'
2+
import type { ConfigurableEventFilter } from '@vueuse/shared'
23
import { useEventListener } from '../useEventListener'
34
import type { ConfigurableWindow } from '../_configurable'
45
import { defaultWindow } from '../_configurable'
56
import type { Position } from '../types'
67

7-
export interface MouseOptions extends ConfigurableWindow {
8+
export interface MouseOptions extends ConfigurableWindow, ConfigurableEventFilter {
89
/**
910
* Mouse position based by page or client
1011
*
@@ -46,6 +47,7 @@ export function useMouse(options: MouseOptions = {}) {
4647
resetOnTouchEnds = false,
4748
initialValue = { x: 0, y: 0 },
4849
window = defaultWindow,
50+
eventFilter,
4951
} = options
5052

5153
const x = ref(initialValue.x)
@@ -82,12 +84,20 @@ export function useMouse(options: MouseOptions = {}) {
8284
}
8385
}
8486

87+
const mouseHandlerWrapper = (event: MouseEvent) => {
88+
return eventFilter === undefined ? mouseHandler(event) : eventFilter(() => mouseHandler(event), {} as any)
89+
}
90+
91+
const touchHandlerWrapper = (event: TouchEvent) => {
92+
return eventFilter === undefined ? touchHandler(event) : eventFilter(() => touchHandler(event), {} as any)
93+
}
94+
8595
if (window) {
86-
useEventListener(window, 'mousemove', mouseHandler, { passive: true })
87-
useEventListener(window, 'dragover', mouseHandler, { passive: true })
96+
useEventListener(window, 'mousemove', mouseHandlerWrapper, { passive: true })
97+
useEventListener(window, 'dragover', mouseHandlerWrapper, { passive: true })
8898
if (touch) {
89-
useEventListener(window, 'touchstart', touchHandler, { passive: true })
90-
useEventListener(window, 'touchmove', touchHandler, { passive: true })
99+
useEventListener(window, 'touchstart', touchHandlerWrapper, { passive: true })
100+
useEventListener(window, 'touchmove', touchHandlerWrapper, { passive: true })
91101
if (resetOnTouchEnds)
92102
useEventListener(window, 'touchend', reset, { passive: true })
93103
}

0 commit comments

Comments
 (0)