|
1 | 1 | import type { Ref, ComputedRef } from 'vue' |
| 2 | +import { useEventListener } from '@vueuse/core' |
2 | 3 |
|
3 | 4 | export interface UseResizableOptions { |
4 | 5 | min?: number |
@@ -74,6 +75,8 @@ export function useResizable(options: UseResizableOptions = {}): UseResizableRet |
74 | 75 | const pointerId = e.pointerId |
75 | 76 | let lastWidth = startWidth |
76 | 77 |
|
| 78 | + const eventCleanups: (() => void)[] = [] |
| 79 | + |
77 | 80 | function onPointerMove(moveEvent: PointerEvent) { |
78 | 81 | if (moveEvent.buttons === 0) { |
79 | 82 | cleanup(moveEvent) |
@@ -101,28 +104,27 @@ export function useResizable(options: UseResizableOptions = {}): UseResizableRet |
101 | 104 | isResizing.value = false |
102 | 105 |
|
103 | 106 | target.releasePointerCapture(pointerId) |
104 | | - target.removeEventListener('pointermove', onPointerMove) |
105 | | - target.removeEventListener('pointerup', cleanup) |
106 | | - target.removeEventListener('pointercancel', cleanup) |
107 | | - target.removeEventListener('lostpointercapture', cleanup) |
| 107 | + |
| 108 | + eventCleanups.forEach(fn => fn()) |
| 109 | + eventCleanups.length = 0 |
108 | 110 |
|
109 | 111 | activeCleanups.delete(cleanupHandler) |
110 | 112 | onResizeEnd?.(width.value) |
111 | 113 | } |
112 | 114 |
|
113 | 115 | const cleanupHandler = () => { |
114 | | - target.removeEventListener('pointermove', onPointerMove) |
115 | | - target.removeEventListener('pointerup', cleanup) |
116 | | - target.removeEventListener('pointercancel', cleanup) |
117 | | - target.removeEventListener('lostpointercapture', cleanup) |
| 116 | + eventCleanups.forEach(fn => fn()) |
| 117 | + eventCleanups.length = 0 |
118 | 118 | } |
119 | 119 |
|
120 | 120 | activeCleanups.add(cleanupHandler) |
121 | 121 |
|
122 | | - target.addEventListener('pointermove', onPointerMove) |
123 | | - target.addEventListener('pointerup', cleanup) |
124 | | - target.addEventListener('pointercancel', cleanup) |
125 | | - target.addEventListener('lostpointercapture', cleanup) |
| 122 | + eventCleanups.push( |
| 123 | + useEventListener(target, 'pointermove', onPointerMove), |
| 124 | + useEventListener(target, 'pointerup', cleanup), |
| 125 | + useEventListener(target, 'pointercancel', cleanup), |
| 126 | + useEventListener(target, 'lostpointercapture', cleanup) |
| 127 | + ) |
126 | 128 | } |
127 | 129 | } |
128 | 130 |
|
|
0 commit comments