@tamagui/native 2.7.7 → 3.0.0-beta.1097.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/PressBoundary.cjs +15 -80
- package/dist/cjs/PressBoundary.native.cjs +85 -0
- package/dist/cjs/PressBoundary.native.js +64 -82
- package/dist/cjs/PressBoundary.native.js.map +1 -1
- package/dist/cjs/burntState.cjs +28 -32
- package/dist/cjs/burntState.native.cjs +44 -0
- package/dist/cjs/burntState.native.js +28 -31
- package/dist/cjs/burntState.native.js.map +1 -1
- package/dist/cjs/components.cjs +34 -55
- package/dist/cjs/components.native.cjs +55 -0
- package/dist/cjs/components.native.js +34 -54
- package/dist/cjs/components.native.js.map +1 -1
- package/dist/cjs/expoUIMenuAdapter.cjs +239 -254
- package/dist/cjs/expoUIMenuAdapter.native.cjs +310 -0
- package/dist/cjs/expoUIMenuAdapter.native.js +282 -305
- package/dist/cjs/expoUIMenuAdapter.native.js.map +1 -1
- package/dist/cjs/gesture-handler.cjs +20 -22
- package/dist/cjs/gesture-handler.native.cjs +37 -0
- package/dist/cjs/gesture-handler.native.js +20 -21
- package/dist/cjs/gesture-handler.native.js.map +1 -1
- package/dist/cjs/gestureState.cjs +201 -207
- package/dist/cjs/gestureState.native.cjs +261 -0
- package/dist/cjs/gestureState.native.js +214 -219
- package/dist/cjs/gestureState.native.js.map +1 -1
- package/dist/cjs/globalState.cjs +30 -34
- package/dist/cjs/globalState.native.cjs +43 -0
- package/dist/cjs/globalState.native.js +30 -33
- package/dist/cjs/globalState.native.js.map +1 -1
- package/dist/cjs/index.cjs +33 -34
- package/dist/cjs/index.native.cjs +58 -0
- package/dist/cjs/index.native.js +33 -33
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboardControllerState.cjs +27 -29
- package/dist/cjs/keyboardControllerState.native.cjs +49 -0
- package/dist/cjs/keyboardControllerState.native.js +27 -28
- package/dist/cjs/keyboardControllerState.native.js.map +1 -1
- package/dist/cjs/linearGradientState.cjs +27 -31
- package/dist/cjs/linearGradientState.native.cjs +43 -0
- package/dist/cjs/linearGradientState.native.js +27 -30
- package/dist/cjs/linearGradientState.native.js.map +1 -1
- package/dist/cjs/nativeMenuContext.cjs +14 -18
- package/dist/cjs/nativeMenuContext.native.cjs +27 -0
- package/dist/cjs/nativeMenuContext.native.js +14 -17
- package/dist/cjs/nativeMenuContext.native.js.map +1 -1
- package/dist/cjs/nativeMenuState.cjs +26 -28
- package/dist/cjs/nativeMenuState.native.cjs +46 -0
- package/dist/cjs/nativeMenuState.native.js +26 -27
- package/dist/cjs/nativeMenuState.native.js.map +1 -1
- package/dist/cjs/portalState.cjs +27 -31
- package/dist/cjs/portalState.native.cjs +43 -0
- package/dist/cjs/portalState.native.js +27 -30
- package/dist/cjs/portalState.native.js.map +1 -1
- package/dist/cjs/safeAreaState.cjs +76 -53
- package/dist/cjs/safeAreaState.native.cjs +100 -0
- package/dist/cjs/safeAreaState.native.js +78 -52
- package/dist/cjs/safeAreaState.native.js.map +1 -1
- package/dist/cjs/setup-burnt.cjs +14 -14
- package/dist/cjs/setup-burnt.native.cjs +19 -0
- package/dist/cjs/setup-burnt.native.js +14 -13
- package/dist/cjs/setup-burnt.native.js.map +1 -1
- package/dist/cjs/setup-expo-linear-gradient.cjs +13 -13
- package/dist/cjs/setup-expo-linear-gradient.native.cjs +18 -0
- package/dist/cjs/setup-expo-linear-gradient.native.js +13 -12
- package/dist/cjs/setup-expo-linear-gradient.native.js.map +1 -1
- package/dist/cjs/setup-expo-ui-menu.cjs +11 -13
- package/dist/cjs/setup-expo-ui-menu.native.cjs +17 -0
- package/dist/cjs/setup-expo-ui-menu.native.js +11 -12
- package/dist/cjs/setup-expo-ui-menu.native.js.map +1 -1
- package/dist/cjs/setup-gesture-handler.cjs +50 -57
- package/dist/cjs/setup-gesture-handler.native.cjs +71 -0
- package/dist/cjs/setup-gesture-handler.native.js +50 -56
- package/dist/cjs/setup-gesture-handler.native.js.map +1 -1
- package/dist/cjs/setup-keyboard-controller.native.cjs +27 -0
- package/dist/cjs/setup-keyboard-controller.native.js +22 -29
- package/dist/cjs/setup-keyboard-controller.native.js.map +1 -1
- package/dist/cjs/setup-safe-area.cjs +16 -3
- package/dist/cjs/setup-safe-area.native.cjs +27 -0
- package/dist/cjs/setup-safe-area.native.js +22 -16
- package/dist/cjs/setup-safe-area.native.js.map +1 -1
- package/dist/cjs/setup-teleport.cjs +15 -15
- package/dist/cjs/setup-teleport.native.cjs +20 -0
- package/dist/cjs/setup-teleport.native.js +15 -14
- package/dist/cjs/setup-teleport.native.js.map +1 -1
- package/dist/cjs/setup-worklets.cjs +18 -18
- package/dist/cjs/setup-worklets.native.cjs +23 -0
- package/dist/cjs/setup-worklets.native.js +18 -17
- package/dist/cjs/setup-worklets.native.js.map +1 -1
- package/dist/cjs/setup-zeego.cjs +17 -17
- package/dist/cjs/setup-zeego.native.cjs +22 -0
- package/dist/cjs/setup-zeego.native.js +17 -16
- package/dist/cjs/setup-zeego.native.js.map +1 -1
- package/dist/cjs/types.cjs +9 -11
- package/dist/cjs/types.native.cjs +18 -0
- package/dist/cjs/types.native.js +9 -10
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/workletsState.cjs +30 -34
- package/dist/cjs/workletsState.native.cjs +46 -0
- package/dist/cjs/workletsState.native.js +30 -33
- package/dist/cjs/workletsState.native.js.map +1 -1
- package/dist/esm/PressBoundary.mjs +5 -53
- package/dist/esm/PressBoundary.mjs.map +1 -1
- package/dist/esm/PressBoundary.native.js +48 -56
- package/dist/esm/PressBoundary.native.js.map +1 -1
- package/dist/esm/burntState.mjs +16 -14
- package/dist/esm/burntState.mjs.map +1 -1
- package/dist/esm/burntState.native.js +16 -14
- package/dist/esm/burntState.native.js.map +1 -1
- package/dist/esm/components.mjs +20 -37
- package/dist/esm/components.mjs.map +1 -1
- package/dist/esm/components.native.js +21 -38
- package/dist/esm/components.native.js.map +1 -1
- package/dist/esm/expoUIMenuAdapter.mjs +224 -228
- package/dist/esm/expoUIMenuAdapter.mjs.map +1 -1
- package/dist/esm/expoUIMenuAdapter.native.js +267 -280
- package/dist/esm/expoUIMenuAdapter.native.js.map +1 -1
- package/dist/esm/gesture-handler.mjs +3 -4
- package/dist/esm/gesture-handler.native.js +3 -4
- package/dist/esm/gestureState.mjs +185 -187
- package/dist/esm/gestureState.mjs.map +1 -1
- package/dist/esm/gestureState.native.js +198 -200
- package/dist/esm/gestureState.native.js.map +1 -1
- package/dist/esm/globalState.mjs +17 -16
- package/dist/esm/globalState.mjs.map +1 -1
- package/dist/esm/globalState.native.js +17 -16
- package/dist/esm/globalState.native.js.map +1 -1
- package/dist/esm/index.js +5 -6
- package/dist/esm/index.mjs +5 -6
- package/dist/esm/index.native.js +5 -6
- package/dist/esm/keyboardControllerState.mjs +13 -11
- package/dist/esm/keyboardControllerState.mjs.map +1 -1
- package/dist/esm/keyboardControllerState.native.js +13 -11
- package/dist/esm/keyboardControllerState.native.js.map +1 -1
- package/dist/esm/linearGradientState.mjs +15 -13
- package/dist/esm/linearGradientState.mjs.map +1 -1
- package/dist/esm/linearGradientState.native.js +15 -13
- package/dist/esm/linearGradientState.native.js.map +1 -1
- package/dist/esm/nativeMenuContext.mjs +2 -0
- package/dist/esm/nativeMenuContext.mjs.map +1 -1
- package/dist/esm/nativeMenuContext.native.js +2 -0
- package/dist/esm/nativeMenuContext.native.js.map +1 -1
- package/dist/esm/nativeMenuState.mjs +13 -11
- package/dist/esm/nativeMenuState.mjs.map +1 -1
- package/dist/esm/nativeMenuState.native.js +13 -11
- package/dist/esm/nativeMenuState.native.js.map +1 -1
- package/dist/esm/portalState.mjs +15 -13
- package/dist/esm/portalState.mjs.map +1 -1
- package/dist/esm/portalState.native.js +15 -13
- package/dist/esm/portalState.native.js.map +1 -1
- package/dist/esm/safeAreaState.mjs +64 -38
- package/dist/esm/safeAreaState.mjs.map +1 -1
- package/dist/esm/safeAreaState.native.js +66 -38
- package/dist/esm/safeAreaState.native.js.map +1 -1
- package/dist/esm/setup-burnt.mjs +20 -13
- package/dist/esm/setup-burnt.mjs.map +1 -1
- package/dist/esm/setup-burnt.native.js +20 -13
- package/dist/esm/setup-burnt.native.js.map +1 -1
- package/dist/esm/setup-expo-linear-gradient.mjs +19 -12
- package/dist/esm/setup-expo-linear-gradient.mjs.map +1 -1
- package/dist/esm/setup-expo-linear-gradient.native.js +19 -12
- package/dist/esm/setup-expo-linear-gradient.native.js.map +1 -1
- package/dist/esm/setup-expo-ui-menu.mjs +17 -12
- package/dist/esm/setup-expo-ui-menu.mjs.map +1 -1
- package/dist/esm/setup-expo-ui-menu.native.js +17 -12
- package/dist/esm/setup-expo-ui-menu.native.js.map +1 -1
- package/dist/esm/setup-gesture-handler.mjs +42 -40
- package/dist/esm/setup-gesture-handler.mjs.map +1 -1
- package/dist/esm/setup-gesture-handler.native.js +42 -40
- package/dist/esm/setup-gesture-handler.native.js.map +1 -1
- package/dist/esm/setup-keyboard-controller.mjs +0 -2
- package/dist/esm/setup-keyboard-controller.native.js +28 -29
- package/dist/esm/setup-keyboard-controller.native.js.map +1 -1
- package/dist/esm/setup-safe-area.mjs +0 -4
- package/dist/esm/setup-safe-area.native.js +23 -22
- package/dist/esm/setup-safe-area.native.js.map +1 -1
- package/dist/esm/setup-teleport.mjs +21 -14
- package/dist/esm/setup-teleport.mjs.map +1 -1
- package/dist/esm/setup-teleport.native.js +21 -14
- package/dist/esm/setup-teleport.native.js.map +1 -1
- package/dist/esm/setup-worklets.mjs +24 -17
- package/dist/esm/setup-worklets.mjs.map +1 -1
- package/dist/esm/setup-worklets.native.js +24 -17
- package/dist/esm/setup-worklets.native.js.map +1 -1
- package/dist/esm/setup-zeego.mjs +23 -16
- package/dist/esm/setup-zeego.mjs.map +1 -1
- package/dist/esm/setup-zeego.native.js +23 -16
- package/dist/esm/setup-zeego.native.js.map +1 -1
- package/dist/esm/types.mjs +0 -2
- package/dist/esm/types.native.js +0 -2
- package/dist/esm/workletsState.mjs +18 -16
- package/dist/esm/workletsState.mjs.map +1 -1
- package/dist/esm/workletsState.native.js +18 -16
- package/dist/esm/workletsState.native.js.map +1 -1
- package/package.json +87 -8
- package/src/PressBoundary.native.tsx +75 -0
- package/src/PressBoundary.tsx +16 -80
- package/src/expoUIMenuAdapter.tsx +1 -2
- package/src/gesture-handler.ts +1 -1
- package/src/gestureState.ts +2 -2
- package/src/index.ts +1 -1
- package/src/safeAreaState.ts +59 -27
- package/src/setup-safe-area.ts +27 -22
- package/src/setup-safe-area.web.ts +2 -0
- package/src/types.ts +12 -0
- package/types/PressBoundary.d.ts +13 -12
- package/types/PressBoundary.d.ts.map +2 -2
- package/types/PressBoundary.native.d.ts +8 -0
- package/types/PressBoundary.native.d.ts.map +11 -0
- package/types/expoUIMenuAdapter.d.ts.map +2 -2
- package/types/gesture-handler.d.ts +1 -1
- package/types/gesture-handler.d.ts.map +1 -1
- package/types/gestureState.d.ts.map +1 -1
- package/types/index.d.ts +1 -1
- package/types/index.d.ts.map +2 -2
- package/types/safeAreaState.d.ts +5 -2
- package/types/safeAreaState.d.ts.map +2 -2
- package/types/setup-safe-area.d.ts.map +1 -1
- package/types/setup-safe-area.web.d.ts +3 -0
- package/types/setup-safe-area.web.d.ts.map +11 -0
- package/types/types.d.ts +11 -0
- package/types/types.d.ts.map +2 -2
- package/.turbo/turbo-build.log +0 -2
- package/dist/esm/gesture-handler.mjs.map +0 -1
- package/dist/esm/gesture-handler.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/setup-keyboard-controller.mjs.map +0 -1
- package/dist/esm/setup-safe-area.mjs.map +0 -1
- package/dist/esm/types.mjs.map +0 -1
- package/dist/esm/types.native.js.map +0 -1
- package/tsconfig.json +0 -12
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { getGestureHandler } from "./gestureState.mjs";
|
|
2
|
-
import { claimExternalPressOwnership, hasExternalPressOwnership, releaseExternalPressOwnership } from "./gestureState.mjs";
|
|
1
|
+
import { claimExternalPressOwnership, getGestureHandler, hasExternalPressOwnership, releaseExternalPressOwnership } from "./gestureState.mjs";
|
|
3
2
|
import { PressBoundary } from "./PressBoundary.mjs";
|
|
4
3
|
import { getGestureHandlerConfig, setupGestureHandler } from "./setup-gesture-handler.mjs";
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
export { PressBoundary, getGestureHandler, getGestureHandlerConfig, setupGestureHandler, claimExternalPressOwnership as unstable_claimExternalPressOwnership, hasExternalPressOwnership as unstable_hasExternalPressOwnership, releaseExternalPressOwnership as unstable_releaseExternalPressOwnership };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import { getGestureHandler } from "./gestureState.native.js";
|
|
2
|
-
import { claimExternalPressOwnership, hasExternalPressOwnership, releaseExternalPressOwnership } from "./gestureState.native.js";
|
|
1
|
+
import { claimExternalPressOwnership, getGestureHandler, hasExternalPressOwnership, releaseExternalPressOwnership } from "./gestureState.native.js";
|
|
3
2
|
import { PressBoundary } from "./PressBoundary.native.js";
|
|
4
3
|
import { getGestureHandlerConfig, setupGestureHandler } from "./setup-gesture-handler.native.js";
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
|
|
5
|
+
export { PressBoundary, getGestureHandler, getGestureHandlerConfig, setupGestureHandler, claimExternalPressOwnership as unstable_claimExternalPressOwnership, hasExternalPressOwnership as unstable_hasExternalPressOwnership, releaseExternalPressOwnership as unstable_releaseExternalPressOwnership };
|
|
@@ -1,38 +1,39 @@
|
|
|
1
1
|
import { createGlobalState } from "./globalState.mjs";
|
|
2
|
+
|
|
2
3
|
const state = createGlobalState(`gesture`, {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
enabled: false,
|
|
5
|
+
Gesture: null,
|
|
6
|
+
GestureDetector: null,
|
|
7
|
+
ScrollView: null,
|
|
8
|
+
RootView: null
|
|
8
9
|
});
|
|
9
10
|
const GESTURE_ENABLED_FREEZE_KEY = "__tamagui_gesture_enabled_freeze__";
|
|
10
11
|
function getGestureEnabledFreezeState() {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
const g = globalThis;
|
|
13
|
+
if (!g[GESTURE_ENABLED_FREEZE_KEY]) {
|
|
14
|
+
g[GESTURE_ENABLED_FREEZE_KEY] = {
|
|
15
|
+
frozen: false,
|
|
16
|
+
enabled: false,
|
|
17
|
+
warned: false
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return g[GESTURE_ENABLED_FREEZE_KEY];
|
|
20
21
|
}
|
|
21
22
|
function warnGestureEnabledMutationIgnored(source) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
const freezeState = getGestureEnabledFreezeState();
|
|
24
|
+
if (freezeState.warned || process.env.NODE_ENV === "production") {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
freezeState.warned = true;
|
|
28
|
+
console.warn(`[Tamagui] Ignored ${source} because gesture handler press events were already ${freezeState.enabled ? "enabled" : "disabled"} when TamaguiProvider mounted. Configure gesture handler mode before the first render.`);
|
|
28
29
|
}
|
|
29
30
|
function canChangeGestureHandlerEnabled(nextEnabled, source) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
const freezeState = getGestureEnabledFreezeState();
|
|
32
|
+
if (!freezeState.frozen || freezeState.enabled === nextEnabled) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
warnGestureEnabledMutationIgnored(source);
|
|
36
|
+
return false;
|
|
36
37
|
}
|
|
37
38
|
let pressGestureDebugId = 0;
|
|
38
39
|
let externalPressDebugId = 0;
|
|
@@ -40,181 +41,178 @@ const PRESS_MOVE_CANCEL_DISTANCE = 12;
|
|
|
40
41
|
const PRESS_MOVE_CANCEL_DISTANCE_SQ = PRESS_MOVE_CANCEL_DISTANCE * PRESS_MOVE_CANCEL_DISTANCE;
|
|
41
42
|
const PRESS_STATE_KEY = "__tamagui_press_state__";
|
|
42
43
|
function getEventPointerId(e) {
|
|
43
|
-
|
|
44
|
-
|
|
44
|
+
const pointerId = e?.pointerId ?? e?.pointer?.id ?? e?.event?.pointerId ?? e?.event?.pointer?.id ?? e?.nativeEvent?.pointerId ?? e?.nativeEvent?.id ?? e?.event?.nativeEvent?.pointerId ?? e?.event?.nativeEvent?.id ?? null;
|
|
45
|
+
return pointerId == null || Number.isNaN(pointerId) ? null : Number(pointerId);
|
|
45
46
|
}
|
|
46
47
|
const pressState = globalThis[PRESS_STATE_KEY] ??= {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
48
|
+
owner: null,
|
|
49
|
+
ownerId: null,
|
|
50
|
+
ownerSource: null,
|
|
51
|
+
ownerPointerId: null,
|
|
52
|
+
timestamp: 0
|
|
52
53
|
};
|
|
53
54
|
function resetPressOwner() {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
pressState.owner = null;
|
|
56
|
+
pressState.ownerId = null;
|
|
57
|
+
pressState.ownerSource = null;
|
|
58
|
+
pressState.ownerPointerId = null;
|
|
59
|
+
pressState.timestamp = 0;
|
|
59
60
|
}
|
|
60
61
|
function resetStaleOwner(now, debugName) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
if (now - pressState.timestamp > 2e3) {
|
|
63
|
+
resetPressOwner();
|
|
64
|
+
}
|
|
64
65
|
}
|
|
65
66
|
function claimExternalPressOwnership(debugName) {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
const now = Date.now();
|
|
68
|
+
resetStaleOwner(now, debugName);
|
|
69
|
+
const token = {};
|
|
70
|
+
const ownerId = ++externalPressDebugId;
|
|
71
|
+
pressState.owner = token;
|
|
72
|
+
pressState.ownerId = ownerId;
|
|
73
|
+
pressState.ownerSource = "external";
|
|
74
|
+
pressState.timestamp = now;
|
|
75
|
+
return token;
|
|
75
76
|
}
|
|
76
77
|
function releaseExternalPressOwnership(token, debugName) {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
if (!token || pressState.owner !== token) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
resetPressOwner();
|
|
81
82
|
}
|
|
82
83
|
function hasExternalPressOwnership() {
|
|
83
|
-
|
|
84
|
-
|
|
84
|
+
resetStaleOwner(Date.now());
|
|
85
|
+
return pressState.ownerSource === "external";
|
|
85
86
|
}
|
|
86
87
|
function getGestureHandler() {
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
if (config.hitSlop) longPress.hitSlop(config.hitSlop);
|
|
215
|
-
return Gesture.Exclusive(longPress, tap);
|
|
216
|
-
}
|
|
217
|
-
};
|
|
88
|
+
return {
|
|
89
|
+
get isEnabled() {
|
|
90
|
+
return state.get().enabled;
|
|
91
|
+
},
|
|
92
|
+
get state() {
|
|
93
|
+
return state.get();
|
|
94
|
+
},
|
|
95
|
+
set(updates) {
|
|
96
|
+
if (updates.enabled !== void 0 && !canChangeGestureHandlerEnabled(updates.enabled, "getGestureHandler().set()")) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
Object.assign(state.get(), updates);
|
|
100
|
+
},
|
|
101
|
+
disable() {
|
|
102
|
+
if (!canChangeGestureHandlerEnabled(false, "getGestureHandler().disable()")) {
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
state.get().enabled = false;
|
|
106
|
+
},
|
|
107
|
+
createPressGesture(config) {
|
|
108
|
+
const { Gesture } = state.get();
|
|
109
|
+
if (!Gesture) return null;
|
|
110
|
+
const longPressDuration = config.delayLongPress ?? 500;
|
|
111
|
+
const myToken = {};
|
|
112
|
+
const myDebugId = ++pressGestureDebugId;
|
|
113
|
+
const flags = {
|
|
114
|
+
didLongPress: false,
|
|
115
|
+
didPressIn: false,
|
|
116
|
+
pressInTimer: null,
|
|
117
|
+
moveStartX: null,
|
|
118
|
+
moveStartY: 0,
|
|
119
|
+
cancelledByMove: false
|
|
120
|
+
};
|
|
121
|
+
const GRACE_PERIOD_MS = process.env.TAMAGUI_RNGH_PRESS_DELAY ? +process.env.TAMAGUI_RNGH_PRESS_DELAY : 24;
|
|
122
|
+
const tryClaimOwnership = (e) => {
|
|
123
|
+
const now = Date.now();
|
|
124
|
+
resetStaleOwner(now, config.debugName);
|
|
125
|
+
const currentPointerId = getEventPointerId(e);
|
|
126
|
+
const isSameTouchPointer = currentPointerId == null || pressState.ownerPointerId == null || pressState.ownerPointerId === currentPointerId;
|
|
127
|
+
if (pressState.owner === null || pressState.ownerSource === "internal" && isSameTouchPointer) {
|
|
128
|
+
pressState.owner = myToken;
|
|
129
|
+
pressState.ownerId = myDebugId;
|
|
130
|
+
pressState.ownerSource = "internal";
|
|
131
|
+
pressState.ownerPointerId = currentPointerId;
|
|
132
|
+
pressState.timestamp = now;
|
|
133
|
+
}
|
|
134
|
+
return pressState.owner === myToken;
|
|
135
|
+
};
|
|
136
|
+
const isOwner = () => pressState.owner === myToken;
|
|
137
|
+
const releaseOwnership = () => {
|
|
138
|
+
if (flags.pressInTimer) {
|
|
139
|
+
clearTimeout(flags.pressInTimer);
|
|
140
|
+
flags.pressInTimer = null;
|
|
141
|
+
}
|
|
142
|
+
if (pressState.owner === myToken) {
|
|
143
|
+
resetPressOwner();
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
const firePressIn = (e) => {
|
|
147
|
+
if (!flags.didPressIn && isOwner()) {
|
|
148
|
+
flags.didPressIn = true;
|
|
149
|
+
config.onPressIn?.(e);
|
|
150
|
+
}
|
|
151
|
+
};
|
|
152
|
+
const schedulePressIn = (e) => {
|
|
153
|
+
if (flags.pressInTimer) {
|
|
154
|
+
clearTimeout(flags.pressInTimer);
|
|
155
|
+
}
|
|
156
|
+
flags.pressInTimer = setTimeout(() => {
|
|
157
|
+
flags.pressInTimer = null;
|
|
158
|
+
if (isOwner()) {
|
|
159
|
+
firePressIn(e);
|
|
160
|
+
}
|
|
161
|
+
}, GRACE_PERIOD_MS + 1);
|
|
162
|
+
};
|
|
163
|
+
const tap = Gesture.Tap().runOnJS(true).maxDuration(1e4).onBegin((e) => {
|
|
164
|
+
flags.didLongPress = false;
|
|
165
|
+
flags.didPressIn = false;
|
|
166
|
+
flags.cancelledByMove = false;
|
|
167
|
+
flags.moveStartX = typeof e.absoluteX === "number" ? e.absoluteX : null;
|
|
168
|
+
flags.moveStartY = typeof e.absoluteY === "number" ? e.absoluteY : 0;
|
|
169
|
+
tryClaimOwnership(e);
|
|
170
|
+
schedulePressIn(e);
|
|
171
|
+
}).onTouchesMove((e) => {
|
|
172
|
+
if (flags.cancelledByMove || flags.moveStartX === null) return;
|
|
173
|
+
const touch = e.changedTouches?.[0] ?? e.allTouches?.[0];
|
|
174
|
+
if (!touch) return;
|
|
175
|
+
const dx = touch.absoluteX - flags.moveStartX;
|
|
176
|
+
const dy = touch.absoluteY - flags.moveStartY;
|
|
177
|
+
if (dx * dx + dy * dy <= PRESS_MOVE_CANCEL_DISTANCE_SQ) return;
|
|
178
|
+
flags.cancelledByMove = true;
|
|
179
|
+
if (flags.pressInTimer) {
|
|
180
|
+
clearTimeout(flags.pressInTimer);
|
|
181
|
+
flags.pressInTimer = null;
|
|
182
|
+
}
|
|
183
|
+
if (flags.didPressIn) {
|
|
184
|
+
flags.didPressIn = false;
|
|
185
|
+
config.onPressOut?.(e);
|
|
186
|
+
}
|
|
187
|
+
releaseOwnership();
|
|
188
|
+
}).onEnd((e) => {
|
|
189
|
+
if (isOwner() && !flags.didLongPress && !flags.cancelledByMove) {
|
|
190
|
+
firePressIn(e);
|
|
191
|
+
config.onPress?.(e);
|
|
192
|
+
}
|
|
193
|
+
}).onFinalize((e) => {
|
|
194
|
+
if (isOwner()) {
|
|
195
|
+
config.onPressOut?.(e);
|
|
196
|
+
releaseOwnership();
|
|
197
|
+
} else if (flags.didPressIn) {
|
|
198
|
+
flags.didPressIn = false;
|
|
199
|
+
config.onPressOut?.(e);
|
|
200
|
+
}
|
|
201
|
+
});
|
|
202
|
+
if (config.hitSlop) tap.hitSlop(config.hitSlop);
|
|
203
|
+
if (!config.onLongPress) return tap;
|
|
204
|
+
const longPress = Gesture.LongPress().runOnJS(true).minDuration(longPressDuration).onStart((e) => {
|
|
205
|
+
flags.didLongPress = true;
|
|
206
|
+
if (isOwner()) {
|
|
207
|
+
firePressIn(e);
|
|
208
|
+
config.onLongPress?.(e);
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
if (config.hitSlop) longPress.hitSlop(config.hitSlop);
|
|
212
|
+
return Gesture.Exclusive(longPress, tap);
|
|
213
|
+
}
|
|
214
|
+
};
|
|
218
215
|
}
|
|
216
|
+
|
|
219
217
|
export { canChangeGestureHandlerEnabled, claimExternalPressOwnership, getGestureHandler, hasExternalPressOwnership, releaseExternalPressOwnership };
|
|
220
218
|
//# sourceMappingURL=gestureState.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createGlobalState","state","enabled","Gesture","GestureDetector","ScrollView","RootView","GESTURE_ENABLED_FREEZE_KEY","getGestureEnabledFreezeState","g","globalThis","frozen","warned","warnGestureEnabledMutationIgnored","source","freezeState","process","env","NODE_ENV","console","warn","canChangeGestureHandlerEnabled","nextEnabled","pressGestureDebugId","externalPressDebugId","PRESS_MOVE_CANCEL_DISTANCE","PRESS_MOVE_CANCEL_DISTANCE_SQ","PRESS_STATE_KEY","getEventPointerId","e","pointerId","pointer","id","event","nativeEvent","Number","isNaN","pressState","owner","ownerId","ownerSource","ownerPointerId","timestamp","resetPressOwner","resetStaleOwner","now","debugName","claimExternalPressOwnership","Date","token","releaseExternalPressOwnership","hasExternalPressOwnership","getGestureHandler","isEnabled","get","set","updates","Object","assign","disable","createPressGesture","config","longPressDuration","delayLongPress","myToken","myDebugId","flags","didLongPress","didPressIn","pressInTimer","moveStartX","moveStartY","cancelledByMove","GRACE_PERIOD_MS","TAMAGUI_RNGH_PRESS_DELAY","tryClaimOwnership","currentPointerId","isSameTouchPointer","isOwner","releaseOwnership","clearTimeout","firePressIn","onPressIn","schedulePressIn","setTimeout","tap","Tap","runOnJS","maxDuration","onBegin","absoluteX","absoluteY","onTouchesMove","touch","changedTouches","allTouches","dx","dy","onPressOut","onEnd","onPress","onFinalize","hitSlop","onLongPress","longPress","LongPress","minDuration","onStart","Exclusive"],"sources":["../../src/gestureState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"gestureState.js","names":[],"sources":["esm/gestureState.js"],"sourcesContent":["import { createGlobalState } from \"./globalState\";\nconst state = createGlobalState(`gesture`, {\n enabled: false,\n Gesture: null,\n GestureDetector: null,\n ScrollView: null,\n RootView: null\n});\nconst GESTURE_ENABLED_FREEZE_KEY = \"__tamagui_gesture_enabled_freeze__\";\nfunction getGestureEnabledFreezeState() {\n const g = globalThis;\n if (!g[GESTURE_ENABLED_FREEZE_KEY]) {\n g[GESTURE_ENABLED_FREEZE_KEY] = {\n frozen: false,\n enabled: false,\n warned: false\n };\n }\n return g[GESTURE_ENABLED_FREEZE_KEY];\n}\nfunction warnGestureEnabledMutationIgnored(source) {\n const freezeState = getGestureEnabledFreezeState();\n if (freezeState.warned || process.env.NODE_ENV === \"production\") {\n return;\n }\n freezeState.warned = true;\n console.warn(\n `[Tamagui] Ignored ${source} because gesture handler press events were already ${freezeState.enabled ? \"enabled\" : \"disabled\"} when TamaguiProvider mounted. Configure gesture handler mode before the first render.`\n );\n}\nfunction canChangeGestureHandlerEnabled(nextEnabled, source) {\n const freezeState = getGestureEnabledFreezeState();\n if (!freezeState.frozen || freezeState.enabled === nextEnabled) {\n return true;\n }\n warnGestureEnabledMutationIgnored(source);\n return false;\n}\nlet pressGestureDebugId = 0;\nlet externalPressDebugId = 0;\nconst PRESS_MOVE_CANCEL_DISTANCE = 12;\nconst PRESS_MOVE_CANCEL_DISTANCE_SQ = PRESS_MOVE_CANCEL_DISTANCE * PRESS_MOVE_CANCEL_DISTANCE;\nconst PRESS_STATE_KEY = \"__tamagui_press_state__\";\nfunction getEventPointerId(e) {\n const pointerId = e?.pointerId ?? e?.pointer?.id ?? e?.event?.pointerId ?? e?.event?.pointer?.id ?? e?.nativeEvent?.pointerId ?? e?.nativeEvent?.id ?? e?.event?.nativeEvent?.pointerId ?? e?.event?.nativeEvent?.id ?? null;\n return pointerId == null || Number.isNaN(pointerId) ? null : Number(pointerId);\n}\nconst pressState = globalThis[PRESS_STATE_KEY] ??= {\n owner: null,\n ownerId: null,\n ownerSource: null,\n ownerPointerId: null,\n timestamp: 0\n};\nfunction resetPressOwner() {\n pressState.owner = null;\n pressState.ownerId = null;\n pressState.ownerSource = null;\n pressState.ownerPointerId = null;\n pressState.timestamp = 0;\n}\nfunction resetStaleOwner(now, debugName) {\n if (now - pressState.timestamp > 2e3) {\n resetPressOwner();\n }\n}\nfunction claimExternalPressOwnership(debugName) {\n const now = Date.now();\n resetStaleOwner(now, debugName);\n const token = {};\n const ownerId = ++externalPressDebugId;\n pressState.owner = token;\n pressState.ownerId = ownerId;\n pressState.ownerSource = \"external\";\n pressState.timestamp = now;\n return token;\n}\nfunction releaseExternalPressOwnership(token, debugName) {\n if (!token || pressState.owner !== token) {\n return;\n }\n resetPressOwner();\n}\nfunction hasExternalPressOwnership() {\n resetStaleOwner(Date.now());\n return pressState.ownerSource === \"external\";\n}\nfunction getGestureHandler() {\n return {\n get isEnabled() {\n return state.get().enabled;\n },\n get state() {\n return state.get();\n },\n set(updates) {\n if (updates.enabled !== void 0 && !canChangeGestureHandlerEnabled(updates.enabled, \"getGestureHandler().set()\")) {\n return;\n }\n Object.assign(state.get(), updates);\n },\n disable() {\n if (!canChangeGestureHandlerEnabled(false, \"getGestureHandler().disable()\")) {\n return;\n }\n state.get().enabled = false;\n },\n createPressGesture(config) {\n const { Gesture } = state.get();\n if (!Gesture) return null;\n const longPressDuration = config.delayLongPress ?? 500;\n const myToken = {};\n const myDebugId = ++pressGestureDebugId;\n const flags = {\n didLongPress: false,\n didPressIn: false,\n pressInTimer: null,\n // absolute (screen) coords of the press start, and whether the finger\n // has since travelled far enough to be treated as a scroll/drag.\n moveStartX: null,\n moveStartY: 0,\n cancelledByMove: false\n };\n const GRACE_PERIOD_MS = process.env.TAMAGUI_RNGH_PRESS_DELAY ? +process.env.TAMAGUI_RNGH_PRESS_DELAY : 24;\n const tryClaimOwnership = (e) => {\n const now = Date.now();\n resetStaleOwner(now, config.debugName);\n const currentPointerId = getEventPointerId(e);\n const isSameTouchPointer = currentPointerId == null || pressState.ownerPointerId == null || pressState.ownerPointerId === currentPointerId;\n if (pressState.owner === null || pressState.ownerSource === \"internal\" && isSameTouchPointer) {\n pressState.owner = myToken;\n pressState.ownerId = myDebugId;\n pressState.ownerSource = \"internal\";\n pressState.ownerPointerId = currentPointerId;\n pressState.timestamp = now;\n }\n return pressState.owner === myToken;\n };\n const isOwner = () => pressState.owner === myToken;\n const releaseOwnership = () => {\n if (flags.pressInTimer) {\n clearTimeout(flags.pressInTimer);\n flags.pressInTimer = null;\n }\n if (pressState.owner === myToken) {\n resetPressOwner();\n }\n };\n const firePressIn = (e) => {\n if (!flags.didPressIn && isOwner()) {\n flags.didPressIn = true;\n config.onPressIn?.(e);\n }\n };\n const schedulePressIn = (e) => {\n if (flags.pressInTimer) {\n clearTimeout(flags.pressInTimer);\n }\n flags.pressInTimer = setTimeout(() => {\n flags.pressInTimer = null;\n if (isOwner()) {\n firePressIn(e);\n }\n }, GRACE_PERIOD_MS + 1);\n };\n const tap = Gesture.Tap().runOnJS(true).maxDuration(1e4).onBegin((e) => {\n flags.didLongPress = false;\n flags.didPressIn = false;\n flags.cancelledByMove = false;\n flags.moveStartX = typeof e.absoluteX === \"number\" ? e.absoluteX : null;\n flags.moveStartY = typeof e.absoluteY === \"number\" ? e.absoluteY : 0;\n tryClaimOwnership(e);\n schedulePressIn(e);\n }).onTouchesMove((e) => {\n if (flags.cancelledByMove || flags.moveStartX === null) return;\n const touch = e.changedTouches?.[0] ?? e.allTouches?.[0];\n if (!touch) return;\n const dx = touch.absoluteX - flags.moveStartX;\n const dy = touch.absoluteY - flags.moveStartY;\n if (dx * dx + dy * dy <= PRESS_MOVE_CANCEL_DISTANCE_SQ) return;\n flags.cancelledByMove = true;\n if (flags.pressInTimer) {\n clearTimeout(flags.pressInTimer);\n flags.pressInTimer = null;\n }\n if (flags.didPressIn) {\n flags.didPressIn = false;\n config.onPressOut?.(e);\n }\n releaseOwnership();\n }).onEnd((e) => {\n if (isOwner() && !flags.didLongPress && !flags.cancelledByMove) {\n firePressIn(e);\n config.onPress?.(e);\n }\n }).onFinalize((e) => {\n if (isOwner()) {\n config.onPressOut?.(e);\n releaseOwnership();\n } else if (flags.didPressIn) {\n flags.didPressIn = false;\n config.onPressOut?.(e);\n }\n });\n if (config.hitSlop) tap.hitSlop(config.hitSlop);\n if (!config.onLongPress) return tap;\n const longPress = Gesture.LongPress().runOnJS(true).minDuration(longPressDuration).onStart((e) => {\n flags.didLongPress = true;\n if (isOwner()) {\n firePressIn(e);\n config.onLongPress?.(e);\n }\n });\n if (config.hitSlop) longPress.hitSlop(config.hitSlop);\n return Gesture.Exclusive(longPress, tap);\n }\n };\n}\nexport {\n canChangeGestureHandlerEnabled,\n claimExternalPressOwnership,\n getGestureHandler,\n hasExternalPressOwnership,\n releaseExternalPressOwnership\n};\n//# sourceMappingURL=gestureState.js.map\n"],"mappings":"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"}
|