@tamagui/native 2.0.0-rc.4 → 2.0.0-rc.40
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/.turbo/turbo-build.log +2 -0
- package/dist/cjs/PressBoundary.cjs +92 -0
- package/dist/cjs/PressBoundary.native.js +105 -0
- package/dist/cjs/PressBoundary.native.js.map +1 -0
- package/dist/cjs/burntState.cjs +46 -0
- package/dist/cjs/burntState.native.js +49 -0
- package/dist/cjs/burntState.native.js.map +1 -0
- package/dist/cjs/components.cjs +20 -15
- package/dist/cjs/components.native.js +24 -22
- package/dist/cjs/components.native.js.map +1 -1
- package/dist/cjs/gesture-handler.cjs +36 -0
- package/dist/cjs/gesture-handler.native.js +39 -0
- package/dist/cjs/gesture-handler.native.js.map +1 -0
- package/dist/cjs/gestureState.cjs +124 -36
- package/dist/cjs/gestureState.native.js +130 -46
- package/dist/cjs/gestureState.native.js.map +1 -1
- package/dist/cjs/globalState.cjs +45 -0
- package/dist/cjs/globalState.native.js +48 -0
- package/dist/cjs/globalState.native.js.map +1 -0
- package/dist/cjs/index.cjs +28 -19
- package/dist/cjs/index.native.js +28 -19
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboardControllerState.cjs +26 -28
- package/dist/cjs/keyboardControllerState.native.js +26 -28
- package/dist/cjs/keyboardControllerState.native.js.map +1 -1
- package/dist/cjs/linearGradientState.cjs +19 -16
- package/dist/cjs/linearGradientState.native.js +19 -16
- package/dist/cjs/linearGradientState.native.js.map +1 -1
- package/dist/cjs/nativeMenuContext.cjs +29 -0
- package/dist/cjs/nativeMenuContext.native.js +32 -0
- package/dist/cjs/nativeMenuContext.native.js.map +1 -0
- package/dist/cjs/portalState.cjs +19 -16
- package/dist/cjs/portalState.native.js +19 -16
- package/dist/cjs/portalState.native.js.map +1 -1
- package/dist/cjs/safeAreaState.cjs +43 -38
- package/dist/cjs/safeAreaState.native.js +43 -38
- package/dist/cjs/safeAreaState.native.js.map +1 -1
- package/dist/cjs/setup-burnt.cjs +17 -0
- package/dist/cjs/setup-burnt.native.js +20 -0
- package/dist/cjs/setup-burnt.native.js.map +1 -0
- package/dist/cjs/setup-expo-linear-gradient.cjs +9 -8
- package/dist/cjs/setup-expo-linear-gradient.native.js +9 -8
- package/dist/cjs/setup-expo-linear-gradient.native.js.map +1 -1
- package/dist/cjs/setup-gesture-handler.cjs +58 -18
- package/dist/cjs/setup-gesture-handler.native.js +58 -18
- package/dist/cjs/setup-gesture-handler.native.js.map +1 -1
- package/dist/cjs/setup-keyboard-controller.native.js +20 -17
- package/dist/cjs/setup-safe-area.cjs +3 -1
- package/dist/cjs/setup-safe-area.native.js +15 -17
- package/dist/cjs/setup-safe-area.native.js.map +1 -1
- package/dist/cjs/setup-teleport.cjs +13 -13
- package/dist/cjs/setup-teleport.native.js +13 -13
- package/dist/cjs/setup-teleport.native.js.map +1 -1
- package/dist/cjs/setup-worklets.cjs +11 -8
- package/dist/cjs/setup-worklets.native.js +11 -8
- package/dist/cjs/setup-worklets.native.js.map +1 -1
- package/dist/cjs/setup-zeego.cjs +13 -8
- package/dist/cjs/setup-zeego.native.js +13 -8
- package/dist/cjs/setup-zeego.native.js.map +1 -1
- package/dist/cjs/types.cjs +7 -5
- package/dist/cjs/types.native.js +7 -5
- package/dist/cjs/types.native.js.map +1 -1
- package/dist/cjs/workletsState.cjs +23 -25
- package/dist/cjs/workletsState.native.js +23 -25
- package/dist/cjs/workletsState.native.js.map +1 -1
- package/dist/cjs/zeegoState.cjs +19 -16
- package/dist/cjs/zeegoState.native.js +19 -16
- package/dist/cjs/zeegoState.native.js.map +1 -1
- package/dist/esm/PressBoundary.mjs +56 -0
- package/dist/esm/PressBoundary.mjs.map +1 -0
- package/dist/esm/PressBoundary.native.js +66 -0
- package/dist/esm/PressBoundary.native.js.map +1 -0
- package/dist/esm/burntState.mjs +21 -0
- package/dist/esm/burntState.mjs.map +1 -0
- package/dist/esm/burntState.native.js +21 -0
- package/dist/esm/burntState.native.js.map +1 -0
- package/dist/esm/components.mjs +6 -3
- package/dist/esm/components.mjs.map +1 -1
- package/dist/esm/components.native.js +10 -10
- package/dist/esm/components.native.js.map +1 -1
- package/dist/esm/gesture-handler.mjs +6 -0
- package/dist/esm/gesture-handler.mjs.map +1 -0
- package/dist/esm/gesture-handler.native.js +6 -0
- package/dist/esm/gesture-handler.native.js.map +1 -0
- package/dist/esm/gestureState.mjs +110 -26
- package/dist/esm/gestureState.mjs.map +1 -1
- package/dist/esm/gestureState.native.js +116 -36
- package/dist/esm/gestureState.native.js.map +1 -1
- package/dist/esm/globalState.mjs +20 -0
- package/dist/esm/globalState.mjs.map +1 -0
- package/dist/esm/globalState.native.js +20 -0
- package/dist/esm/globalState.native.js.map +1 -0
- package/dist/esm/index.js +12 -26
- package/dist/esm/index.js.map +1 -6
- package/dist/esm/index.mjs +4 -1
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +4 -1
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/keyboardControllerState.mjs +14 -18
- package/dist/esm/keyboardControllerState.mjs.map +1 -1
- package/dist/esm/keyboardControllerState.native.js +14 -18
- package/dist/esm/keyboardControllerState.native.js.map +1 -1
- package/dist/esm/linearGradientState.mjs +7 -6
- package/dist/esm/linearGradientState.mjs.map +1 -1
- package/dist/esm/linearGradientState.native.js +7 -6
- package/dist/esm/linearGradientState.native.js.map +1 -1
- package/dist/esm/nativeMenuContext.mjs +4 -0
- package/dist/esm/nativeMenuContext.mjs.map +1 -0
- package/dist/esm/nativeMenuContext.native.js +4 -0
- package/dist/esm/nativeMenuContext.native.js.map +1 -0
- package/dist/esm/portalState.mjs +7 -6
- package/dist/esm/portalState.mjs.map +1 -1
- package/dist/esm/portalState.native.js +7 -6
- package/dist/esm/portalState.native.js.map +1 -1
- package/dist/esm/safeAreaState.mjs +31 -28
- package/dist/esm/safeAreaState.mjs.map +1 -1
- package/dist/esm/safeAreaState.native.js +31 -28
- package/dist/esm/safeAreaState.native.js.map +1 -1
- package/dist/esm/setup-burnt.mjs +18 -0
- package/dist/esm/setup-burnt.mjs.map +1 -0
- package/dist/esm/setup-burnt.native.js +18 -0
- package/dist/esm/setup-burnt.native.js.map +1 -0
- package/dist/esm/setup-expo-linear-gradient.mjs +9 -8
- package/dist/esm/setup-expo-linear-gradient.mjs.map +1 -1
- package/dist/esm/setup-expo-linear-gradient.native.js +9 -8
- package/dist/esm/setup-expo-linear-gradient.native.js.map +1 -1
- package/dist/esm/setup-gesture-handler.mjs +31 -18
- package/dist/esm/setup-gesture-handler.mjs.map +1 -1
- package/dist/esm/setup-gesture-handler.native.js +31 -18
- package/dist/esm/setup-gesture-handler.native.js.map +1 -1
- package/dist/esm/setup-keyboard-controller.native.js +20 -17
- package/dist/esm/setup-safe-area.mjs +2 -0
- package/dist/esm/setup-safe-area.mjs.map +1 -1
- package/dist/esm/setup-safe-area.native.js +15 -17
- package/dist/esm/setup-safe-area.native.js.map +1 -1
- package/dist/esm/setup-teleport.mjs +13 -13
- package/dist/esm/setup-teleport.mjs.map +1 -1
- package/dist/esm/setup-teleport.native.js +13 -13
- package/dist/esm/setup-teleport.native.js.map +1 -1
- package/dist/esm/setup-worklets.mjs +11 -8
- package/dist/esm/setup-worklets.mjs.map +1 -1
- package/dist/esm/setup-worklets.native.js +11 -8
- package/dist/esm/setup-worklets.native.js.map +1 -1
- package/dist/esm/setup-zeego.mjs +13 -8
- package/dist/esm/setup-zeego.mjs.map +1 -1
- package/dist/esm/setup-zeego.native.js +13 -8
- package/dist/esm/setup-zeego.native.js.map +1 -1
- package/dist/esm/workletsState.mjs +11 -15
- package/dist/esm/workletsState.mjs.map +1 -1
- package/dist/esm/workletsState.native.js +11 -15
- package/dist/esm/workletsState.native.js.map +1 -1
- package/dist/esm/zeegoState.mjs +7 -6
- package/dist/esm/zeegoState.mjs.map +1 -1
- package/dist/esm/zeegoState.native.js +7 -6
- package/dist/esm/zeegoState.native.js.map +1 -1
- package/gesture-handler/index.cjs +1 -0
- package/gesture-handler/index.js +1 -0
- package/gesture-handler/index.native.cjs +1 -0
- package/gesture-handler/index.native.js +1 -0
- package/gesture-handler.cjs +1 -0
- package/package.json +70 -69
- package/setup-burnt/index.cjs +2 -0
- package/setup-burnt/index.js +2 -0
- package/setup-burnt/index.native.cjs +2 -0
- package/setup-burnt/index.native.js +2 -0
- package/setup-burnt.cjs +1 -0
- package/setup-expo-linear-gradient/index.cjs +2 -0
- package/setup-expo-linear-gradient/index.js +2 -0
- package/setup-expo-linear-gradient/index.native.cjs +2 -0
- package/setup-expo-linear-gradient/index.native.js +2 -0
- package/setup-expo-linear-gradient.cjs +1 -0
- package/setup-gesture-handler/index.cjs +2 -0
- package/setup-gesture-handler/index.js +2 -0
- package/setup-gesture-handler/index.native.cjs +2 -0
- package/setup-gesture-handler/index.native.js +2 -0
- package/setup-gesture-handler.cjs +1 -0
- package/setup-keyboard-controller/index.cjs +2 -0
- package/setup-keyboard-controller/index.js +2 -0
- package/setup-keyboard-controller/index.native.cjs +2 -0
- package/setup-keyboard-controller/index.native.js +2 -0
- package/setup-keyboard-controller.cjs +1 -0
- package/setup-safe-area/index.cjs +2 -0
- package/setup-safe-area/index.js +2 -0
- package/setup-safe-area/index.native.cjs +2 -0
- package/setup-safe-area/index.native.js +2 -0
- package/setup-safe-area.cjs +1 -0
- package/setup-teleport/index.cjs +2 -0
- package/setup-teleport/index.js +2 -0
- package/setup-teleport/index.native.cjs +2 -0
- package/setup-teleport/index.native.js +2 -0
- package/setup-teleport.cjs +1 -0
- package/setup-worklets/index.cjs +2 -0
- package/setup-worklets/index.js +2 -0
- package/setup-worklets/index.native.cjs +2 -0
- package/setup-worklets/index.native.js +2 -0
- package/setup-worklets.cjs +1 -0
- package/setup-zeego/index.cjs +2 -0
- package/setup-zeego/index.js +2 -0
- package/setup-zeego/index.native.cjs +2 -0
- package/setup-zeego/index.native.js +2 -0
- package/setup-zeego.cjs +1 -0
- package/src/PressBoundary.tsx +81 -0
- package/src/burntState.ts +28 -0
- package/src/gesture-handler.ts +17 -0
- package/src/gestureState.ts +148 -26
- package/src/globalState.ts +32 -0
- package/src/index.ts +18 -1
- package/src/keyboardControllerState.ts +16 -31
- package/src/linearGradientState.ts +8 -4
- package/src/nativeMenuContext.ts +4 -0
- package/src/portalState.ts +8 -4
- package/src/safeAreaState.ts +16 -23
- package/src/setup-burnt.ts +38 -0
- package/src/setup-gesture-handler.ts +35 -8
- package/src/setup-zeego.ts +4 -1
- package/src/types.ts +17 -0
- package/src/workletsState.ts +11 -19
- package/src/zeegoState.ts +9 -4
- package/tsconfig.json +12 -0
- package/types/PressBoundary.d.ts +14 -0
- package/types/PressBoundary.d.ts.map +11 -0
- package/types/burntState.d.ts +9 -0
- package/types/burntState.d.ts.map +11 -0
- package/types/components.d.ts.map +2 -2
- package/types/gesture-handler.d.ts +8 -0
- package/types/gesture-handler.d.ts.map +11 -0
- package/types/gestureState.d.ts +4 -0
- package/types/gestureState.d.ts.map +4 -4
- package/types/globalState.d.ts +8 -0
- package/types/globalState.d.ts.map +11 -0
- package/types/index.d.ts +7 -2
- package/types/index.d.ts.map +4 -4
- package/types/keyboardControllerState.d.ts +2 -10
- package/types/keyboardControllerState.d.ts.map +4 -4
- package/types/linearGradientState.d.ts.map +4 -4
- package/types/nativeMenuContext.d.ts +4 -0
- package/types/nativeMenuContext.d.ts.map +11 -0
- package/types/portalState.d.ts.map +4 -4
- package/types/safeAreaState.d.ts.map +4 -4
- package/types/setup-burnt.d.ts +3 -0
- package/types/setup-burnt.d.ts.map +11 -0
- package/types/setup-expo-linear-gradient.d.ts.map +2 -2
- package/types/setup-gesture-handler.d.ts +8 -1
- package/types/setup-gesture-handler.d.ts.map +4 -4
- package/types/setup-keyboard-controller.d.ts.map +2 -2
- package/types/setup-keyboard-controller.web.d.ts.map +2 -2
- package/types/setup-safe-area.d.ts.map +2 -2
- package/types/setup-teleport.d.ts.map +2 -2
- package/types/setup-worklets.d.ts.map +2 -2
- package/types/setup-zeego.d.ts.map +3 -3
- package/types/types.d.ts +15 -0
- package/types/types.d.ts.map +4 -4
- package/types/workletsState.d.ts.map +4 -4
- package/types/zeegoState.d.ts.map +4 -4
- package/dist/cjs/components.js +0 -41
- package/dist/cjs/components.js.map +0 -6
- package/dist/cjs/gestureState.js +0 -62
- package/dist/cjs/gestureState.js.map +0 -6
- package/dist/cjs/index.js +0 -32
- package/dist/cjs/index.js.map +0 -6
- package/dist/cjs/keyboardControllerState.js +0 -46
- package/dist/cjs/keyboardControllerState.js.map +0 -6
- package/dist/cjs/linearGradientState.js +0 -34
- package/dist/cjs/linearGradientState.js.map +0 -6
- package/dist/cjs/portalState.js +0 -34
- package/dist/cjs/portalState.js.map +0 -6
- package/dist/cjs/safeAreaState.js +0 -52
- package/dist/cjs/safeAreaState.js.map +0 -6
- package/dist/cjs/setup-expo-linear-gradient.js +0 -17
- package/dist/cjs/setup-expo-linear-gradient.js.map +0 -6
- package/dist/cjs/setup-gesture-handler.js +0 -24
- package/dist/cjs/setup-gesture-handler.js.map +0 -6
- package/dist/cjs/setup-keyboard-controller.js +0 -1
- package/dist/cjs/setup-keyboard-controller.js.map +0 -6
- package/dist/cjs/setup-portal.cjs +0 -66
- package/dist/cjs/setup-portal.js +0 -53
- package/dist/cjs/setup-portal.js.map +0 -6
- package/dist/cjs/setup-portal.native.js +0 -74
- package/dist/cjs/setup-portal.native.js.map +0 -1
- package/dist/cjs/setup-safe-area.js +0 -2
- package/dist/cjs/setup-safe-area.js.map +0 -6
- package/dist/cjs/setup-teleport.js +0 -17
- package/dist/cjs/setup-teleport.js.map +0 -6
- package/dist/cjs/setup-worklets.js +0 -20
- package/dist/cjs/setup-worklets.js.map +0 -6
- package/dist/cjs/setup-zeego.js +0 -18
- package/dist/cjs/setup-zeego.js.map +0 -6
- package/dist/cjs/setup.cjs +0 -64
- package/dist/cjs/setup.js +0 -50
- package/dist/cjs/setup.js.map +0 -6
- package/dist/cjs/setup.native.js +0 -72
- package/dist/cjs/setup.native.js.map +0 -1
- package/dist/cjs/state.cjs +0 -36
- package/dist/cjs/state.js +0 -28
- package/dist/cjs/state.js.map +0 -6
- package/dist/cjs/state.native.js +0 -39
- package/dist/cjs/state.native.js.map +0 -1
- package/dist/cjs/types.js +0 -14
- package/dist/cjs/types.js.map +0 -6
- package/dist/cjs/workletsState.js +0 -45
- package/dist/cjs/workletsState.js.map +0 -6
- package/dist/cjs/zeegoState.js +0 -34
- package/dist/cjs/zeegoState.js.map +0 -6
- package/dist/esm/components.js +0 -26
- package/dist/esm/components.js.map +0 -6
- package/dist/esm/gestureState.js +0 -46
- package/dist/esm/gestureState.js.map +0 -6
- package/dist/esm/keyboardControllerState.js +0 -30
- package/dist/esm/keyboardControllerState.js.map +0 -6
- package/dist/esm/linearGradientState.js +0 -18
- package/dist/esm/linearGradientState.js.map +0 -6
- package/dist/esm/portalState.js +0 -18
- package/dist/esm/portalState.js.map +0 -6
- package/dist/esm/safeAreaState.js +0 -36
- package/dist/esm/safeAreaState.js.map +0 -6
- package/dist/esm/setup-expo-linear-gradient.js +0 -17
- package/dist/esm/setup-expo-linear-gradient.js.map +0 -6
- package/dist/esm/setup-gesture-handler.js +0 -24
- package/dist/esm/setup-gesture-handler.js.map +0 -6
- package/dist/esm/setup-keyboard-controller.js +0 -1
- package/dist/esm/setup-keyboard-controller.js.map +0 -6
- package/dist/esm/setup-portal.js +0 -37
- package/dist/esm/setup-portal.js.map +0 -6
- package/dist/esm/setup-portal.mjs +0 -43
- package/dist/esm/setup-portal.mjs.map +0 -1
- package/dist/esm/setup-portal.native.js +0 -48
- package/dist/esm/setup-portal.native.js.map +0 -1
- package/dist/esm/setup-safe-area.js +0 -2
- package/dist/esm/setup-safe-area.js.map +0 -6
- package/dist/esm/setup-teleport.js +0 -17
- package/dist/esm/setup-teleport.js.map +0 -6
- package/dist/esm/setup-worklets.js +0 -20
- package/dist/esm/setup-worklets.js.map +0 -6
- package/dist/esm/setup-zeego.js +0 -18
- package/dist/esm/setup-zeego.js.map +0 -6
- package/dist/esm/setup.js +0 -34
- package/dist/esm/setup.js.map +0 -6
- package/dist/esm/setup.mjs +0 -41
- package/dist/esm/setup.mjs.map +0 -1
- package/dist/esm/setup.native.js +0 -46
- package/dist/esm/setup.native.js.map +0 -1
- package/dist/esm/state.js +0 -12
- package/dist/esm/state.js.map +0 -6
- package/dist/esm/state.mjs +0 -12
- package/dist/esm/state.mjs.map +0 -1
- package/dist/esm/state.native.js +0 -12
- package/dist/esm/state.native.js.map +0 -1
- package/dist/esm/types.js +0 -1
- package/dist/esm/types.js.map +0 -6
- package/dist/esm/workletsState.js +0 -29
- package/dist/esm/workletsState.js.map +0 -6
- package/dist/esm/zeegoState.js +0 -18
- package/dist/esm/zeegoState.js.map +0 -6
- package/types/setup-portal.d.ts.map +0 -11
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { createGlobalState } from './globalState'
|
|
2
|
+
import type { BurntState } from './types'
|
|
3
|
+
|
|
4
|
+
const state = createGlobalState<BurntState>(`burnt`, {
|
|
5
|
+
enabled: false,
|
|
6
|
+
toast: null,
|
|
7
|
+
dismissAllAlerts: null,
|
|
8
|
+
})
|
|
9
|
+
|
|
10
|
+
export interface BurntAccessor {
|
|
11
|
+
readonly isEnabled: boolean
|
|
12
|
+
readonly state: BurntState
|
|
13
|
+
set(newState: BurntState): void
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function getBurnt(): BurntAccessor {
|
|
17
|
+
return {
|
|
18
|
+
get isEnabled(): boolean {
|
|
19
|
+
return state.get().enabled
|
|
20
|
+
},
|
|
21
|
+
get state(): BurntState {
|
|
22
|
+
return state.get()
|
|
23
|
+
},
|
|
24
|
+
set(newState: BurntState): void {
|
|
25
|
+
state.set(newState)
|
|
26
|
+
},
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { getGestureHandler } from './gestureState'
|
|
2
|
+
export type {
|
|
3
|
+
ExternalPressOwnershipToken,
|
|
4
|
+
GestureHandlerAccessor,
|
|
5
|
+
PressGestureConfig,
|
|
6
|
+
} from './gestureState'
|
|
7
|
+
export {
|
|
8
|
+
claimExternalPressOwnership as unstable_claimExternalPressOwnership,
|
|
9
|
+
releaseExternalPressOwnership as unstable_releaseExternalPressOwnership,
|
|
10
|
+
} from './gestureState'
|
|
11
|
+
export { PressBoundary } from './PressBoundary'
|
|
12
|
+
export type { PressBoundaryProps } from './PressBoundary'
|
|
13
|
+
export {
|
|
14
|
+
getGestureHandlerConfig,
|
|
15
|
+
setupGestureHandler,
|
|
16
|
+
type GestureHandlerConfig,
|
|
17
|
+
} from './setup-gesture-handler'
|
package/src/gestureState.ts
CHANGED
|
@@ -1,18 +1,29 @@
|
|
|
1
|
+
import { createGlobalState } from './globalState'
|
|
1
2
|
import type { GestureState } from './types'
|
|
2
3
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
4
|
+
const state = createGlobalState<GestureState>(`gesture`, {
|
|
5
|
+
enabled: false,
|
|
6
|
+
Gesture: null,
|
|
7
|
+
GestureDetector: null,
|
|
8
|
+
ScrollView: null,
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
let pressGestureDebugId = 0
|
|
12
|
+
let externalPressDebugId = 0
|
|
13
|
+
|
|
14
|
+
type PressOwnerSource = 'internal' | 'external' | null
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Global press coordination - ensures only innermost pressable fires press events,
|
|
18
|
+
* matching RN Pressable/responder system semantics where deepest component wins.
|
|
19
|
+
* Uses a grace period to allow child gestures to steal ownership from parent,
|
|
20
|
+
* since RNGH fires parent gestures before child gestures.
|
|
21
|
+
*/
|
|
22
|
+
const pressState = {
|
|
23
|
+
owner: null as object | null,
|
|
24
|
+
ownerId: null as number | null,
|
|
25
|
+
ownerSource: null as PressOwnerSource,
|
|
26
|
+
timestamp: 0,
|
|
16
27
|
}
|
|
17
28
|
|
|
18
29
|
export interface Insets {
|
|
@@ -23,6 +34,7 @@ export interface Insets {
|
|
|
23
34
|
}
|
|
24
35
|
|
|
25
36
|
export type PressGestureConfig = {
|
|
37
|
+
debugName?: string | null
|
|
26
38
|
onPressIn?: (e: any) => void
|
|
27
39
|
onPressOut?: (e: any) => void
|
|
28
40
|
onPress?: (e: any) => void
|
|
@@ -39,43 +51,137 @@ export interface GestureHandlerAccessor {
|
|
|
39
51
|
createPressGesture(config: PressGestureConfig): any
|
|
40
52
|
}
|
|
41
53
|
|
|
54
|
+
export type ExternalPressOwnershipToken = object
|
|
55
|
+
|
|
56
|
+
function resetPressOwner() {
|
|
57
|
+
pressState.owner = null
|
|
58
|
+
pressState.ownerId = null
|
|
59
|
+
pressState.ownerSource = null
|
|
60
|
+
pressState.timestamp = 0
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function resetStaleOwner(now: number, debugName?: string | null) {
|
|
64
|
+
if (now - pressState.timestamp > 2000) {
|
|
65
|
+
resetPressOwner()
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function claimExternalPressOwnership(
|
|
70
|
+
debugName?: string | null
|
|
71
|
+
): ExternalPressOwnershipToken {
|
|
72
|
+
const now = Date.now()
|
|
73
|
+
resetStaleOwner(now, debugName)
|
|
74
|
+
|
|
75
|
+
const token = {}
|
|
76
|
+
const ownerId = ++externalPressDebugId
|
|
77
|
+
const previousOwnerId = pressState.ownerId
|
|
78
|
+
const previousOwnerSource = pressState.ownerSource
|
|
79
|
+
|
|
80
|
+
pressState.owner = token
|
|
81
|
+
pressState.ownerId = ownerId
|
|
82
|
+
pressState.ownerSource = 'external'
|
|
83
|
+
pressState.timestamp = now
|
|
84
|
+
|
|
85
|
+
return token
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
export function releaseExternalPressOwnership(
|
|
89
|
+
token: ExternalPressOwnershipToken | null | undefined,
|
|
90
|
+
debugName?: string | null
|
|
91
|
+
): void {
|
|
92
|
+
if (!token || pressState.owner !== token) {
|
|
93
|
+
return
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
resetPressOwner()
|
|
97
|
+
}
|
|
98
|
+
|
|
42
99
|
export function getGestureHandler(): GestureHandlerAccessor {
|
|
43
100
|
return {
|
|
44
101
|
get isEnabled(): boolean {
|
|
45
|
-
return
|
|
102
|
+
return state.get().enabled
|
|
46
103
|
},
|
|
47
104
|
get state(): GestureState {
|
|
48
|
-
return
|
|
105
|
+
return state.get()
|
|
49
106
|
},
|
|
50
107
|
set(updates: Partial<GestureState>): void {
|
|
51
|
-
|
|
52
|
-
Object.assign(state, updates)
|
|
108
|
+
Object.assign(state.get(), updates)
|
|
53
109
|
},
|
|
54
110
|
|
|
55
111
|
disable(): void {
|
|
56
|
-
|
|
57
|
-
state.enabled = false
|
|
112
|
+
state.get().enabled = false
|
|
58
113
|
},
|
|
59
114
|
|
|
60
115
|
createPressGesture(config: PressGestureConfig): any {
|
|
61
|
-
const { Gesture } =
|
|
116
|
+
const { Gesture } = state.get()
|
|
62
117
|
if (!Gesture) return null
|
|
63
118
|
|
|
64
119
|
const longPressDuration = config.delayLongPress ?? 500
|
|
65
120
|
|
|
121
|
+
// unique token for this gesture instance - used to track ownership
|
|
122
|
+
const myToken = {}
|
|
123
|
+
const myDebugId = ++pressGestureDebugId
|
|
124
|
+
|
|
125
|
+
// Grace period for child gestures to steal ownership from parent.
|
|
126
|
+
// RNGH fires parent before child, but we want innermost to win.
|
|
127
|
+
// Claims typically span a few ms, 24ms gives enough room to observe
|
|
128
|
+
// ordering while debugging slower frames.
|
|
129
|
+
const GRACE_PERIOD_MS = process.env.TAMAGUI_RNGH_PRESS_DELAY
|
|
130
|
+
? +process.env.TAMAGUI_RNGH_PRESS_DELAY
|
|
131
|
+
: 24
|
|
132
|
+
|
|
133
|
+
const tryClaimOwnership = () => {
|
|
134
|
+
const now = Date.now()
|
|
135
|
+
resetStaleOwner(now, config.debugName)
|
|
136
|
+
|
|
137
|
+
// within grace period, last claimer wins (child fires after parent)
|
|
138
|
+
const withinGrace = now - pressState.timestamp < GRACE_PERIOD_MS
|
|
139
|
+
const previousOwnerId = pressState.ownerId
|
|
140
|
+
const previousOwnerSource = pressState.ownerSource
|
|
141
|
+
if (
|
|
142
|
+
pressState.owner === null ||
|
|
143
|
+
(withinGrace && pressState.ownerSource !== 'external')
|
|
144
|
+
) {
|
|
145
|
+
pressState.owner = myToken
|
|
146
|
+
pressState.ownerId = myDebugId
|
|
147
|
+
pressState.ownerSource = 'internal'
|
|
148
|
+
pressState.timestamp = now
|
|
149
|
+
}
|
|
150
|
+
return pressState.owner === myToken
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
const isOwner = () => pressState.owner === myToken
|
|
154
|
+
|
|
155
|
+
const releaseOwnership = () => {
|
|
156
|
+
if (pressState.owner === myToken) {
|
|
157
|
+
resetPressOwner()
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
66
161
|
// Tap gesture for regular presses
|
|
67
162
|
// Use long maxDuration to not cancel during long presses
|
|
68
163
|
const tap = Gesture.Tap()
|
|
69
164
|
.runOnJS(true)
|
|
70
165
|
.maxDuration(10000) // allow very long presses
|
|
71
166
|
.onBegin((e: any) => {
|
|
72
|
-
|
|
167
|
+
tryClaimOwnership()
|
|
168
|
+
// defer onPressIn until after grace period to ensure we're the final owner
|
|
169
|
+
setTimeout(() => {
|
|
170
|
+
if (isOwner()) {
|
|
171
|
+
config.onPressIn?.(e)
|
|
172
|
+
}
|
|
173
|
+
}, GRACE_PERIOD_MS + 1)
|
|
73
174
|
})
|
|
74
175
|
.onEnd((e: any) => {
|
|
75
|
-
|
|
176
|
+
if (isOwner()) {
|
|
177
|
+
config.onPress?.(e)
|
|
178
|
+
}
|
|
76
179
|
})
|
|
77
180
|
.onFinalize((e: any) => {
|
|
78
|
-
|
|
181
|
+
if (isOwner()) {
|
|
182
|
+
config.onPressOut?.(e)
|
|
183
|
+
releaseOwnership()
|
|
184
|
+
}
|
|
79
185
|
})
|
|
80
186
|
|
|
81
187
|
if (config.hitSlop) tap.hitSlop(config.hitSlop)
|
|
@@ -87,9 +193,25 @@ export function getGestureHandler(): GestureHandlerAccessor {
|
|
|
87
193
|
const longPress = Gesture.LongPress()
|
|
88
194
|
.runOnJS(true)
|
|
89
195
|
.minDuration(longPressDuration)
|
|
90
|
-
.onBegin((e: any) =>
|
|
91
|
-
|
|
92
|
-
|
|
196
|
+
.onBegin((e: any) => {
|
|
197
|
+
tryClaimOwnership()
|
|
198
|
+
setTimeout(() => {
|
|
199
|
+
if (isOwner()) {
|
|
200
|
+
config.onPressIn?.(e)
|
|
201
|
+
}
|
|
202
|
+
}, GRACE_PERIOD_MS + 1)
|
|
203
|
+
})
|
|
204
|
+
.onStart((e: any) => {
|
|
205
|
+
if (isOwner()) {
|
|
206
|
+
config.onLongPress?.(e)
|
|
207
|
+
}
|
|
208
|
+
})
|
|
209
|
+
.onFinalize((e: any) => {
|
|
210
|
+
if (isOwner()) {
|
|
211
|
+
config.onPressOut?.(e)
|
|
212
|
+
releaseOwnership()
|
|
213
|
+
}
|
|
214
|
+
})
|
|
93
215
|
|
|
94
216
|
if (config.hitSlop) longPress.hitSlop(config.hitSlop)
|
|
95
217
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export function createGlobalState<T extends { enabled: boolean }>(
|
|
2
|
+
key: string,
|
|
3
|
+
defaultValue: T
|
|
4
|
+
): {
|
|
5
|
+
get: () => T
|
|
6
|
+
set: (next: T) => void
|
|
7
|
+
} {
|
|
8
|
+
const GLOBAL_KEY = `__tamagui_${key}__`
|
|
9
|
+
|
|
10
|
+
type TamaguiGlobal = typeof globalThis & {
|
|
11
|
+
[GLOBAL_KEY]?: T
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
function getGlobalState(): T {
|
|
15
|
+
const g = globalThis as TamaguiGlobal
|
|
16
|
+
if (!g[GLOBAL_KEY]) {
|
|
17
|
+
// reset on module load so reloadReactNative gets a clean state
|
|
18
|
+
// (globalThis persists across reloads but module scope re-evaluates)
|
|
19
|
+
g[GLOBAL_KEY] = defaultValue
|
|
20
|
+
}
|
|
21
|
+
return g[GLOBAL_KEY]!
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function setGlobalState(newState: T): void {
|
|
25
|
+
;(globalThis as TamaguiGlobal)[GLOBAL_KEY] = newState
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return {
|
|
29
|
+
get: getGlobalState,
|
|
30
|
+
set: setGlobalState,
|
|
31
|
+
}
|
|
32
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -30,6 +30,7 @@ export type {
|
|
|
30
30
|
SafeAreaMetrics,
|
|
31
31
|
LinearGradientState,
|
|
32
32
|
ZeegoState,
|
|
33
|
+
BurntState,
|
|
33
34
|
NativePortalProps,
|
|
34
35
|
NativePortalHostProps,
|
|
35
36
|
NativePortalProviderProps,
|
|
@@ -41,7 +42,18 @@ export type { PortalAccessor } from './portalState'
|
|
|
41
42
|
|
|
42
43
|
// gesture handler
|
|
43
44
|
export { getGestureHandler } from './gestureState'
|
|
44
|
-
export
|
|
45
|
+
export {
|
|
46
|
+
claimExternalPressOwnership as unstable_claimExternalPressOwnership,
|
|
47
|
+
releaseExternalPressOwnership as unstable_releaseExternalPressOwnership,
|
|
48
|
+
} from './gestureState'
|
|
49
|
+
export type {
|
|
50
|
+
ExternalPressOwnershipToken,
|
|
51
|
+
GestureHandlerAccessor,
|
|
52
|
+
PressGestureConfig,
|
|
53
|
+
} from './gestureState'
|
|
54
|
+
// NOTE: setupGestureHandler is exported from setup-gesture-handler.ts entry point,
|
|
55
|
+
// not here, to avoid bundler pulling in RNGH require during tree-shaking
|
|
56
|
+
export type { GestureHandlerConfig } from './setup-gesture-handler'
|
|
45
57
|
|
|
46
58
|
// worklets
|
|
47
59
|
export { getWorklets } from './workletsState'
|
|
@@ -66,6 +78,11 @@ export type { KeyboardControllerState } from './keyboardControllerState'
|
|
|
66
78
|
// zeego (native menus)
|
|
67
79
|
export { getZeego } from './zeegoState'
|
|
68
80
|
export type { ZeegoAccessor } from './zeegoState'
|
|
81
|
+
export { NativeMenuContext } from './nativeMenuContext'
|
|
82
|
+
|
|
83
|
+
// burnt (native toasts)
|
|
84
|
+
export { getBurnt } from './burntState'
|
|
85
|
+
export type { BurntAccessor } from './burntState'
|
|
69
86
|
|
|
70
87
|
// components
|
|
71
88
|
export { NativePortal, NativePortalHost, NativePortalProvider } from './components'
|
|
@@ -1,44 +1,29 @@
|
|
|
1
|
-
|
|
1
|
+
import { createGlobalState } from './globalState'
|
|
2
|
+
import type { KeyboardControllerState } from './types'
|
|
2
3
|
|
|
3
|
-
export
|
|
4
|
-
enabled: boolean
|
|
5
|
-
KeyboardProvider: any
|
|
6
|
-
KeyboardAwareScrollView: any
|
|
7
|
-
useKeyboardHandler: any
|
|
8
|
-
useReanimatedKeyboardAnimation: any
|
|
9
|
-
KeyboardController: any
|
|
10
|
-
KeyboardEvents: any
|
|
11
|
-
KeyboardStickyView: any
|
|
12
|
-
}
|
|
4
|
+
export type { KeyboardControllerState }
|
|
13
5
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
KeyboardEvents: null,
|
|
25
|
-
KeyboardStickyView: null,
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return g[GLOBAL_KEY]
|
|
29
|
-
}
|
|
6
|
+
const state = createGlobalState<KeyboardControllerState>(`keyboard_controller`, {
|
|
7
|
+
enabled: false,
|
|
8
|
+
KeyboardProvider: null,
|
|
9
|
+
KeyboardAwareScrollView: null,
|
|
10
|
+
useKeyboardHandler: null,
|
|
11
|
+
useReanimatedKeyboardAnimation: null,
|
|
12
|
+
KeyboardController: null,
|
|
13
|
+
KeyboardEvents: null,
|
|
14
|
+
KeyboardStickyView: null,
|
|
15
|
+
})
|
|
30
16
|
|
|
31
17
|
export function isKeyboardControllerEnabled(): boolean {
|
|
32
|
-
return
|
|
18
|
+
return state.get().enabled
|
|
33
19
|
}
|
|
34
20
|
|
|
35
21
|
export function getKeyboardControllerState(): KeyboardControllerState {
|
|
36
|
-
return
|
|
22
|
+
return state.get()
|
|
37
23
|
}
|
|
38
24
|
|
|
39
25
|
export function setKeyboardControllerState(
|
|
40
26
|
updates: Partial<KeyboardControllerState>
|
|
41
27
|
): void {
|
|
42
|
-
|
|
43
|
-
Object.assign(state, updates)
|
|
28
|
+
Object.assign(state.get(), updates)
|
|
44
29
|
}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { createGlobalState } from './globalState'
|
|
1
2
|
import type { LinearGradientState } from './types'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
const state = createGlobalState<LinearGradientState>(`linear_gradient`, {
|
|
5
|
+
enabled: false,
|
|
6
|
+
Component: null,
|
|
7
|
+
})
|
|
4
8
|
|
|
5
9
|
export interface LinearGradientAccessor {
|
|
6
10
|
readonly isEnabled: boolean
|
|
@@ -11,13 +15,13 @@ export interface LinearGradientAccessor {
|
|
|
11
15
|
export function getLinearGradient(): LinearGradientAccessor {
|
|
12
16
|
return {
|
|
13
17
|
get isEnabled(): boolean {
|
|
14
|
-
return state.enabled
|
|
18
|
+
return state.get().enabled
|
|
15
19
|
},
|
|
16
20
|
get state(): LinearGradientState {
|
|
17
|
-
return state
|
|
21
|
+
return state.get()
|
|
18
22
|
},
|
|
19
23
|
set(newState: LinearGradientState): void {
|
|
20
|
-
state
|
|
24
|
+
state.set(newState)
|
|
21
25
|
},
|
|
22
26
|
}
|
|
23
27
|
}
|
package/src/portalState.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
+
import { createGlobalState } from './globalState'
|
|
1
2
|
import type { NativePortalState } from './types'
|
|
2
3
|
|
|
3
|
-
|
|
4
|
+
const state = createGlobalState<NativePortalState>(`portal`, {
|
|
5
|
+
enabled: false,
|
|
6
|
+
type: null,
|
|
7
|
+
})
|
|
4
8
|
|
|
5
9
|
export interface PortalAccessor {
|
|
6
10
|
readonly isEnabled: boolean
|
|
@@ -11,13 +15,13 @@ export interface PortalAccessor {
|
|
|
11
15
|
export function getPortal(): PortalAccessor {
|
|
12
16
|
return {
|
|
13
17
|
get isEnabled(): boolean {
|
|
14
|
-
return state.enabled
|
|
18
|
+
return state.get().enabled
|
|
15
19
|
},
|
|
16
20
|
get state(): NativePortalState {
|
|
17
|
-
return state
|
|
21
|
+
return state.get()
|
|
18
22
|
},
|
|
19
23
|
set(newState: NativePortalState): void {
|
|
20
|
-
state
|
|
24
|
+
state.set(newState)
|
|
21
25
|
},
|
|
22
26
|
}
|
|
23
27
|
}
|
package/src/safeAreaState.ts
CHANGED
|
@@ -1,19 +1,12 @@
|
|
|
1
|
+
import { createGlobalState } from './globalState'
|
|
1
2
|
import type { SafeAreaState, SafeAreaInsets, SafeAreaFrame } from './types'
|
|
2
3
|
|
|
3
|
-
const
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
enabled: false,
|
|
10
|
-
useSafeAreaInsets: null,
|
|
11
|
-
useSafeAreaFrame: null,
|
|
12
|
-
initialMetrics: null,
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
return g[GLOBAL_KEY]
|
|
16
|
-
}
|
|
4
|
+
const state = createGlobalState<SafeAreaState>(`safe_area`, {
|
|
5
|
+
enabled: false,
|
|
6
|
+
useSafeAreaInsets: null,
|
|
7
|
+
useSafeAreaFrame: null,
|
|
8
|
+
initialMetrics: null,
|
|
9
|
+
})
|
|
17
10
|
|
|
18
11
|
const defaultInsets: SafeAreaInsets = { top: 0, right: 0, bottom: 0, left: 0 }
|
|
19
12
|
const defaultFrame: SafeAreaFrame = { x: 0, y: 0, width: 0, height: 0 }
|
|
@@ -31,27 +24,27 @@ export interface SafeAreaAccessor {
|
|
|
31
24
|
export function getSafeArea(): SafeAreaAccessor {
|
|
32
25
|
return {
|
|
33
26
|
get isEnabled() {
|
|
34
|
-
return
|
|
27
|
+
return state.get().enabled
|
|
35
28
|
},
|
|
36
29
|
get state() {
|
|
37
|
-
return
|
|
30
|
+
return state.get()
|
|
38
31
|
},
|
|
39
32
|
set(updates: Partial<SafeAreaState>) {
|
|
40
|
-
Object.assign(
|
|
33
|
+
Object.assign(state.get(), updates)
|
|
41
34
|
},
|
|
42
35
|
getInsets() {
|
|
43
|
-
const
|
|
44
|
-
if (!
|
|
36
|
+
const s = state.get()
|
|
37
|
+
if (!s.enabled || !s.initialMetrics) {
|
|
45
38
|
return defaultInsets
|
|
46
39
|
}
|
|
47
|
-
return
|
|
40
|
+
return s.initialMetrics.insets
|
|
48
41
|
},
|
|
49
42
|
getFrame() {
|
|
50
|
-
const
|
|
51
|
-
if (!
|
|
43
|
+
const s = state.get()
|
|
44
|
+
if (!s.enabled || !s.initialMetrics) {
|
|
52
45
|
return defaultFrame
|
|
53
46
|
}
|
|
54
|
-
return
|
|
47
|
+
return s.initialMetrics.frame
|
|
55
48
|
},
|
|
56
49
|
}
|
|
57
50
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Setup burnt for Tamagui native toasts.
|
|
3
|
+
*
|
|
4
|
+
* Simply import this module at the top of your app entry point:
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```tsx
|
|
8
|
+
* import '@tamagui/native/setup-burnt'
|
|
9
|
+
* ```
|
|
10
|
+
*
|
|
11
|
+
* This automatically detects and configures burnt for use with
|
|
12
|
+
* native Toast functionality.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { getBurnt } from './burntState'
|
|
16
|
+
|
|
17
|
+
function setup(): void {
|
|
18
|
+
const g = globalThis as any
|
|
19
|
+
if (g.__tamagui_native_burnt_setup) return
|
|
20
|
+
g.__tamagui_native_burnt_setup = true
|
|
21
|
+
|
|
22
|
+
try {
|
|
23
|
+
const Burnt = require('burnt') as typeof import('burnt')
|
|
24
|
+
|
|
25
|
+
if (Burnt) {
|
|
26
|
+
getBurnt().set({
|
|
27
|
+
enabled: true,
|
|
28
|
+
toast: Burnt.toast,
|
|
29
|
+
dismissAllAlerts: Burnt.dismissAllAlerts,
|
|
30
|
+
})
|
|
31
|
+
}
|
|
32
|
+
} catch {
|
|
33
|
+
// burnt not installed
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// run setup immediately on import
|
|
38
|
+
setup()
|
|
@@ -5,7 +5,12 @@
|
|
|
5
5
|
*
|
|
6
6
|
* @example
|
|
7
7
|
* ```tsx
|
|
8
|
+
* // auto-setup with all features enabled
|
|
8
9
|
* import '@tamagui/native/setup-gesture-handler'
|
|
10
|
+
*
|
|
11
|
+
* // or configure selectively
|
|
12
|
+
* import { setupGestureHandler } from '@tamagui/native/setup-gesture-handler'
|
|
13
|
+
* setupGestureHandler({ pressEvents: true, sheet: false })
|
|
9
14
|
* ```
|
|
10
15
|
*
|
|
11
16
|
* This automatically detects and configures react-native-gesture-handler
|
|
@@ -14,11 +19,32 @@
|
|
|
14
19
|
|
|
15
20
|
import { getGestureHandler } from './gestureState'
|
|
16
21
|
|
|
17
|
-
|
|
22
|
+
export interface GestureHandlerConfig {
|
|
23
|
+
/** use RNGH for press events on Tamagui components (default: true) */
|
|
24
|
+
pressEvents?: boolean
|
|
25
|
+
/** use RNGH for Sheet drag gestures (default: true) */
|
|
26
|
+
sheet?: boolean
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
let currentConfig: GestureHandlerConfig = {
|
|
30
|
+
pressEvents: true,
|
|
31
|
+
sheet: true,
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function getGestureHandlerConfig(): GestureHandlerConfig {
|
|
35
|
+
return currentConfig
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function setupGestureHandler(config?: GestureHandlerConfig): void {
|
|
18
39
|
const g = globalThis as any
|
|
19
|
-
|
|
20
|
-
|
|
40
|
+
|
|
41
|
+
// override config if provided
|
|
42
|
+
if (config) {
|
|
43
|
+
currentConfig = config
|
|
21
44
|
}
|
|
45
|
+
|
|
46
|
+
// allow re-running setup to change config
|
|
47
|
+
const isFirstRun = !g.__tamagui_native_gesture_setup_complete
|
|
22
48
|
g.__tamagui_native_gesture_setup_complete = true
|
|
23
49
|
|
|
24
50
|
try {
|
|
@@ -27,16 +53,17 @@ function setup() {
|
|
|
27
53
|
const { Gesture, GestureDetector, ScrollView } = rngh
|
|
28
54
|
|
|
29
55
|
if (Gesture && GestureDetector) {
|
|
56
|
+
// only enable if pressEvents is true
|
|
30
57
|
getGestureHandler().set({
|
|
31
|
-
enabled:
|
|
58
|
+
enabled: currentConfig.pressEvents !== false,
|
|
32
59
|
Gesture,
|
|
33
60
|
GestureDetector,
|
|
34
61
|
ScrollView: ScrollView || null,
|
|
35
62
|
})
|
|
36
63
|
|
|
37
|
-
//
|
|
64
|
+
// sheet state - only enable if sheet is true
|
|
38
65
|
g.__tamagui_sheet_gesture_state__ = {
|
|
39
|
-
enabled:
|
|
66
|
+
enabled: currentConfig.sheet !== false,
|
|
40
67
|
Gesture,
|
|
41
68
|
GestureDetector,
|
|
42
69
|
ScrollView: ScrollView || null,
|
|
@@ -47,5 +74,5 @@ function setup() {
|
|
|
47
74
|
}
|
|
48
75
|
}
|
|
49
76
|
|
|
50
|
-
// run setup immediately on import
|
|
51
|
-
|
|
77
|
+
// run setup immediately on import (can be overridden by calling setupGestureHandler)
|
|
78
|
+
setupGestureHandler()
|
package/src/setup-zeego.ts
CHANGED
package/src/types.ts
CHANGED
|
@@ -69,3 +69,20 @@ export interface ZeegoState {
|
|
|
69
69
|
DropdownMenu: any
|
|
70
70
|
ContextMenu: any
|
|
71
71
|
}
|
|
72
|
+
|
|
73
|
+
export interface BurntState {
|
|
74
|
+
enabled: boolean
|
|
75
|
+
toast: ((options: any) => void) | null
|
|
76
|
+
dismissAllAlerts: (() => void) | null
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface KeyboardControllerState {
|
|
80
|
+
enabled: boolean
|
|
81
|
+
KeyboardProvider: any
|
|
82
|
+
KeyboardAwareScrollView: any
|
|
83
|
+
useKeyboardHandler: any
|
|
84
|
+
useReanimatedKeyboardAnimation: any
|
|
85
|
+
KeyboardController: any
|
|
86
|
+
KeyboardEvents: any
|
|
87
|
+
KeyboardStickyView: any
|
|
88
|
+
}
|