Skip to content

Commit 1b930d5

Browse files
committed
Merge branch '@mbert/docs-detector' into @mbert/docs-quick-start
2 parents 2f008cd + 59fd8df commit 1b930d5

12 files changed

Lines changed: 103 additions & 13 deletions

File tree

apps/basic-example/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
"../../packages/react-native-gesture-handler/src/jestUtils/index.ts"
1818
]
1919
},
20-
"types": ["jest"]
20+
"types": ["jest","../../packages/react-native-gesture-handler/src/global.d.ts"]
21+
2122
},
2223
"include": ["src/**/*.ts", "src/**/*.tsx"]
2324
}

apps/common-app/tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@
1818
"react-native-gesture-handler/jest-utils": [
1919
"../../packages/react-native-gesture-handler/src/jestUtils/index.ts"
2020
]
21-
}
21+
},
22+
"types": ["../../packages/react-native-gesture-handler/src/global.d.ts"]
2223
},
2324
"include": ["src/**/*.ts", "src/**/*.tsx", "index.ts"]
2425
}

apps/expo-example/tsconfig.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
"react-native-gesture-handler/jest-utils": [
1818
"../../packages/react-native-gesture-handler/src/jestUtils/index.ts"
1919
]
20-
}
20+
},
21+
"types": ["../../packages/react-native-gesture-handler/src/global.d.ts"]
22+
2123
},
2224
"include": ["src/**/*.ts", "src/**/*.tsx", "App.tsx"],
2325
"exclude": ["metro.config.js", "android", "ios", ".bundle", "node_modules"]

apps/macos-example/tsconfig.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
"react-native-gesture-handler/jest-utils": [
1818
"../../packages/react-native-gesture-handler/src/jestUtils/index.ts"
1919
]
20-
}
20+
},
21+
"types": ["../../packages/react-native-gesture-handler/src/global.d.ts"]
22+
2123
},
2224
"include": ["src/**/*.ts", "src/**/*.tsx", "index.ts"],
2325
"exclude": ["metro.config.js", "macos", ".bundle", "node_modules"]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export {};
2+
3+
declare global {
4+
// eslint-disable-next-line no-var
5+
var _setGestureStateSync:
6+
| ((handlerTag: number, state: number) => void)
7+
| undefined;
8+
9+
// eslint-disable-next-line no-var
10+
var _setGestureStateAsync:
11+
| ((handlerTag: number, state: number) => void)
12+
| undefined;
13+
}

packages/react-native-gesture-handler/src/handlers/gestures/gestureStateManager.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,6 @@ export interface GestureStateManagerType {
1010
handlerTag: number;
1111
}
1212

13-
// Declare methods to keep the TS happy
14-
declare const globalThis: {
15-
_setGestureStateSync?: (handlerTag: number, state: State) => void;
16-
_setGestureStateAsync?: (handlerTag: number, state: State) => void;
17-
};
18-
1913
const wrappedSetGestureState = (handlerTag: number, state: State) => {
2014
'worklet';
2115

packages/react-native-gesture-handler/src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ export type {
6868
SimultaneousGestureType as LegacySimultaneousGesture,
6969
ExclusiveGestureType as LegacyExclusiveGesture,
7070
} from './handlers/gestures/gestureComposition';
71-
export type { GestureStateManagerType as GestureStateManager } from './handlers/gestures/gestureStateManager';
71+
export type { GestureStateManagerType as LegacyGestureStateManager } from './handlers/gestures/gestureStateManager';
7272
export { NativeViewGestureHandler } from './handlers/NativeViewGestureHandler';
7373
export type {
7474
LegacyRawButtonProps,
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { State } from '../State';
2+
import { tagMessage } from '../utils';
3+
4+
export type GestureStateManagerType = {
5+
begin(handlerTag: number): void;
6+
activate(handlerTag: number): void;
7+
fail(handlerTag: number): void;
8+
deactivate(handlerTag: number): void;
9+
};
10+
11+
const setGestureState = (handlerTag: number, state: State) => {
12+
'worklet';
13+
14+
if (globalThis._setGestureStateSync) {
15+
globalThis._setGestureStateSync(handlerTag, state);
16+
} else if (globalThis._setGestureStateAsync) {
17+
globalThis._setGestureStateAsync(handlerTag, state);
18+
} else {
19+
throw new Error(tagMessage('Failed to set gesture state'));
20+
}
21+
};
22+
23+
export const GestureStateManager: GestureStateManagerType = {
24+
begin(handlerTag: number) {
25+
'worklet';
26+
setGestureState(handlerTag, State.BEGAN);
27+
},
28+
29+
activate(handlerTag: number) {
30+
'worklet';
31+
setGestureState(handlerTag, State.ACTIVE);
32+
},
33+
34+
fail(handlerTag: number) {
35+
'worklet';
36+
setGestureState(handlerTag, State.FAILED);
37+
},
38+
39+
deactivate(handlerTag: number) {
40+
'worklet';
41+
setGestureState(handlerTag, State.END);
42+
},
43+
};
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import { State } from '../State';
2+
import NodeManager from '../web/tools/NodeManager';
3+
import { GestureStateManagerType } from './gestureStateManager';
4+
5+
export const GestureStateManager: GestureStateManagerType = {
6+
begin(handlerTag: number): void {
7+
'worklet';
8+
NodeManager.getHandler(handlerTag).begin();
9+
},
10+
11+
activate(handlerTag: number): void {
12+
'worklet';
13+
const handler = NodeManager.getHandler(handlerTag);
14+
// Force going from UNDETERMINED to ACTIVE through BEGAN to preserve
15+
// the correct state transition flow.
16+
if (handler.state === State.UNDETERMINED) {
17+
handler.begin();
18+
}
19+
20+
handler.activate(true);
21+
},
22+
23+
fail(handlerTag: number): void {
24+
'worklet';
25+
NodeManager.getHandler(handlerTag).fail();
26+
},
27+
28+
deactivate(handlerTag: number): void {
29+
'worklet';
30+
NodeManager.getHandler(handlerTag).end();
31+
},
32+
};

packages/react-native-gesture-handler/src/v3/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,5 @@ export {
7272
} from './components';
7373

7474
export type { ComposedGesture } from './types';
75+
76+
export { GestureStateManager } from './gestureStateManager';

0 commit comments

Comments
 (0)