react-native-screen-transitions 3.3.0-beta.2 → 3.3.0-beta.4

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.
Files changed (119) hide show
  1. package/README.md +95 -31
  2. package/lib/commonjs/shared/animation/snap-to.js +17 -10
  3. package/lib/commonjs/shared/animation/snap-to.js.map +1 -1
  4. package/lib/commonjs/shared/components/create-transition-aware-component.js +20 -18
  5. package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
  6. package/lib/commonjs/shared/components/screen-container.js +68 -9
  7. package/lib/commonjs/shared/components/screen-container.js.map +1 -1
  8. package/lib/commonjs/shared/constants.js +8 -1
  9. package/lib/commonjs/shared/constants.js.map +1 -1
  10. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +49 -39
  11. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  12. package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js +110 -61
  13. package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
  14. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +67 -70
  15. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  16. package/lib/commonjs/shared/providers/gestures.provider.js +113 -25
  17. package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
  18. package/lib/commonjs/shared/types/ownership.types.js +71 -0
  19. package/lib/commonjs/shared/types/ownership.types.js.map +1 -0
  20. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js +72 -128
  21. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  22. package/lib/commonjs/shared/utils/gesture/compute-claimed-directions.js +81 -0
  23. package/lib/commonjs/shared/utils/gesture/compute-claimed-directions.js.map +1 -0
  24. package/lib/commonjs/shared/utils/gesture/determine-snap-target.js +1 -1
  25. package/lib/commonjs/shared/utils/gesture/determine-snap-target.js.map +1 -1
  26. package/lib/commonjs/shared/utils/gesture/find-collapse-target.js +48 -0
  27. package/lib/commonjs/shared/utils/gesture/find-collapse-target.js.map +1 -0
  28. package/lib/commonjs/shared/utils/gesture/resolve-ownership.js +87 -0
  29. package/lib/commonjs/shared/utils/gesture/resolve-ownership.js.map +1 -0
  30. package/lib/commonjs/shared/utils/gesture/velocity.js +16 -5
  31. package/lib/commonjs/shared/utils/gesture/velocity.js.map +1 -1
  32. package/lib/module/shared/animation/snap-to.js +16 -10
  33. package/lib/module/shared/animation/snap-to.js.map +1 -1
  34. package/lib/module/shared/components/create-transition-aware-component.js +20 -18
  35. package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
  36. package/lib/module/shared/components/screen-container.js +68 -10
  37. package/lib/module/shared/components/screen-container.js.map +1 -1
  38. package/lib/module/shared/constants.js +7 -0
  39. package/lib/module/shared/constants.js.map +1 -1
  40. package/lib/module/shared/hooks/gestures/use-build-gestures.js +49 -39
  41. package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  42. package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js +112 -63
  43. package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -1
  44. package/lib/module/shared/hooks/gestures/use-scroll-registry.js +68 -70
  45. package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  46. package/lib/module/shared/providers/gestures.provider.js +113 -25
  47. package/lib/module/shared/providers/gestures.provider.js.map +1 -1
  48. package/lib/module/shared/types/ownership.types.js +67 -0
  49. package/lib/module/shared/types/ownership.types.js.map +1 -0
  50. package/lib/module/shared/utils/gesture/check-gesture-activation.js +70 -126
  51. package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  52. package/lib/module/shared/utils/gesture/compute-claimed-directions.js +77 -0
  53. package/lib/module/shared/utils/gesture/compute-claimed-directions.js.map +1 -0
  54. package/lib/module/shared/utils/gesture/determine-snap-target.js +1 -1
  55. package/lib/module/shared/utils/gesture/determine-snap-target.js.map +1 -1
  56. package/lib/module/shared/utils/gesture/find-collapse-target.js +44 -0
  57. package/lib/module/shared/utils/gesture/find-collapse-target.js.map +1 -0
  58. package/lib/module/shared/utils/gesture/resolve-ownership.js +83 -0
  59. package/lib/module/shared/utils/gesture/resolve-ownership.js.map +1 -0
  60. package/lib/module/shared/utils/gesture/velocity.js +16 -5
  61. package/lib/module/shared/utils/gesture/velocity.js.map +1 -1
  62. package/lib/typescript/shared/animation/snap-to.d.ts.map +1 -1
  63. package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
  64. package/lib/typescript/shared/components/screen-container.d.ts.map +1 -1
  65. package/lib/typescript/shared/constants.d.ts +6 -0
  66. package/lib/typescript/shared/constants.d.ts.map +1 -1
  67. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +15 -3
  68. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
  69. package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts +52 -2
  70. package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts.map +1 -1
  71. package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts +11 -6
  72. package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts.map +1 -1
  73. package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts +1 -1
  74. package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts.map +1 -1
  75. package/lib/typescript/shared/providers/gestures.provider.d.ts +28 -3
  76. package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
  77. package/lib/typescript/shared/types/ownership.types.d.ts +52 -0
  78. package/lib/typescript/shared/types/ownership.types.d.ts.map +1 -0
  79. package/lib/typescript/shared/types/screen.types.d.ts +22 -1
  80. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  81. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +23 -19
  82. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
  83. package/lib/typescript/shared/utils/gesture/compute-claimed-directions.d.ts +23 -0
  84. package/lib/typescript/shared/utils/gesture/compute-claimed-directions.d.ts.map +1 -0
  85. package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts +5 -1
  86. package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts.map +1 -1
  87. package/lib/typescript/shared/utils/gesture/find-collapse-target.d.ts +17 -0
  88. package/lib/typescript/shared/utils/gesture/find-collapse-target.d.ts.map +1 -0
  89. package/lib/typescript/shared/utils/gesture/resolve-ownership.d.ts +36 -0
  90. package/lib/typescript/shared/utils/gesture/resolve-ownership.d.ts.map +1 -0
  91. package/lib/typescript/shared/utils/gesture/velocity.d.ts.map +1 -1
  92. package/package.json +121 -120
  93. package/src/shared/animation/snap-to.ts +17 -11
  94. package/src/shared/components/create-transition-aware-component.tsx +28 -25
  95. package/src/shared/components/screen-container.tsx +79 -12
  96. package/src/shared/constants.ts +7 -0
  97. package/src/shared/hooks/gestures/use-build-gestures.tsx +80 -44
  98. package/src/shared/hooks/gestures/use-screen-gesture-handlers.ts +147 -71
  99. package/src/shared/hooks/gestures/use-scroll-registry.tsx +94 -86
  100. package/src/shared/hooks/use-backdrop-pointer-events.ts +1 -1
  101. package/src/shared/providers/gestures.provider.tsx +168 -25
  102. package/src/shared/types/ownership.types.ts +77 -0
  103. package/src/shared/types/screen.types.ts +24 -1
  104. package/src/shared/utils/gesture/check-gesture-activation.ts +82 -116
  105. package/src/shared/utils/gesture/compute-claimed-directions.ts +93 -0
  106. package/src/shared/utils/gesture/determine-snap-target.ts +6 -2
  107. package/src/shared/utils/gesture/find-collapse-target.ts +42 -0
  108. package/src/shared/utils/gesture/resolve-ownership.ts +110 -0
  109. package/src/shared/utils/gesture/velocity.ts +16 -6
  110. package/src/shared/__tests__/bounds.store.test.ts +0 -394
  111. package/src/shared/__tests__/derivations.test.ts +0 -156
  112. package/src/shared/__tests__/determine-dismissal.test.ts +0 -111
  113. package/src/shared/__tests__/determine-snap-target.test.ts +0 -268
  114. package/src/shared/__tests__/geometry.test.ts +0 -130
  115. package/src/shared/__tests__/gesture-activation.test.ts +0 -471
  116. package/src/shared/__tests__/gesture.velocity.test.ts +0 -131
  117. package/src/shared/__tests__/history.store.test.ts +0 -550
  118. package/src/shared/__tests__/sync-routes-with-removed.test.ts +0 -137
  119. package/src/shared/__tests__/validate-snap-points.test.ts +0 -125
