@tamagui/toast 2.7.7 → 3.0.0-beta.643.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/ToastComposable.cjs +773 -882
- package/dist/cjs/ToastComposable.native.cjs +924 -0
- package/dist/cjs/ToastComposable.native.js +854 -966
- package/dist/cjs/ToastComposable.native.js.map +1 -1
- package/dist/cjs/ToastItemFrame.cjs +48 -119
- package/dist/cjs/ToastItemFrame.native.cjs +76 -0
- package/dist/cjs/ToastItemFrame.native.js +50 -120
- package/dist/cjs/ToastItemFrame.native.js.map +1 -1
- package/dist/cjs/ToastState.cjs +281 -290
- package/dist/cjs/ToastState.native.cjs +312 -0
- package/dist/cjs/ToastState.native.js +280 -290
- package/dist/cjs/ToastState.native.js.map +1 -1
- package/dist/cjs/createNativeToast.cjs +38 -44
- package/dist/cjs/createNativeToast.native.cjs +54 -0
- package/dist/cjs/createNativeToast.native.js +36 -40
- package/dist/cjs/createNativeToast.native.js.map +1 -1
- package/dist/cjs/dispatchNativeToast.cjs +32 -35
- package/dist/cjs/dispatchNativeToast.native.cjs +48 -0
- package/dist/cjs/dispatchNativeToast.native.js +34 -36
- package/dist/cjs/dispatchNativeToast.native.js.map +1 -1
- package/dist/cjs/index.cjs +25 -12
- package/dist/cjs/index.native.cjs +35 -0
- package/dist/cjs/index.native.js +26 -12
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/types.cjs +10 -11
- package/dist/cjs/types.native.cjs +19 -0
- package/dist/cjs/types.native.js +10 -10
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/useAnimatedDragGesture.cjs +197 -194
- package/dist/cjs/useAnimatedDragGesture.native.cjs +210 -0
- package/dist/cjs/useAnimatedDragGesture.native.js +179 -191
- package/dist/cjs/useAnimatedDragGesture.native.js.map +1 -1
- package/dist/cjs/useReducedMotion.cjs +47 -55
- package/dist/cjs/useReducedMotion.native.cjs +74 -0
- package/dist/cjs/useReducedMotion.native.js +53 -60
- package/dist/cjs/useReducedMotion.native.js.map +1 -1
- package/dist/cjs/useToastAnimations.cjs +198 -270
- package/dist/cjs/useToastAnimations.native.cjs +229 -0
- package/dist/cjs/useToastAnimations.native.js +205 -276
- package/dist/cjs/useToastAnimations.native.js.map +1 -1
- package/dist/esm/ToastComposable.mjs +752 -854
- package/dist/esm/ToastComposable.mjs.map +1 -1
- package/dist/esm/ToastComposable.native.js +834 -940
- package/dist/esm/ToastComposable.native.js.map +1 -1
- package/dist/esm/ToastItemFrame.mjs +31 -99
- package/dist/esm/ToastItemFrame.mjs.map +1 -1
- package/dist/esm/ToastItemFrame.native.js +34 -102
- package/dist/esm/ToastItemFrame.native.js.map +1 -1
- package/dist/esm/ToastState.mjs +266 -273
- package/dist/esm/ToastState.mjs.map +1 -1
- package/dist/esm/ToastState.native.js +265 -274
- package/dist/esm/ToastState.native.js.map +1 -1
- package/dist/esm/createNativeToast.mjs +22 -26
- package/dist/esm/createNativeToast.mjs.map +1 -1
- package/dist/esm/createNativeToast.native.js +21 -23
- package/dist/esm/createNativeToast.native.js.map +1 -1
- package/dist/esm/dispatchNativeToast.mjs +19 -17
- package/dist/esm/dispatchNativeToast.mjs.map +1 -1
- package/dist/esm/dispatchNativeToast.native.js +21 -19
- package/dist/esm/dispatchNativeToast.native.js.map +1 -1
- package/dist/esm/index.js +5 -2
- package/dist/esm/index.mjs +5 -2
- package/dist/esm/index.native.js +5 -2
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/types.native.js +0 -2
- package/dist/esm/useAnimatedDragGesture.mjs +181 -168
- package/dist/esm/useAnimatedDragGesture.mjs.map +1 -1
- package/dist/esm/useAnimatedDragGesture.native.js +163 -166
- package/dist/esm/useAnimatedDragGesture.native.js.map +1 -1
- package/dist/esm/useReducedMotion.mjs +31 -29
- package/dist/esm/useReducedMotion.mjs.map +1 -1
- package/dist/esm/useReducedMotion.native.js +37 -35
- package/dist/esm/useReducedMotion.native.js.map +1 -1
- package/dist/esm/useToastAnimations.mjs +183 -245
- package/dist/esm/useToastAnimations.mjs.map +1 -1
- package/dist/esm/useToastAnimations.native.js +190 -252
- package/dist/esm/useToastAnimations.native.js.map +1 -1
- package/dist/jsx/ToastComposable.mjs +752 -854
- package/dist/jsx/ToastComposable.mjs.map +1 -1
- package/dist/jsx/ToastComposable.native.cjs +924 -0
- package/dist/jsx/ToastComposable.native.js +854 -966
- package/dist/jsx/ToastComposable.native.js.map +1 -1
- package/dist/jsx/ToastItemFrame.mjs +31 -99
- package/dist/jsx/ToastItemFrame.mjs.map +1 -1
- package/dist/jsx/ToastItemFrame.native.cjs +76 -0
- package/dist/jsx/ToastItemFrame.native.js +50 -120
- package/dist/jsx/ToastItemFrame.native.js.map +1 -1
- package/dist/jsx/ToastState.mjs +266 -273
- package/dist/jsx/ToastState.mjs.map +1 -1
- package/dist/jsx/ToastState.native.cjs +312 -0
- package/dist/jsx/ToastState.native.js +280 -290
- package/dist/jsx/ToastState.native.js.map +1 -1
- package/dist/jsx/createNativeToast.mjs +22 -26
- package/dist/jsx/createNativeToast.mjs.map +1 -1
- package/dist/jsx/createNativeToast.native.cjs +54 -0
- package/dist/jsx/createNativeToast.native.js +36 -40
- package/dist/jsx/createNativeToast.native.js.map +1 -1
- package/dist/jsx/dispatchNativeToast.mjs +19 -17
- package/dist/jsx/dispatchNativeToast.mjs.map +1 -1
- package/dist/jsx/dispatchNativeToast.native.cjs +48 -0
- package/dist/jsx/dispatchNativeToast.native.js +34 -36
- package/dist/jsx/dispatchNativeToast.native.js.map +1 -1
- package/dist/jsx/index.js +5 -2
- package/dist/jsx/index.mjs +5 -2
- package/dist/jsx/index.native.cjs +35 -0
- package/dist/jsx/index.native.js +26 -12
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/types.mjs +0 -2
- package/dist/jsx/types.native.cjs +19 -0
- package/dist/jsx/types.native.js +10 -10
- package/dist/jsx/types.native.js.map +1 -1
- package/dist/jsx/useAnimatedDragGesture.mjs +181 -168
- package/dist/jsx/useAnimatedDragGesture.mjs.map +1 -1
- package/dist/jsx/useAnimatedDragGesture.native.cjs +210 -0
- package/dist/jsx/useAnimatedDragGesture.native.js +179 -191
- package/dist/jsx/useAnimatedDragGesture.native.js.map +1 -1
- package/dist/jsx/useReducedMotion.mjs +31 -29
- package/dist/jsx/useReducedMotion.mjs.map +1 -1
- package/dist/jsx/useReducedMotion.native.cjs +74 -0
- package/dist/jsx/useReducedMotion.native.js +53 -60
- package/dist/jsx/useReducedMotion.native.js.map +1 -1
- package/dist/jsx/useToastAnimations.mjs +183 -245
- package/dist/jsx/useToastAnimations.mjs.map +1 -1
- package/dist/jsx/useToastAnimations.native.cjs +229 -0
- package/dist/jsx/useToastAnimations.native.js +205 -276
- package/dist/jsx/useToastAnimations.native.js.map +1 -1
- package/package.json +20 -37
- package/src/ToastComposable.tsx +55 -97
- package/src/ToastItemFrame.tsx +22 -81
- package/src/ToastState.ts +1 -0
- package/src/index.ts +34 -2
- package/src/types.ts +11 -0
- package/src/useAnimatedDragGesture.native.ts +1 -1
- package/src/useAnimatedDragGesture.ts +1 -1
- package/src/useToastAnimations.ts +20 -36
- package/types/ToastComposable.d.ts +124 -47
- package/types/ToastComposable.d.ts.map +1 -1
- package/types/ToastItemFrame.d.ts +52 -21
- package/types/ToastItemFrame.d.ts.map +1 -1
- package/types/ToastState.d.ts +15 -11
- package/types/ToastState.d.ts.map +1 -1
- package/types/index.d.ts +6 -2
- package/types/index.d.ts.map +1 -1
- package/types/types.d.ts +1 -0
- package/types/types.d.ts.map +1 -1
- package/types/useAnimatedDragGesture.d.ts +1 -1
- package/types/useAnimatedDragGesture.d.ts.map +1 -1
- package/types/useAnimatedDragGesture.native.d.ts +1 -1
- package/types/useAnimatedDragGesture.native.d.ts.map +1 -1
- package/types/useToastAnimations.d.ts +2 -8
- package/types/useToastAnimations.d.ts.map +1 -1
- package/dist/cjs/Toast.cjs +0 -178
- package/dist/cjs/Toast.native.js +0 -181
- package/dist/cjs/Toast.native.js.map +0 -1
- package/dist/cjs/ToastAnnounce.cjs +0 -103
- package/dist/cjs/ToastAnnounce.native.js +0 -111
- package/dist/cjs/ToastAnnounce.native.js.map +0 -1
- package/dist/cjs/ToastImperative.cjs +0 -119
- package/dist/cjs/ToastImperative.native.js +0 -130
- package/dist/cjs/ToastImperative.native.js.map +0 -1
- package/dist/cjs/ToastImpl.cjs +0 -354
- package/dist/cjs/ToastImpl.native.js +0 -364
- package/dist/cjs/ToastImpl.native.js.map +0 -1
- package/dist/cjs/ToastPortal.cjs +0 -49
- package/dist/cjs/ToastPortal.native.js +0 -52
- package/dist/cjs/ToastPortal.native.js.map +0 -1
- package/dist/cjs/ToastProvider.cjs +0 -150
- package/dist/cjs/ToastProvider.native.js +0 -161
- package/dist/cjs/ToastProvider.native.js.map +0 -1
- package/dist/cjs/ToastViewport.cjs +0 -319
- package/dist/cjs/ToastViewport.native.js +0 -343
- package/dist/cjs/ToastViewport.native.js.map +0 -1
- package/dist/cjs/Toaster.cjs +0 -87
- package/dist/cjs/Toaster.native.js +0 -91
- package/dist/cjs/Toaster.native.js.map +0 -1
- package/dist/cjs/constants.cjs +0 -30
- package/dist/cjs/constants.native.js +0 -33
- package/dist/cjs/constants.native.js.map +0 -1
- package/dist/cjs/v2.cjs +0 -36
- package/dist/cjs/v2.native.js +0 -39
- package/dist/cjs/v2.native.js.map +0 -1
- package/dist/esm/Toast.mjs +0 -137
- package/dist/esm/Toast.mjs.map +0 -1
- package/dist/esm/Toast.native.js +0 -137
- package/dist/esm/Toast.native.js.map +0 -1
- package/dist/esm/ToastAnnounce.mjs +0 -66
- package/dist/esm/ToastAnnounce.mjs.map +0 -1
- package/dist/esm/ToastAnnounce.native.js +0 -71
- package/dist/esm/ToastAnnounce.native.js.map +0 -1
- package/dist/esm/ToastImperative.mjs +0 -80
- package/dist/esm/ToastImperative.mjs.map +0 -1
- package/dist/esm/ToastImperative.native.js +0 -88
- package/dist/esm/ToastImperative.native.js.map +0 -1
- package/dist/esm/ToastImpl.mjs +0 -316
- package/dist/esm/ToastImpl.mjs.map +0 -1
- package/dist/esm/ToastImpl.native.js +0 -329
- package/dist/esm/ToastImpl.native.js.map +0 -1
- package/dist/esm/ToastPortal.mjs +0 -24
- package/dist/esm/ToastPortal.mjs.map +0 -1
- package/dist/esm/ToastPortal.native.js +0 -24
- package/dist/esm/ToastPortal.native.js.map +0 -1
- package/dist/esm/ToastProvider.mjs +0 -110
- package/dist/esm/ToastProvider.mjs.map +0 -1
- package/dist/esm/ToastProvider.native.js +0 -118
- package/dist/esm/ToastProvider.native.js.map +0 -1
- package/dist/esm/ToastViewport.mjs +0 -280
- package/dist/esm/ToastViewport.mjs.map +0 -1
- package/dist/esm/ToastViewport.native.js +0 -301
- package/dist/esm/ToastViewport.native.js.map +0 -1
- package/dist/esm/Toaster.mjs +0 -51
- package/dist/esm/Toaster.mjs.map +0 -1
- package/dist/esm/Toaster.native.js +0 -52
- package/dist/esm/Toaster.native.js.map +0 -1
- package/dist/esm/constants.mjs +0 -4
- package/dist/esm/constants.mjs.map +0 -1
- package/dist/esm/constants.native.js +0 -4
- package/dist/esm/constants.native.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/types.native.js.map +0 -1
- package/dist/esm/v2.mjs +0 -6
- package/dist/esm/v2.mjs.map +0 -1
- package/dist/esm/v2.native.js +0 -6
- package/dist/esm/v2.native.js.map +0 -1
- package/dist/jsx/Toast.mjs +0 -137
- package/dist/jsx/Toast.mjs.map +0 -1
- package/dist/jsx/Toast.native.js +0 -181
- package/dist/jsx/Toast.native.js.map +0 -1
- package/dist/jsx/ToastAnnounce.mjs +0 -66
- package/dist/jsx/ToastAnnounce.mjs.map +0 -1
- package/dist/jsx/ToastAnnounce.native.js +0 -111
- package/dist/jsx/ToastAnnounce.native.js.map +0 -1
- package/dist/jsx/ToastImperative.mjs +0 -80
- package/dist/jsx/ToastImperative.mjs.map +0 -1
- package/dist/jsx/ToastImperative.native.js +0 -130
- package/dist/jsx/ToastImperative.native.js.map +0 -1
- package/dist/jsx/ToastImpl.mjs +0 -316
- package/dist/jsx/ToastImpl.mjs.map +0 -1
- package/dist/jsx/ToastImpl.native.js +0 -364
- package/dist/jsx/ToastImpl.native.js.map +0 -1
- package/dist/jsx/ToastPortal.mjs +0 -24
- package/dist/jsx/ToastPortal.mjs.map +0 -1
- package/dist/jsx/ToastPortal.native.js +0 -52
- package/dist/jsx/ToastPortal.native.js.map +0 -1
- package/dist/jsx/ToastProvider.mjs +0 -110
- package/dist/jsx/ToastProvider.mjs.map +0 -1
- package/dist/jsx/ToastProvider.native.js +0 -161
- package/dist/jsx/ToastProvider.native.js.map +0 -1
- package/dist/jsx/ToastViewport.mjs +0 -280
- package/dist/jsx/ToastViewport.mjs.map +0 -1
- package/dist/jsx/ToastViewport.native.js +0 -343
- package/dist/jsx/ToastViewport.native.js.map +0 -1
- package/dist/jsx/Toaster.mjs +0 -51
- package/dist/jsx/Toaster.mjs.map +0 -1
- package/dist/jsx/Toaster.native.js +0 -91
- package/dist/jsx/Toaster.native.js.map +0 -1
- package/dist/jsx/constants.mjs +0 -4
- package/dist/jsx/constants.mjs.map +0 -1
- package/dist/jsx/constants.native.js +0 -33
- package/dist/jsx/constants.native.js.map +0 -1
- package/dist/jsx/index.js.map +0 -1
- package/dist/jsx/index.mjs.map +0 -1
- package/dist/jsx/types.mjs.map +0 -1
- package/dist/jsx/v2.mjs +0 -6
- package/dist/jsx/v2.mjs.map +0 -1
- package/dist/jsx/v2.native.js +0 -39
- package/dist/jsx/v2.native.js.map +0 -1
- package/src/Toast.tsx +0 -219
- package/src/ToastAnnounce.tsx +0 -103
- package/src/ToastImperative.tsx +0 -192
- package/src/ToastImpl.tsx +0 -514
- package/src/ToastPortal.tsx +0 -19
- package/src/ToastProvider.tsx +0 -204
- package/src/ToastViewport.tsx +0 -430
- package/src/Toaster.tsx +0 -181
- package/src/constants.ts +0 -2
- package/src/v2.ts +0 -31
- package/types/Toast.d.ts +0 -84
- package/types/Toast.d.ts.map +0 -1
- package/types/ToastAnnounce.d.ts +0 -18
- package/types/ToastAnnounce.d.ts.map +0 -1
- package/types/ToastImperative.d.ts +0 -95
- package/types/ToastImperative.d.ts.map +0 -1
- package/types/ToastImpl.d.ts +0 -109
- package/types/ToastImpl.d.ts.map +0 -1
- package/types/ToastPortal.d.ts +0 -8
- package/types/ToastPortal.d.ts.map +0 -1
- package/types/ToastProvider.d.ts +0 -92
- package/types/ToastProvider.d.ts.map +0 -1
- package/types/ToastViewport.d.ts +0 -75
- package/types/ToastViewport.d.ts.map +0 -1
- package/types/Toaster.d.ts +0 -112
- package/types/Toaster.d.ts.map +0 -1
- package/types/constants.d.ts +0 -3
- package/types/constants.d.ts.map +0 -1
- package/types/v2.d.ts +0 -10
- package/types/v2.d.ts.map +0 -1
- package/v2/index.cjs +0 -2
- package/v2/index.js +0 -2
- package/v2/index.native.cjs +0 -2
- package/v2/index.native.js +0 -2
|
@@ -1,178 +1,191 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
|
|
2
|
+
|
|
3
|
+
const VELOCITY_THRESHOLD = .11;
|
|
3
4
|
function resisted(delta, maxResist = 25) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
if (delta >= 0) return delta;
|
|
6
|
+
const pastBoundary = Math.abs(delta);
|
|
7
|
+
const resistedDistance = Math.sqrt(pastBoundary) * 2;
|
|
8
|
+
return -Math.min(resistedDistance, maxResist);
|
|
8
9
|
}
|
|
9
10
|
const EXIT_DRAG_CAP = 80;
|
|
10
11
|
function cappedExit(delta) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
if (Math.abs(delta) <= EXIT_DRAG_CAP) return delta;
|
|
13
|
+
const sign = delta > 0 ? 1 : -1;
|
|
14
|
+
const overshoot = Math.abs(delta) - EXIT_DRAG_CAP;
|
|
15
|
+
return sign * (EXIT_DRAG_CAP + Math.sqrt(overshoot) * 2);
|
|
15
16
|
}
|
|
16
17
|
function useAnimatedDragGesture(options) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
18
|
+
const { direction, threshold, disabled, expanded, onDragMove, onDragStart, onDismiss, onCancel } = options;
|
|
19
|
+
const [isDragging, setIsDragging] = React.useState(false);
|
|
20
|
+
const dragStartRef = React.useRef(null);
|
|
21
|
+
const lockedDirectionRef = React.useRef(null);
|
|
22
|
+
const captureElementRef = React.useRef(null);
|
|
23
|
+
const isHorizontal = direction === "left" || direction === "right" || direction === "horizontal";
|
|
24
|
+
const isVertical = direction === "up" || direction === "down" || direction === "vertical";
|
|
25
|
+
const preventSelectRef = React.useRef(null);
|
|
26
|
+
function startPreventingSelection() {
|
|
27
|
+
if (typeof document === "undefined") return;
|
|
28
|
+
window.getSelection()?.removeAllRanges();
|
|
29
|
+
const handler = (e) => e.preventDefault();
|
|
30
|
+
preventSelectRef.current = handler;
|
|
31
|
+
document.addEventListener("selectstart", handler, true);
|
|
32
|
+
}
|
|
33
|
+
function stopPreventingSelection() {
|
|
34
|
+
if (preventSelectRef.current) {
|
|
35
|
+
document.removeEventListener("selectstart", preventSelectRef.current, true);
|
|
36
|
+
preventSelectRef.current = null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const cleanup = React.useCallback(() => {
|
|
40
|
+
dragStartRef.current = null;
|
|
41
|
+
lockedDirectionRef.current = null;
|
|
42
|
+
setIsDragging(false);
|
|
43
|
+
stopPreventingSelection();
|
|
44
|
+
}, []);
|
|
45
|
+
React.useEffect(() => {
|
|
46
|
+
return () => {
|
|
47
|
+
if (dragStartRef.current) {
|
|
48
|
+
if (captureElementRef.current && dragStartRef.current.pointerId) {
|
|
49
|
+
try {
|
|
50
|
+
captureElementRef.current.releasePointerCapture(dragStartRef.current.pointerId);
|
|
51
|
+
} catch {}
|
|
52
|
+
}
|
|
53
|
+
cleanup();
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}, [cleanup]);
|
|
57
|
+
const handlePointerDown = React.useCallback((event) => {
|
|
58
|
+
if (disabled) return;
|
|
59
|
+
if (event.button !== 0) return;
|
|
60
|
+
const target = event.target;
|
|
61
|
+
if (target.closest("button, a, input, textarea, select, [role=\"button\"]")) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const hasSelection = (window.getSelection()?.toString().length ?? 0) > 0;
|
|
65
|
+
if (hasSelection) return;
|
|
66
|
+
const captureElement = event.currentTarget;
|
|
67
|
+
captureElementRef.current = captureElement;
|
|
68
|
+
captureElement.setPointerCapture(event.pointerId);
|
|
69
|
+
dragStartRef.current = {
|
|
70
|
+
startX: event.clientX,
|
|
71
|
+
startY: event.clientY,
|
|
72
|
+
startTime: Date.now(),
|
|
73
|
+
pointerId: event.pointerId
|
|
74
|
+
};
|
|
75
|
+
startPreventingSelection();
|
|
76
|
+
setIsDragging(true);
|
|
77
|
+
onDragStart?.();
|
|
78
|
+
}, [disabled, onDragStart]);
|
|
79
|
+
const handlePointerMove = React.useCallback((event) => {
|
|
80
|
+
if (!dragStartRef.current || disabled) return;
|
|
81
|
+
const deltaX = event.clientX - dragStartRef.current.startX;
|
|
82
|
+
const deltaY = event.clientY - dragStartRef.current.startY;
|
|
83
|
+
if (!lockedDirectionRef.current && (Math.abs(deltaX) > 1 || Math.abs(deltaY) > 1)) {
|
|
84
|
+
lockedDirectionRef.current = Math.abs(deltaX) > Math.abs(deltaY) ? "x" : "y";
|
|
85
|
+
}
|
|
86
|
+
let offsetX = 0;
|
|
87
|
+
let offsetY = 0;
|
|
88
|
+
if (direction === "right") {
|
|
89
|
+
offsetX = deltaX > 0 ? cappedExit(deltaX) : resisted(deltaX);
|
|
90
|
+
} else if (direction === "left") {
|
|
91
|
+
offsetX = deltaX < 0 ? cappedExit(deltaX) : -resisted(-deltaX);
|
|
92
|
+
} else if (direction === "down") {
|
|
93
|
+
offsetY = deltaY > 0 ? cappedExit(deltaY) : resisted(deltaY);
|
|
94
|
+
} else if (direction === "up") {
|
|
95
|
+
offsetY = deltaY < 0 ? cappedExit(deltaY) : -resisted(-deltaY);
|
|
96
|
+
} else if (direction === "horizontal") {
|
|
97
|
+
offsetX = cappedExit(deltaX);
|
|
98
|
+
} else if (direction === "vertical") {
|
|
99
|
+
offsetY = cappedExit(deltaY);
|
|
100
|
+
}
|
|
101
|
+
onDragMove(offsetX, offsetY);
|
|
102
|
+
}, [
|
|
103
|
+
disabled,
|
|
104
|
+
direction,
|
|
105
|
+
expanded,
|
|
106
|
+
isHorizontal,
|
|
107
|
+
isVertical,
|
|
108
|
+
onDragMove
|
|
109
|
+
]);
|
|
110
|
+
const handlePointerUp = React.useCallback((event) => {
|
|
111
|
+
if (!dragStartRef.current || disabled) return;
|
|
112
|
+
const deltaX = event.clientX - dragStartRef.current.startX;
|
|
113
|
+
const deltaY = event.clientY - dragStartRef.current.startY;
|
|
114
|
+
const timeTaken = Date.now() - dragStartRef.current.startTime;
|
|
115
|
+
const velocityX = Math.abs(deltaX) / timeTaken;
|
|
116
|
+
const velocityY = Math.abs(deltaY) / timeTaken;
|
|
117
|
+
const lockedDirection = lockedDirectionRef.current;
|
|
118
|
+
const isLockedToWrongAxis = lockedDirection === "y" && isHorizontal || lockedDirection === "x" && isVertical;
|
|
119
|
+
const relevantDelta = isHorizontal ? deltaX : deltaY;
|
|
120
|
+
const relevantVelocity = isHorizontal ? velocityX : velocityY;
|
|
121
|
+
const passedThreshold = Math.abs(relevantDelta) >= threshold;
|
|
122
|
+
const hasVelocity = relevantVelocity > VELOCITY_THRESHOLD;
|
|
123
|
+
let exitDirection = null;
|
|
124
|
+
if (!isLockedToWrongAxis) {
|
|
125
|
+
if (direction === "right" && deltaX > 0) exitDirection = "right";
|
|
126
|
+
else if (direction === "left" && deltaX < 0) exitDirection = "left";
|
|
127
|
+
else if (direction === "horizontal") {
|
|
128
|
+
if (Math.abs(deltaX) > Math.abs(deltaY)) {
|
|
129
|
+
exitDirection = deltaX > 0 ? "right" : "left";
|
|
130
|
+
}
|
|
131
|
+
} else if (direction === "down" && deltaY > 0) exitDirection = "down";
|
|
132
|
+
else if (direction === "up" && deltaY < 0) exitDirection = "up";
|
|
133
|
+
else if (direction === "vertical") {
|
|
134
|
+
if (Math.abs(deltaY) > Math.abs(deltaX)) {
|
|
135
|
+
exitDirection = deltaY > 0 ? "down" : "up";
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
const shouldDismiss = exitDirection && (passedThreshold || hasVelocity);
|
|
140
|
+
if (captureElementRef.current) {
|
|
141
|
+
try {
|
|
142
|
+
captureElementRef.current.releasePointerCapture(event.pointerId);
|
|
143
|
+
} catch {}
|
|
144
|
+
}
|
|
145
|
+
cleanup();
|
|
146
|
+
if (shouldDismiss && exitDirection) {
|
|
147
|
+
onDismiss(exitDirection, relevantVelocity);
|
|
148
|
+
} else {
|
|
149
|
+
onCancel();
|
|
150
|
+
}
|
|
151
|
+
}, [
|
|
152
|
+
disabled,
|
|
153
|
+
direction,
|
|
154
|
+
threshold,
|
|
155
|
+
isHorizontal,
|
|
156
|
+
isVertical,
|
|
157
|
+
onDismiss,
|
|
158
|
+
onCancel,
|
|
159
|
+
cleanup
|
|
160
|
+
]);
|
|
161
|
+
const handlePointerCancel = React.useCallback((event) => {
|
|
162
|
+
if (captureElementRef.current) {
|
|
163
|
+
try {
|
|
164
|
+
captureElementRef.current.releasePointerCapture(event.pointerId);
|
|
165
|
+
} catch {}
|
|
166
|
+
}
|
|
167
|
+
cleanup();
|
|
168
|
+
onCancel();
|
|
169
|
+
}, [onCancel, cleanup]);
|
|
170
|
+
const handleLostPointerCapture = React.useCallback(() => {
|
|
171
|
+
if (dragStartRef.current) {
|
|
172
|
+
cleanup();
|
|
173
|
+
onCancel();
|
|
174
|
+
}
|
|
175
|
+
}, [onCancel, cleanup]);
|
|
176
|
+
const gestureHandlers = {
|
|
177
|
+
onPointerDown: handlePointerDown,
|
|
178
|
+
onPointerMove: handlePointerMove,
|
|
179
|
+
onPointerUp: handlePointerUp,
|
|
180
|
+
onPointerCancel: handlePointerCancel,
|
|
181
|
+
onLostPointerCapture: handleLostPointerCapture
|
|
182
|
+
};
|
|
183
|
+
return {
|
|
184
|
+
isDragging,
|
|
185
|
+
gestureHandlers,
|
|
186
|
+
gesture: null
|
|
187
|
+
};
|
|
176
188
|
}
|
|
189
|
+
|
|
177
190
|
export { useAnimatedDragGesture };
|
|
178
191
|
//# sourceMappingURL=useAnimatedDragGesture.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","VELOCITY_THRESHOLD","resisted","delta","maxResist","pastBoundary","Math","abs","resistedDistance","sqrt","min","EXIT_DRAG_CAP","cappedExit","sign","overshoot","useAnimatedDragGesture","options","direction","threshold","disabled","expanded","onDragMove","onDragStart","onDismiss","onCancel","isDragging","setIsDragging","useState","dragStartRef","useRef","lockedDirectionRef","captureElementRef","isHorizontal","isVertical","preventSelectRef","startPreventingSelection","document","window","getSelection","removeAllRanges","handler","e","preventDefault","current","addEventListener","stopPreventingSelection","removeEventListener","cleanup","useCallback","useEffect","pointerId","releasePointerCapture","handlePointerDown","event","button","target","closest","hasSelection","toString","length","captureElement","currentTarget","setPointerCapture","startX","clientX","startY","clientY","startTime","Date","now","handlePointerMove","deltaX","deltaY","offsetX","offsetY","handlePointerUp","timeTaken","velocityX","velocityY","lockedDirection","isLockedToWrongAxis","relevantDelta","relevantVelocity","passedThreshold","hasVelocity","exitDirection","shouldDismiss","handlePointerCancel","handleLostPointerCapture","gestureHandlers","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onLostPointerCapture","gesture"],"sources":["../../src/useAnimatedDragGesture.ts"],"sourcesContent":[null],"mappings":"AAKA,YAAYA,KAAA,MAAW;AA0BvB,MAAMC,kBAAA,GAAqB;AAM3B,SAASC,SAASC,KAAA,EAAeC,SAAA,GAAY,IAAY;EACvD,IAAID,KAAA,IAAS,GAAG,OAAOA,KAAA;EACvB,MAAME,YAAA,GAAeC,IAAA,CAAKC,GAAA,CAAIJ,KAAK;EACnC,MAAMK,gBAAA,GAAmBF,IAAA,CAAKG,IAAA,CAAKJ,YAAY,IAAI;EACnD,OAAO,CAACC,IAAA,CAAKI,GAAA,CAAIF,gBAAA,EAAkBJ,SAAS;AAC9C;AAMA,MAAMO,aAAA,GAAgB;AAEtB,SAASC,WAAWT,KAAA,EAAuB;EACzC,IAAIG,IAAA,CAAKC,GAAA,CAAIJ,KAAK,KAAKQ,aAAA,EAAe,OAAOR,KAAA;EAC7C,MAAMU,IAAA,GAAOV,KAAA,GAAQ,IAAI,IAAI;EAC7B,MAAMW,SAAA,GAAYR,IAAA,CAAKC,GAAA,CAAIJ,KAAK,IAAIQ,aAAA;EACpC,OAAOE,IAAA,IAAQF,aAAA,GAAgBL,IAAA,CAAKG,IAAA,CAAKK,SAAS,IAAI;AACxD;AAEO,SAASC,uBAAuBC,OAAA,EAAwC;EAC7E,MAAM;IACJC,SAAA;IACAC,SAAA;IACAC,QAAA;IACAC,QAAA;IACAC,UAAA;IACAC,WAAA;IACAC,SAAA;IACAC;EACF,IAAIR,OAAA;EAEJ,MAAM,CAACS,UAAA,EAAYC,aAAa,IAAI1B,KAAA,CAAM2B,QAAA,CAAS,KAAK;EAExD,MAAMC,YAAA,GAAe5B,KAAA,CAAM6B,MAAA,CAA6B,IAAI;EAC5D,MAAMC,kBAAA,GAAqB9B,KAAA,CAAM6B,MAAA,CAAyB,IAAI;EAE9D,MAAME,iBAAA,GAAoB/B,KAAA,CAAM6B,MAAA,CAA2B,IAAI;EAE/D,MAAMG,YAAA,GACJf,SAAA,KAAc,UAAUA,SAAA,KAAc,WAAWA,SAAA,KAAc;EACjE,MAAMgB,UAAA,GACJhB,SAAA,KAAc,QAAQA,SAAA,KAAc,UAAUA,SAAA,KAAc;EAI9D,MAAMiB,gBAAA,GAAmBlC,KAAA,CAAM6B,MAAA,CAAoC,IAAI;EAEvE,SAASM,yBAAA,EAA2B;IAClC,IAAI,OAAOC,QAAA,KAAa,aAAa;IAErCC,MAAA,CAAOC,YAAA,CAAa,GAAGC,eAAA,CAAgB;IAEvC,MAAMC,OAAA,GAAWC,CAAA,IAAaA,CAAA,CAAEC,cAAA,CAAe;IAC/CR,gBAAA,CAAiBS,OAAA,GAAUH,OAAA;IAC3BJ,QAAA,CAASQ,gBAAA,CAAiB,eAAeJ,OAAA,EAAS,IAAI;EACxD;EAEA,SAASK,wBAAA,EAA0B;IACjC,IAAIX,gBAAA,CAAiBS,OAAA,EAAS;MAC5BP,QAAA,CAASU,mBAAA,CAAoB,eAAeZ,gBAAA,CAAiBS,OAAA,EAAS,IAAI;MAC1ET,gBAAA,CAAiBS,OAAA,GAAU;IAC7B;EACF;EAGA,MAAMI,OAAA,GAAU/C,KAAA,CAAMgD,WAAA,CAAY,MAAM;IACtCpB,YAAA,CAAae,OAAA,GAAU;IACvBb,kBAAA,CAAmBa,OAAA,GAAU;IAC7BjB,aAAA,CAAc,KAAK;IACnBmB,uBAAA,CAAwB;EAC1B,GAAG,EAAE;EAGL7C,KAAA,CAAMiD,SAAA,CAAU,MAAM;IACpB,OAAO,MAAM;MACX,IAAIrB,YAAA,CAAae,OAAA,EAAS;QAExB,IAAIZ,iBAAA,CAAkBY,OAAA,IAAWf,YAAA,CAAae,OAAA,CAAQO,SAAA,EAAW;UAC/D,IAAI;YACFnB,iBAAA,CAAkBY,OAAA,CAAQQ,qBAAA,CACxBvB,YAAA,CAAae,OAAA,CAAQO,SACvB;UACF,QAAQ,CAER;QACF;QACAH,OAAA,CAAQ;MAEV;IACF;EACF,GAAG,CAACA,OAAO,CAAC;EAEZ,MAAMK,iBAAA,GAAoBpD,KAAA,CAAMgD,WAAA,CAC7BK,KAAA,IAA8B;IAC7B,IAAIlC,QAAA,EAAU;IACd,IAAIkC,KAAA,CAAMC,MAAA,KAAW,GAAG;IAGxB,MAAMC,MAAA,GAASF,KAAA,CAAME,MAAA;IACrB,IAAIA,MAAA,CAAOC,OAAA,CAAQ,qDAAqD,GAAG;MACzE;IACF;IAGA,MAAMC,YAAA,IAAgBpB,MAAA,CAAOC,YAAA,CAAa,GAAGoB,QAAA,CAAS,EAAEC,MAAA,IAAU,KAAK;IACvE,IAAIF,YAAA,EAAc;IAGlB,MAAMG,cAAA,GAAiBP,KAAA,CAAMQ,aAAA;IAC7B9B,iBAAA,CAAkBY,OAAA,GAAUiB,cAAA;IAC5BA,cAAA,CAAeE,iBAAA,CAAkBT,KAAA,CAAMH,SAAS;IAEhDtB,YAAA,CAAae,OAAA,GAAU;MACrBoB,MAAA,EAAQV,KAAA,CAAMW,OAAA;MACdC,MAAA,EAAQZ,KAAA,CAAMa,OAAA;MACdC,SAAA,EAAWC,IAAA,CAAKC,GAAA,CAAI;MACpBnB,SAAA,EAAWG,KAAA,CAAMH;IACnB;IAGAf,wBAAA,CAAyB;IAEzBT,aAAA,CAAc,IAAI;IAClBJ,WAAA,GAAc;EAChB,GACA,CAACH,QAAA,EAAUG,WAAW,CACxB;EAEA,MAAMgD,iBAAA,GAAoBtE,KAAA,CAAMgD,WAAA,CAC7BK,KAAA,IAA8B;IAC7B,IAAI,CAACzB,YAAA,CAAae,OAAA,IAAWxB,QAAA,EAAU;IAEvC,MAAMoD,MAAA,GAASlB,KAAA,CAAMW,OAAA,GAAUpC,YAAA,CAAae,OAAA,CAAQoB,MAAA;IACpD,MAAMS,MAAA,GAASnB,KAAA,CAAMa,OAAA,GAAUtC,YAAA,CAAae,OAAA,CAAQsB,MAAA;IAGpD,IAAI,CAACnC,kBAAA,CAAmBa,OAAA,KAAYrC,IAAA,CAAKC,GAAA,CAAIgE,MAAM,IAAI,KAAKjE,IAAA,CAAKC,GAAA,CAAIiE,MAAM,IAAI,IAAI;MACjF1C,kBAAA,CAAmBa,OAAA,GAAUrC,IAAA,CAAKC,GAAA,CAAIgE,MAAM,IAAIjE,IAAA,CAAKC,GAAA,CAAIiE,MAAM,IAAI,MAAM;IAC3E;IAEA,IAAIC,OAAA,GAAU;IACd,IAAIC,OAAA,GAAU;IAId,IAAIzD,SAAA,KAAc,SAAS;MACzBwD,OAAA,GAAUF,MAAA,GAAS,IAAI3D,UAAA,CAAW2D,MAAM,IAAIrE,QAAA,CAASqE,MAAM;IAC7D,WAAWtD,SAAA,KAAc,QAAQ;MAC/BwD,OAAA,GAAUF,MAAA,GAAS,IAAI3D,UAAA,CAAW2D,MAAM,IAAI,CAACrE,QAAA,CAAS,CAACqE,MAAM;IAC/D,WAAWtD,SAAA,KAAc,QAAQ;MAC/ByD,OAAA,GAAUF,MAAA,GAAS,IAAI5D,UAAA,CAAW4D,MAAM,IAAItE,QAAA,CAASsE,MAAM;IAC7D,WAAWvD,SAAA,KAAc,MAAM;MAC7ByD,OAAA,GAAUF,MAAA,GAAS,IAAI5D,UAAA,CAAW4D,MAAM,IAAI,CAACtE,QAAA,CAAS,CAACsE,MAAM;IAC/D,WAAWvD,SAAA,KAAc,cAAc;MACrCwD,OAAA,GAAU7D,UAAA,CAAW2D,MAAM;IAC7B,WAAWtD,SAAA,KAAc,YAAY;MACnCyD,OAAA,GAAU9D,UAAA,CAAW4D,MAAM;IAC7B;IAGAnD,UAAA,CAAWoD,OAAA,EAASC,OAAO;EAC7B,GACA,CAACvD,QAAA,EAAUF,SAAA,EAAWG,QAAA,EAAUY,YAAA,EAAcC,UAAA,EAAYZ,UAAU,CACtE;EAEA,MAAMsD,eAAA,GAAkB3E,KAAA,CAAMgD,WAAA,CAC3BK,KAAA,IAA8B;IAC7B,IAAI,CAACzB,YAAA,CAAae,OAAA,IAAWxB,QAAA,EAAU;IAEvC,MAAMoD,MAAA,GAASlB,KAAA,CAAMW,OAAA,GAAUpC,YAAA,CAAae,OAAA,CAAQoB,MAAA;IACpD,MAAMS,MAAA,GAASnB,KAAA,CAAMa,OAAA,GAAUtC,YAAA,CAAae,OAAA,CAAQsB,MAAA;IACpD,MAAMW,SAAA,GAAYR,IAAA,CAAKC,GAAA,CAAI,IAAIzC,YAAA,CAAae,OAAA,CAAQwB,SAAA;IAEpD,MAAMU,SAAA,GAAYvE,IAAA,CAAKC,GAAA,CAAIgE,MAAM,IAAIK,SAAA;IACrC,MAAME,SAAA,GAAYxE,IAAA,CAAKC,GAAA,CAAIiE,MAAM,IAAII,SAAA;IAErC,MAAMG,eAAA,GAAkBjD,kBAAA,CAAmBa,OAAA;IAI3C,MAAMqC,mBAAA,GACHD,eAAA,KAAoB,OAAO/C,YAAA,IAC3B+C,eAAA,KAAoB,OAAO9C,UAAA;IAE9B,MAAMgD,aAAA,GAAgBjD,YAAA,GAAeuC,MAAA,GAASC,MAAA;IAC9C,MAAMU,gBAAA,GAAmBlD,YAAA,GAAe6C,SAAA,GAAYC,SAAA;IAEpD,MAAMK,eAAA,GAAkB7E,IAAA,CAAKC,GAAA,CAAI0E,aAAa,KAAK/D,SAAA;IACnD,MAAMkE,WAAA,GAAcF,gBAAA,GAAmBjF,kBAAA;IAGvC,IAAIoF,aAAA,GAAyD;IAG7D,IAAI,CAACL,mBAAA,EAAqB;MACxB,IAAI/D,SAAA,KAAc,WAAWsD,MAAA,GAAS,GAAGc,aAAA,GAAgB,iBAChDpE,SAAA,KAAc,UAAUsD,MAAA,GAAS,GAAGc,aAAA,GAAgB,gBACpDpE,SAAA,KAAc,cAAc;QACnC,IAAIX,IAAA,CAAKC,GAAA,CAAIgE,MAAM,IAAIjE,IAAA,CAAKC,GAAA,CAAIiE,MAAM,GAAG;UACvCa,aAAA,GAAgBd,MAAA,GAAS,IAAI,UAAU;QACzC;MACF,WAAWtD,SAAA,KAAc,UAAUuD,MAAA,GAAS,GAAGa,aAAA,GAAgB,gBACtDpE,SAAA,KAAc,QAAQuD,MAAA,GAAS,GAAGa,aAAA,GAAgB,cAClDpE,SAAA,KAAc,YAAY;QACjC,IAAIX,IAAA,CAAKC,GAAA,CAAIiE,MAAM,IAAIlE,IAAA,CAAKC,GAAA,CAAIgE,MAAM,GAAG;UACvCc,aAAA,GAAgBb,MAAA,GAAS,IAAI,SAAS;QACxC;MACF;IACF;IAEA,MAAMc,aAAA,GAAgBD,aAAA,KAAkBF,eAAA,IAAmBC,WAAA;IAG3D,IAAIrD,iBAAA,CAAkBY,OAAA,EAAS;MAC7B,IAAI;QACFZ,iBAAA,CAAkBY,OAAA,CAAQQ,qBAAA,CAAsBE,KAAA,CAAMH,SAAS;MACjE,QAAQ,CAER;IACF;IAGAH,OAAA,CAAQ;IAER,IAAIuC,aAAA,IAAiBD,aAAA,EAAe;MAClC9D,SAAA,CAAU8D,aAAA,EAAeH,gBAAgB;IAC3C,OAAO;MACL1D,QAAA,CAAS;IACX;EACF,GACA,CACEL,QAAA,EACAF,SAAA,EACAC,SAAA,EACAc,YAAA,EACAC,UAAA,EACAV,SAAA,EACAC,QAAA,EACAuB,OAAA,CAEJ;EAEA,MAAMwC,mBAAA,GAAsBvF,KAAA,CAAMgD,WAAA,CAC/BK,KAAA,IAA8B;IAE7B,IAAItB,iBAAA,CAAkBY,OAAA,EAAS;MAC7B,IAAI;QACFZ,iBAAA,CAAkBY,OAAA,CAAQQ,qBAAA,CAAsBE,KAAA,CAAMH,SAAS;MACjE,QAAQ,CAER;IACF;IAEAH,OAAA,CAAQ;IACRvB,QAAA,CAAS;EACX,GACA,CAACA,QAAA,EAAUuB,OAAO,CACpB;EAGA,MAAMyC,wBAAA,GAA2BxF,KAAA,CAAMgD,WAAA,CAAY,MAAM;IACvD,IAAIpB,YAAA,CAAae,OAAA,EAAS;MACxBI,OAAA,CAAQ;MACRvB,QAAA,CAAS;IACX;EACF,GAAG,CAACA,QAAA,EAAUuB,OAAO,CAAC;EAEtB,MAAM0C,eAAA,GAAkB;IACtBC,aAAA,EAAetC,iBAAA;IACfuC,aAAA,EAAerB,iBAAA;IACfsB,WAAA,EAAajB,eAAA;IACbkB,eAAA,EAAiBN,mBAAA;IACjBO,oBAAA,EAAsBN;EACxB;EAEA,OAAO;IACL/D,UAAA;IACAgE,eAAA;IACAM,OAAA,EAAS;EACX;AACF","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"useAnimatedDragGesture.js","names":[],"sources":["esm/useAnimatedDragGesture.js"],"sourcesContent":["import * as React from \"react\";\nconst VELOCITY_THRESHOLD = 0.11;\nfunction resisted(delta, maxResist = 25) {\n if (delta >= 0) return delta;\n const pastBoundary = Math.abs(delta);\n const resistedDistance = Math.sqrt(pastBoundary) * 2;\n return -Math.min(resistedDistance, maxResist);\n}\nconst EXIT_DRAG_CAP = 80;\nfunction cappedExit(delta) {\n if (Math.abs(delta) <= EXIT_DRAG_CAP) return delta;\n const sign = delta > 0 ? 1 : -1;\n const overshoot = Math.abs(delta) - EXIT_DRAG_CAP;\n return sign * (EXIT_DRAG_CAP + Math.sqrt(overshoot) * 2);\n}\nfunction useAnimatedDragGesture(options) {\n const {\n direction,\n threshold,\n disabled,\n expanded,\n onDragMove,\n onDragStart,\n onDismiss,\n onCancel\n } = options;\n const [isDragging, setIsDragging] = React.useState(false);\n const dragStartRef = React.useRef(null);\n const lockedDirectionRef = React.useRef(null);\n const captureElementRef = React.useRef(null);\n const isHorizontal = direction === \"left\" || direction === \"right\" || direction === \"horizontal\";\n const isVertical = direction === \"up\" || direction === \"down\" || direction === \"vertical\";\n const preventSelectRef = React.useRef(null);\n function startPreventingSelection() {\n if (typeof document === \"undefined\") return;\n window.getSelection()?.removeAllRanges();\n const handler = (e) => e.preventDefault();\n preventSelectRef.current = handler;\n document.addEventListener(\"selectstart\", handler, true);\n }\n function stopPreventingSelection() {\n if (preventSelectRef.current) {\n document.removeEventListener(\"selectstart\", preventSelectRef.current, true);\n preventSelectRef.current = null;\n }\n }\n const cleanup = React.useCallback(() => {\n dragStartRef.current = null;\n lockedDirectionRef.current = null;\n setIsDragging(false);\n stopPreventingSelection();\n }, []);\n React.useEffect(() => {\n return () => {\n if (dragStartRef.current) {\n if (captureElementRef.current && dragStartRef.current.pointerId) {\n try {\n captureElementRef.current.releasePointerCapture(\n dragStartRef.current.pointerId\n );\n } catch {\n }\n }\n cleanup();\n }\n };\n }, [cleanup]);\n const handlePointerDown = React.useCallback(\n (event) => {\n if (disabled) return;\n if (event.button !== 0) return;\n const target = event.target;\n if (target.closest('button, a, input, textarea, select, [role=\"button\"]')) {\n return;\n }\n const hasSelection = (window.getSelection()?.toString().length ?? 0) > 0;\n if (hasSelection) return;\n const captureElement = event.currentTarget;\n captureElementRef.current = captureElement;\n captureElement.setPointerCapture(event.pointerId);\n dragStartRef.current = {\n startX: event.clientX,\n startY: event.clientY,\n startTime: Date.now(),\n pointerId: event.pointerId\n };\n startPreventingSelection();\n setIsDragging(true);\n onDragStart?.();\n },\n [disabled, onDragStart]\n );\n const handlePointerMove = React.useCallback(\n (event) => {\n if (!dragStartRef.current || disabled) return;\n const deltaX = event.clientX - dragStartRef.current.startX;\n const deltaY = event.clientY - dragStartRef.current.startY;\n if (!lockedDirectionRef.current && (Math.abs(deltaX) > 1 || Math.abs(deltaY) > 1)) {\n lockedDirectionRef.current = Math.abs(deltaX) > Math.abs(deltaY) ? \"x\" : \"y\";\n }\n let offsetX = 0;\n let offsetY = 0;\n if (direction === \"right\") {\n offsetX = deltaX > 0 ? cappedExit(deltaX) : resisted(deltaX);\n } else if (direction === \"left\") {\n offsetX = deltaX < 0 ? cappedExit(deltaX) : -resisted(-deltaX);\n } else if (direction === \"down\") {\n offsetY = deltaY > 0 ? cappedExit(deltaY) : resisted(deltaY);\n } else if (direction === \"up\") {\n offsetY = deltaY < 0 ? cappedExit(deltaY) : -resisted(-deltaY);\n } else if (direction === \"horizontal\") {\n offsetX = cappedExit(deltaX);\n } else if (direction === \"vertical\") {\n offsetY = cappedExit(deltaY);\n }\n onDragMove(offsetX, offsetY);\n },\n [disabled, direction, expanded, isHorizontal, isVertical, onDragMove]\n );\n const handlePointerUp = React.useCallback(\n (event) => {\n if (!dragStartRef.current || disabled) return;\n const deltaX = event.clientX - dragStartRef.current.startX;\n const deltaY = event.clientY - dragStartRef.current.startY;\n const timeTaken = Date.now() - dragStartRef.current.startTime;\n const velocityX = Math.abs(deltaX) / timeTaken;\n const velocityY = Math.abs(deltaY) / timeTaken;\n const lockedDirection = lockedDirectionRef.current;\n const isLockedToWrongAxis = lockedDirection === \"y\" && isHorizontal || lockedDirection === \"x\" && isVertical;\n const relevantDelta = isHorizontal ? deltaX : deltaY;\n const relevantVelocity = isHorizontal ? velocityX : velocityY;\n const passedThreshold = Math.abs(relevantDelta) >= threshold;\n const hasVelocity = relevantVelocity > VELOCITY_THRESHOLD;\n let exitDirection = null;\n if (!isLockedToWrongAxis) {\n if (direction === \"right\" && deltaX > 0) exitDirection = \"right\";\n else if (direction === \"left\" && deltaX < 0) exitDirection = \"left\";\n else if (direction === \"horizontal\") {\n if (Math.abs(deltaX) > Math.abs(deltaY)) {\n exitDirection = deltaX > 0 ? \"right\" : \"left\";\n }\n } else if (direction === \"down\" && deltaY > 0) exitDirection = \"down\";\n else if (direction === \"up\" && deltaY < 0) exitDirection = \"up\";\n else if (direction === \"vertical\") {\n if (Math.abs(deltaY) > Math.abs(deltaX)) {\n exitDirection = deltaY > 0 ? \"down\" : \"up\";\n }\n }\n }\n const shouldDismiss = exitDirection && (passedThreshold || hasVelocity);\n if (captureElementRef.current) {\n try {\n captureElementRef.current.releasePointerCapture(event.pointerId);\n } catch {\n }\n }\n cleanup();\n if (shouldDismiss && exitDirection) {\n onDismiss(exitDirection, relevantVelocity);\n } else {\n onCancel();\n }\n },\n [\n disabled,\n direction,\n threshold,\n isHorizontal,\n isVertical,\n onDismiss,\n onCancel,\n cleanup\n ]\n );\n const handlePointerCancel = React.useCallback(\n (event) => {\n if (captureElementRef.current) {\n try {\n captureElementRef.current.releasePointerCapture(event.pointerId);\n } catch {\n }\n }\n cleanup();\n onCancel();\n },\n [onCancel, cleanup]\n );\n const handleLostPointerCapture = React.useCallback(() => {\n if (dragStartRef.current) {\n cleanup();\n onCancel();\n }\n }, [onCancel, cleanup]);\n const gestureHandlers = {\n onPointerDown: handlePointerDown,\n onPointerMove: handlePointerMove,\n onPointerUp: handlePointerUp,\n onPointerCancel: handlePointerCancel,\n onLostPointerCapture: handleLostPointerCapture\n };\n return {\n isDragging,\n gestureHandlers,\n gesture: null\n };\n}\nexport {\n useAnimatedDragGesture\n};\n//# sourceMappingURL=useAnimatedDragGesture.js.map\n"],"mappings":"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"}
|