@@ -5,33 +5,78 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.useScrollRegistry = void 0;
7
7
  var _react = require("react");
8
+ var _reactNativeGestureHandler = require("react-native-gesture-handler");
8
9
  var _reactNativeReanimated = require("react-native-reanimated");
9
10
  var _gestures = require("../../providers/gestures.provider");
10
11
  var _useStableCallback = _interopRequireDefault(require("../use-stable-callback"));
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- /** biome-ignore-all lint/style/noNonNullAssertion: <Will always consume context from GestureProvider> */
13
+ /**
14
+ * Connects ScrollViews to the gesture ownership system.
15
+ * Finds the gesture owner for the scroll axis and coordinates with their panGesture.
16
+ */
13
17
 
18
+ /** Walks up context tree to find the screen that owns this scroll axis. */
19
+ function findGestureOwnerForAxis(context, axis) {
20
+ let current = context;
21
+ const startIsolated = context?.isIsolated;
22
+ while (current) {
23
+ if (startIsolated !== undefined && current.isIsolated !== startIsolated) {
24
+ break;
25
+ }
26
+ const ownsAxis = axis === "vertical" ? current.claimedDirections?.vertical || current.claimedDirections?.["vertical-inverted"] : current.claimedDirections?.horizontal || current.claimedDirections?.["horizontal-inverted"];
27
+ if (ownsAxis) {
28
+ return {
29
+ scrollConfig: current.scrollConfig,
30
+ panGesture: current.panGesture
31
+ };
32
+ }
33
+ current = current.ancestorContext;
34
+ }
35
+ return {
36
+ scrollConfig: null,
37
+ panGesture: null
38
+ };
39
+ }
40
+ /**
41
+ * Returns scroll handlers and a native gesture for ScrollView coordination.
42
+ * Automatically finds the gesture owner for the scroll axis.
43
+ */
14
44
  const useScrollRegistry = props => {
15
45
  const context = (0, _gestures.useGestureContext)();
46
+ const scrollDirection = props.direction ?? "vertical";
16
47
  const {
17
48
  scrollConfig,
18
- ancestorContext
19
- } = context;
20
- const ancestorScrollConfigs = (0, _react.useMemo)(() => {
21
- const configs = [];
22
- let current = ancestorContext;
23
- while (current) {
24
- if (current.scrollConfig) {
25
- configs.push(current.scrollConfig);
49
+ panGesture
50
+ } = findGestureOwnerForAxis(context, scrollDirection);
51
+ const nativeGesture = (0, _react.useMemo)(() => {
52
+ if (!panGesture || !scrollConfig) return null;
53
+ const setIsTouched = () => {
54
+ "worklet";
55
+
56
+ if (scrollConfig.value) {
57
+ scrollConfig.value = {
58
+ ...scrollConfig.value,
59
+ isTouched: true
60
+ };
26
61
  }
27
- current = current.ancestorContext;
28
- }
29
- return configs;
30
- }, [ancestorContext]);
62
+ };
63
+ const clearIsTouched = () => {
64
+ "worklet";
65
+
66
+ if (scrollConfig.value) {
67
+ scrollConfig.value = {
68
+ ...scrollConfig.value,
69
+ isTouched: false
70
+ };
71
+ }
72
+ };
73
+ return _reactNativeGestureHandler.Gesture.Native().onTouchesDown(setIsTouched).onTouchesUp(clearIsTouched).onTouchesCancelled(clearIsTouched).requireExternalGestureToFail(panGesture);
74
+ }, [panGesture, scrollConfig]);
31
75
  const scrollHandler = (0, _reactNativeReanimated.useAnimatedScrollHandler)({
32
76
  onScroll: event => {
33
77
  props.onScroll?.(event);
34
- const updateScrollPosition = v => {
78
+ if (!scrollConfig) return;
79
+ const update = v => {
35
80
  "worklet";
36
81
 
37
82
  if (v === null) {
@@ -49,17 +94,13 @@ const useScrollRegistry = props => {
49
94
  v.y = event.contentOffset.y;
50
95
  return v;
51
96
  };
52
- scrollConfig.modify(updateScrollPosition);
53
-
54
- // Sync to ALL ancestors, not just immediate parent
55
- for (const ancestorConfig of ancestorScrollConfigs) {
56
- ancestorConfig.modify(updateScrollPosition);
57
- }
97
+ scrollConfig.modify(update);
58
98
  }
59
99
  });
60
100
  const onContentSizeChange = (0, _useStableCallback.default)((width, height) => {
61
101
  props.onContentSizeChange?.(width, height);
62
- const updateContentSize = v => {
102
+ if (!scrollConfig) return;
103
+ const update = v => {
63
104
  "worklet";
64
105
 
65
106
  if (v === null) {
@@ -77,18 +118,16 @@ const useScrollRegistry = props => {
77
118
  v.contentHeight = height;
78
119
  return v;
79
120
  };
80
- scrollConfig.modify(updateContentSize);
81
- for (const ancestorConfig of ancestorScrollConfigs) {
82
- ancestorConfig.modify(updateContentSize);
83
- }
121
+ scrollConfig.modify(update);
84
122
  });
85
123
  const onLayout = (0, _useStableCallback.default)(event => {
86
124
  props.onLayout?.(event);
125
+ if (!scrollConfig) return;
87
126
  const {
88
127
  width,
89
128
  height
90
129
  } = event.nativeEvent.layout;
91
- const updateLayout = v => {
130
+ const update = v => {
92
131
  "worklet";
93
132
 
94
133
  if (v === null) {
@@ -106,55 +145,13 @@ const useScrollRegistry = props => {
106
145
  v.layoutWidth = width;
107
146
  return v;
108
147
  };
109
- scrollConfig.modify(updateLayout);
110
- for (const ancestorConfig of ancestorScrollConfigs) {
111
- ancestorConfig.modify(updateLayout);
112
- }
113
- });
114
- const onTouchStart = (0, _useStableCallback.default)(event => {
115
- props.onTouchStart?.(event);
116
- const setTouched = v => {
117
- "worklet";
118
-
119
- if (v === null) {
120
- return {
121
- x: 0,
122
- y: 0,
123
- contentHeight: 0,
124
- contentWidth: 0,
125
- layoutHeight: 0,
126
- layoutWidth: 0,
127
- isTouched: true
128
- };
129
- }
130
- v.isTouched = true;
131
- return v;
132
- };
133
- scrollConfig.modify(setTouched);
134
- for (const ancestorConfig of ancestorScrollConfigs) {
135
- ancestorConfig.modify(setTouched);
136
- }
137
- });
138
- const onTouchEnd = (0, _useStableCallback.default)(event => {
139
- props.onTouchEnd?.(event);
140
- const clearTouched = v => {
141
- "worklet";
142
-
143
- if (v === null) return v;
144
- v.isTouched = false;
145
- return v;
146
- };
147
- scrollConfig.modify(clearTouched);
148
- for (const ancestorConfig of ancestorScrollConfigs) {
149
- ancestorConfig.modify(clearTouched);
150
- }
148
+ scrollConfig.modify(update);
151
149
  });
152
150
  return {
153
151
  scrollHandler,
154
152
  onContentSizeChange,
155
153
  onLayout,
156
- onTouchStart,
157
- onTouchEnd
154
+ nativeGesture
158
155
  };
159
156
  };
160
157
  exports.useScrollRegistry = useScrollRegistry;
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNativeReanimated","_gestures","_useStableCallback","_interopRequireDefault","e","__esModule","default","useScrollRegistry","props","context","useGestureContext","scrollConfig","ancestorContext","ancestorScrollConfigs","useMemo","configs","current","push","scrollHandler","useAnimatedScrollHandler","onScroll","event","updateScrollPosition","v","x","contentOffset","y","contentHeight","contentWidth","layoutHeight","layoutWidth","isTouched","modify","ancestorConfig","onContentSizeChange","useStableCallback","width","height","updateContentSize","onLayout","nativeEvent","layout","updateLayout","onTouchStart","setTouched","onTouchEnd","clearTouched","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/gestures/use-scroll-registry.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_gestures","_useStableCallback","_interopRequireDefault","e","__esModule","default","findGestureOwnerForAxis","context","axis","current","startIsolated","isIsolated","undefined","ownsAxis","claimedDirections","vertical","horizontal","scrollConfig","panGesture","ancestorContext","useScrollRegistry","props","useGestureContext","scrollDirection","direction","nativeGesture","useMemo","setIsTouched","value","isTouched","clearIsTouched","Gesture","Native","onTouchesDown","onTouchesUp","onTouchesCancelled","requireExternalGestureToFail","scrollHandler","useAnimatedScrollHandler","onScroll","event","update","v","x","contentOffset","y","contentHeight","contentWidth","layoutHeight","layoutWidth","modify","onContentSizeChange","useStableCallback","width","height","onLayout","nativeEvent","layout","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/gestures/use-scroll-registry.tsx"],"mappings":"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","ignoreList":[]}
@@ -4,15 +4,102 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.useGestureContext = exports.ScreenGestureProvider = void 0;
7
- var _reactNative = require("react-native");
8
- var _reactNativeGestureHandler = require("react-native-gesture-handler");
7
+ var _native = require("@react-navigation/native");
8
+ var _react = require("react");
9
9
  var _reactNativeReanimated = require("react-native-reanimated");
10
10
  var _useBuildGestures = require("../hooks/gestures/use-build-gestures");
11
- var _useBackdropPointerEvents = require("../hooks/use-backdrop-pointer-events");
11
+ var _gesture = require("../stores/gesture.store");
12
+ var _stack = require("../types/stack.types");
12
13
  var _createProvider = _interopRequireDefault(require("../utils/create-provider"));
14
+ var _computeClaimedDirections = require("../utils/gesture/compute-claimed-directions");
13
15
  var _keys = require("./screen/keys.provider");
14
- var _jsxRuntime = require("react/jsx-runtime");
16
+ var _core = require("./stack/core.provider");
15
17
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
18
+ /**
19
+ * Gesture System - Core Provider
20
+ *
21
+ * Each screen gets a GestureContext containing:
22
+ * - panGesture: Pan gesture handler for dismiss/snap
23
+ * - scrollConfig: Scroll state for boundary detection
24
+ * - claimedDirections: Which directions this screen handles
25
+ * - childDirectionClaims: Claims registered by descendant screens
26
+ *
27
+ * ScrollView coordination is handled by useScrollRegistry, which finds the
28
+ * gesture owner for the scroll axis and creates appropriate Native gestures.
29
+ */
30
+
31
+ const NO_CLAIMS = {
32
+ vertical: null,
33
+ "vertical-inverted": null,
34
+ horizontal: null,
35
+ "horizontal-inverted": null
36
+ };
37
+ const DIRECTIONS = ["vertical", "vertical-inverted", "horizontal", "horizontal-inverted"];
38
+
39
+ /**
40
+ * Registers direction claims on ancestors that this screen shadows.
41
+ * Only registers claims when this screen is the current (topmost) route
42
+ * in its navigator, preventing unfocused screens from blocking gestures.
43
+ */
44
+ function useRegisterDirectionClaims(ancestorContext, claimedDirections, routeKey, isIsolated, isCurrentRoute) {
45
+ (0, _react.useEffect)(() => {
46
+ // Only register claims when this screen is the current route
47
+ if (!isCurrentRoute || !ancestorContext) {
48
+ return;
49
+ }
50
+ const gestureValues = _gesture.GestureStore.getRouteGestures(routeKey);
51
+ const isDismissing = gestureValues.isDismissing;
52
+ const claimedAncestors = [];
53
+ let ancestor = ancestorContext;
54
+ while (ancestor) {
55
+ if (ancestor.isIsolated !== isIsolated) break;
56
+ const shadowedDirections = [];
57
+ for (const dir of DIRECTIONS) {
58
+ if (claimedDirections[dir] && ancestor.claimedDirections?.[dir]) {
59
+ shadowedDirections.push(dir);
60
+ }
61
+ }
62
+ if (shadowedDirections.length > 0) {
63
+ claimedAncestors.push({
64
+ ancestor,
65
+ directions: shadowedDirections
66
+ });
67
+ const newClaims = {
68
+ ...ancestor.childDirectionClaims.value
69
+ };
70
+ for (const dir of shadowedDirections) {
71
+ newClaims[dir] = {
72
+ routeKey,
73
+ isDismissing
74
+ };
75
+ }
76
+ ancestor.childDirectionClaims.value = newClaims;
77
+ }
78
+ ancestor = ancestor.ancestorContext;
79
+ }
80
+ return () => {
81
+ for (const {
82
+ ancestor,
83
+ directions
84
+ } of claimedAncestors) {
85
+ const currentClaims = ancestor.childDirectionClaims.value;
86
+ const newClaims = {
87
+ ...currentClaims
88
+ };
89
+ let needsUpdate = false;
90
+ for (const dir of directions) {
91
+ if (currentClaims[dir]?.routeKey === routeKey) {
92
+ newClaims[dir] = null;
93
+ needsUpdate = true;
94
+ }
95
+ }
96
+ if (needsUpdate) {
97
+ ancestor.childDirectionClaims.value = newClaims;
98
+ }
99
+ }
100
+ };
101
+ }, [ancestorContext, claimedDirections, routeKey, isIsolated, isCurrentRoute]);
102
+ }
16
103
  const {
17
104
  ScreenGestureProvider,
18
105
  useScreenGestureContext: useGestureContext
@@ -24,47 +111,48 @@ const {
24
111
  const {
25
112
  current
26
113
  } = (0, _keys.useKeys)();
27
- const ancestorContext = useGestureContext();
28
- const scrollConfig = (0, _reactNativeReanimated.useSharedValue)(null);
29
114
  const {
30
- pointerEvents
31
- } = (0, _useBackdropPointerEvents.useBackdropPointerEvents)();
115
+ flags
116
+ } = (0, _core.useStackCoreContext)();
117
+ const ancestorContext = useGestureContext();
32
118
  const hasGestures = current.options.gestureEnabled === true;
119
+ const isIsolated = flags.STACK_TYPE === _stack.StackType.COMPONENT;
120
+ const hasSnapPoints = Array.isArray(current.options.snapPoints) && current.options.snapPoints.length > 0;
121
+ const claimedDirections = (0, _react.useMemo)(() => (0, _computeClaimedDirections.computeClaimedDirections)(hasGestures, current.options.gestureDirection, hasSnapPoints), [hasGestures, current.options.gestureDirection, hasSnapPoints]);
122
+ const routeKey = current.route.key;
123
+
124
+ // Check if this screen is the current (topmost) route in its navigator
125
+ const isCurrentRoute = (0, _native.useNavigationState)(state => state.routes[state.index]?.key === routeKey);
126
+ const scrollConfig = (0, _reactNativeReanimated.useSharedValue)(null);
127
+ const childDirectionClaims = (0, _reactNativeReanimated.useSharedValue)(NO_CLAIMS);
128
+ useRegisterDirectionClaims(ancestorContext, claimedDirections, routeKey, isIsolated, isCurrentRoute);
33
129
  const {
34
130
  panGesture,
35
131
  panGestureRef,
36
- nativeGesture,
37
132
  gestureAnimationValues
38
133
  } = (0, _useBuildGestures.useBuildGestures)({
39
134
  scrollConfig,
40
- ancestorContext
135
+ ancestorContext,
136
+ claimedDirections,
137
+ childDirectionClaims,
138
+ isIsolated
41
139
  });
42
140
  const value = {
43
141
  panGesture,
44
142
  panGestureRef,
45
143
  scrollConfig,
46
- nativeGesture,
47
144
  gestureAnimationValues,
48
145
  ancestorContext,
49
- gestureEnabled: hasGestures
146
+ gestureEnabled: hasGestures,
147
+ isIsolated,
148
+ claimedDirections,
149
+ childDirectionClaims
50
150
  };
51
151
  return {
52
152
  value,
53
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeGestureHandler.GestureDetector, {
54
- gesture: panGesture,
55
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
56
- style: styles.container,
57
- pointerEvents: pointerEvents,
58
- children: children
59
- })
60
- })
153
+ children
61
154
  };
62
155
  });
63
156
  exports.useGestureContext = useGestureContext;
64
157
  exports.ScreenGestureProvider = ScreenGestureProvider;
65
- const styles = _reactNative.StyleSheet.create({
66
- container: {
67
- flex: 1
68
- }
69
- });
70
158
  //# sourceMappingURL=gestures.provider.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_reactNativeGestureHandler","_reactNativeReanimated","_useBuildGestures","_useBackdropPointerEvents","_createProvider","_interopRequireDefault","_keys","_jsxRuntime","e","__esModule","default","ScreenGestureProvider","useScreenGestureContext","useGestureContext","createProvider","guarded","children","current","useKeys","ancestorContext","scrollConfig","useSharedValue","pointerEvents","useBackdropPointerEvents","hasGestures","options","gestureEnabled","panGesture","panGestureRef","nativeGesture","gestureAnimationValues","useBuildGestures","value","jsx","GestureDetector","gesture","View","style","styles","container","exports","StyleSheet","create","flex"],"sourceRoot":"../../../../src","sources":["shared/providers/gestures.provider.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,0BAAA,GAAAD,OAAA;AAKA,IAAAE,sBAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,yBAAA,GAAAJ,OAAA;AAEA,IAAAK,eAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,KAAA,GAAAP,OAAA;AAAiD,IAAAQ,WAAA,GAAAR,OAAA;AAAA,SAAAM,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AA0B1C,MAAM;EACZG,qBAAqB;EACrBC,uBAAuB,EAAEC;AAC1B,CAAC,GAAG,IAAAC,uBAAc,EAAC,eAAe,EAAE;EAAEC,OAAO,EAAE;AAAM,CAAC,CAAC,CAGrD,CAAC;EAAEC;AAAS,CAAC,KAAK;EACnB,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,aAAO,EAAC,CAAC;EAC7B,MAAMC,eAAe,GAAGN,iBAAiB,CAAC,CAAC;EAC3C,MAAMO,YAAY,GAAG,IAAAC,qCAAc,EAAsB,IAAI,CAAC;EAC9D,MAAM;IAAEC;EAAc,CAAC,GAAG,IAAAC,kDAAwB,EAAC,CAAC;EAEpD,MAAMC,WAAW,GAAGP,OAAO,CAACQ,OAAO,CAACC,cAAc,KAAK,IAAI;EAE3D,MAAM;IAAEC,UAAU;IAAEC,aAAa;IAAEC,aAAa;IAAEC;EAAuB,CAAC,GACzE,IAAAC,kCAAgB,EAAC;IAChBX,YAAY;IACZD;EACD,CAAC,CAAC;EAEH,MAAMa,KAAyB,GAAG;IACjCL,UAAU;IACVC,aAAa;IACbR,YAAY;IACZS,aAAa;IACbC,sBAAsB;IACtBX,eAAe;IACfO,cAAc,EAAEF;EACjB,CAAC;EAED,OAAO;IACNQ,KAAK;IACLhB,QAAQ,eACP,IAAAT,WAAA,CAAA0B,GAAA,EAACjC,0BAAA,CAAAkC,eAAe;MAACC,OAAO,EAAER,UAAW;MAAAX,QAAA,eACpC,IAAAT,WAAA,CAAA0B,GAAA,EAACnC,YAAA,CAAAsC,IAAI;QAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;QAACjB,aAAa,EAAEA,aAAc;QAAAN,QAAA,EAC1DA;MAAQ,CACJ;IAAC,CACS;EAEnB,CAAC;AACF,CAAC,CAAC;AAACwB,OAAA,CAAA3B,iBAAA,GAAAA,iBAAA;AAAA2B,OAAA,CAAA7B,qBAAA,GAAAA,qBAAA;AAEH,MAAM2B,MAAM,GAAGG,uBAAU,CAACC,MAAM,CAAC;EAChCH,SAAS,EAAE;IACVI,IAAI,EAAE;EACP;AACD,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_native","require","_react","_reactNativeReanimated","_useBuildGestures","_gesture","_stack","_createProvider","_interopRequireDefault","_computeClaimedDirections","_keys","_core","e","__esModule","default","NO_CLAIMS","vertical","horizontal","DIRECTIONS","useRegisterDirectionClaims","ancestorContext","claimedDirections","routeKey","isIsolated","isCurrentRoute","useEffect","gestureValues","GestureStore","getRouteGestures","isDismissing","claimedAncestors","ancestor","shadowedDirections","dir","push","length","directions","newClaims","childDirectionClaims","value","currentClaims","needsUpdate","ScreenGestureProvider","useScreenGestureContext","useGestureContext","createProvider","guarded","children","current","useKeys","flags","useStackCoreContext","hasGestures","options","gestureEnabled","STACK_TYPE","StackType","COMPONENT","hasSnapPoints","Array","isArray","snapPoints","useMemo","computeClaimedDirections","gestureDirection","route","key","useNavigationState","state","routes","index","scrollConfig","useSharedValue","panGesture","panGestureRef","gestureAnimationValues","useBuildGestures","exports"],"sourceRoot":"../../../../src","sources":["shared/providers/gestures.provider.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.NO_OWNERSHIP = exports.NO_CLAIMS = exports.DIRECTIONS = void 0;
7
+ /**
8
+ * Gesture Ownership System Types
9
+ *
10
+ * Core principles:
11
+ * 1. Gestures dismiss stacks, not screens
12
+ * 2. Ownership is per-direction (4 independent directions)
13
+ * 3. Shadowing: child claiming same direction blocks parent
14
+ * 4. Inheritance: no local claim walks up tree to find owner
15
+ */
16
+
17
+ /**
18
+ * The four independent gesture directions.
19
+ * Each direction is owned independently.
20
+ *
21
+ * Uses the same format as GestureDirection from gesture.types.ts
22
+ * (excluding 'bidirectional' which expands to all four).
23
+ */
24
+
25
+ /**
26
+ * All possible directions as an array for iteration.
27
+ */
28
+ const DIRECTIONS = exports.DIRECTIONS = ["vertical", "vertical-inverted", "horizontal", "horizontal-inverted"];
29
+
30
+ /**
31
+ * Map of which directions a screen claims ownership of.
32
+ * A screen claims a direction when:
33
+ * - gestureEnabled is true AND
34
+ * - gestureDirection includes that direction
35
+ *
36
+ * For snap points, both directions on the axis are claimed automatically.
37
+ */
38
+
39
+ /**
40
+ * Empty claims - used when gestureEnabled is false.
41
+ */
42
+ const NO_CLAIMS = exports.NO_CLAIMS = {
43
+ vertical: false,
44
+ "vertical-inverted": false,
45
+ horizontal: false,
46
+ "horizontal-inverted": false
47
+ };
48
+
49
+ /**
50
+ * Ownership status for a direction relative to the current screen.
51
+ *
52
+ * - 'self': Current screen owns this direction (should activate)
53
+ * - 'ancestor': An ancestor owns this direction (should fail to bubble up)
54
+ * - 'none': No one owns this direction (should fail, no gesture response)
55
+ */
56
+
57
+ /**
58
+ * Map of ownership status for all four directions.
59
+ * Pre-computed during render for worklet access.
60
+ */
61
+
62
+ /**
63
+ * Empty ownership - used when no gestures are configured anywhere.
64
+ */
65
+ const NO_OWNERSHIP = exports.NO_OWNERSHIP = {
66
+ vertical: "none",
67
+ "vertical-inverted": "none",
68
+ horizontal: "none",
69
+ "horizontal-inverted": "none"
70
+ };
71
+ //# sourceMappingURL=ownership.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DIRECTIONS","exports","NO_CLAIMS","vertical","horizontal","NO_OWNERSHIP"],"sourceRoot":"../../../../src","sources":["shared/types/ownership.types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAOA;AACA;AACA;AACO,MAAMA,UAAuB,GAAAC,OAAA,CAAAD,UAAA,GAAG,CACtC,UAAU,EACV,mBAAmB,EACnB,YAAY,EACZ,qBAAqB,CACrB;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACO,MAAME,SAA4B,GAAAD,OAAA,CAAAC,SAAA,GAAG;EAC3CC,QAAQ,EAAE,KAAK;EACf,mBAAmB,EAAE,KAAK;EAC1BC,UAAU,EAAE,KAAK;EACjB,qBAAqB,EAAE;AACxB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACA;;AAGA;AACA;AACA;AACO,MAAMC,YAAgC,GAAAJ,OAAA,CAAAI,YAAA,GAAG;EAC/CF,QAAQ,EAAE,MAAM;EAChB,mBAAmB,EAAE,MAAM;EAC3BC,UAAU,EAAE,MAAM;EAClB,qBAAqB,EAAE;AACxB,CAAC","ignoreList":[]}