react-native-screen-transitions 4.0.0 → 4.1.0-alpha.0

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 (411) hide show
  1. package/lib/commonjs/adapters/with-screen-transitions/stack-layout.js +1 -3
  2. package/lib/commonjs/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  3. package/lib/commonjs/components/blank-stack-host.js +21 -0
  4. package/lib/commonjs/components/blank-stack-host.js.map +1 -0
  5. package/lib/commonjs/components/blank-stack-runtime.js +33 -0
  6. package/lib/commonjs/components/blank-stack-runtime.js.map +1 -0
  7. package/lib/commonjs/components/blank-stack-scene.js +31 -0
  8. package/lib/commonjs/components/blank-stack-scene.js.map +1 -0
  9. package/lib/commonjs/components/blank-stack-view.js +23 -0
  10. package/lib/commonjs/components/blank-stack-view.js.map +1 -0
  11. package/lib/commonjs/components/overlay/helpers/run-overlay-slot-interpolator.js +2 -4
  12. package/lib/commonjs/components/overlay/helpers/run-overlay-slot-interpolator.js.map +1 -1
  13. package/lib/commonjs/components/overlay/hooks/use-overlay-slot.js +1 -16
  14. package/lib/commonjs/components/overlay/hooks/use-overlay-slot.js.map +1 -1
  15. package/lib/commonjs/components/overlay/variations/overlay-host.js +0 -1
  16. package/lib/commonjs/components/overlay/variations/overlay-host.js.map +1 -1
  17. package/lib/commonjs/components/screen-lifecycle/index.js +2 -2
  18. package/lib/commonjs/components/screen-lifecycle/index.js.map +1 -1
  19. package/lib/commonjs/custom-navigator.js +41 -0
  20. package/lib/commonjs/custom-navigator.js.map +1 -0
  21. package/lib/commonjs/hooks/navigation/use-blank-stack-state.js +26 -0
  22. package/lib/commonjs/hooks/navigation/use-blank-stack-state.js.map +1 -0
  23. package/lib/commonjs/hooks/navigation/use-navigation-helpers.js +2 -2
  24. package/lib/commonjs/hooks/navigation/use-navigation-helpers.js.map +1 -1
  25. package/lib/commonjs/hooks/navigation/use-screen-state.js +1 -1
  26. package/lib/commonjs/hooks/navigation/use-screen-state.js.map +1 -1
  27. package/lib/commonjs/providers/screen/animation/animation.provider.js +11 -24
  28. package/lib/commonjs/providers/screen/animation/animation.provider.js.map +1 -1
  29. package/lib/commonjs/providers/screen/animation/helpers/pipeline.js +19 -36
  30. package/lib/commonjs/providers/screen/animation/helpers/pipeline.js.map +1 -1
  31. package/lib/commonjs/providers/screen/animation/use-screen-animation.js +16 -12
  32. package/lib/commonjs/providers/screen/animation/use-screen-animation.js.map +1 -1
  33. package/lib/commonjs/providers/screen/descriptors/descriptors.provider.js +31 -64
  34. package/lib/commonjs/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  35. package/lib/commonjs/providers/screen/descriptors/index.js +6 -0
  36. package/lib/commonjs/providers/screen/descriptors/index.js.map +1 -1
  37. package/lib/commonjs/providers/screen/gestures/gestures.provider.js +14 -25
  38. package/lib/commonjs/providers/screen/gestures/gestures.provider.js.map +1 -1
  39. package/lib/commonjs/providers/screen/gestures/hooks/use-screen-gesture-config.js +3 -4
  40. package/lib/commonjs/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  41. package/lib/commonjs/providers/screen/gestures/hooks/use-screen-gesture.js +6 -7
  42. package/lib/commonjs/providers/screen/gestures/hooks/use-screen-gesture.js.map +1 -1
  43. package/lib/commonjs/providers/screen/gestures/ownership/gesture-ownership-coordinator.js +149 -0
  44. package/lib/commonjs/providers/screen/gestures/ownership/gesture-ownership-coordinator.js.map +1 -0
  45. package/lib/commonjs/providers/screen/gestures/ownership/use-gesture-scroll-coordination.js +15 -0
  46. package/lib/commonjs/providers/screen/gestures/ownership/use-gesture-scroll-coordination.js.map +1 -0
  47. package/lib/commonjs/providers/screen/gestures/ownership/use-register-gesture-ownership.js +52 -0
  48. package/lib/commonjs/providers/screen/gestures/ownership/use-register-gesture-ownership.js.map +1 -0
  49. package/lib/commonjs/providers/screen/gestures/pan/activation/pan-activation-decision.js +4 -9
  50. package/lib/commonjs/providers/screen/gestures/pan/activation/pan-activation-decision.js.map +1 -1
  51. package/lib/commonjs/providers/screen/gestures/pan/activation/use-pan-activation.js +3 -3
  52. package/lib/commonjs/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  53. package/lib/commonjs/providers/screen/gestures/pan/use-build-pan-gesture.js +2 -2
  54. package/lib/commonjs/providers/screen/gestures/pan/use-build-pan-gesture.js.map +1 -1
  55. package/lib/commonjs/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +13 -11
  56. package/lib/commonjs/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  57. package/lib/commonjs/providers/screen/gestures/shared/policy.js +4 -9
  58. package/lib/commonjs/providers/screen/gestures/shared/policy.js.map +1 -1
  59. package/lib/commonjs/providers/screen/gestures/types.js +2 -2
  60. package/lib/commonjs/providers/screen/gestures/types.js.map +1 -1
  61. package/lib/commonjs/providers/screen/screen-composer.js +10 -13
  62. package/lib/commonjs/providers/screen/screen-composer.js.map +1 -1
  63. package/lib/commonjs/providers/screen/styles/helpers/create-interpolator-scope.js +3 -15
  64. package/lib/commonjs/providers/screen/styles/helpers/create-interpolator-scope.js.map +1 -1
  65. package/lib/commonjs/providers/screen/styles/hooks/use-interpolated-style-maps.js +4 -25
  66. package/lib/commonjs/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  67. package/lib/commonjs/providers/screen/topology/helpers/create-screen-topology.js +176 -0
  68. package/lib/commonjs/providers/screen/topology/helpers/create-screen-topology.js.map +1 -0
  69. package/lib/commonjs/providers/screen/topology/hooks/use-resolved-transition-key.js +17 -0
  70. package/lib/commonjs/providers/screen/topology/hooks/use-resolved-transition-key.js.map +1 -0
  71. package/lib/commonjs/{factories/screen-topology → providers/screen/topology/hooks}/use-screen-relationships.js +1 -1
  72. package/lib/commonjs/providers/screen/topology/hooks/use-screen-relationships.js.map +1 -0
  73. package/lib/commonjs/{factories/screen-topology → providers/screen/topology}/index.js +16 -15
  74. package/lib/commonjs/providers/screen/topology/index.js.map +1 -0
  75. package/lib/commonjs/providers/screen/topology/topology.provider.js +56 -0
  76. package/lib/commonjs/providers/screen/topology/topology.provider.js.map +1 -0
  77. package/lib/commonjs/providers/screen/topology/types.js.map +1 -0
  78. package/lib/commonjs/providers/screen/use-current-screen-relationships.js +2 -2
  79. package/lib/commonjs/providers/screen/use-current-screen-relationships.js.map +1 -1
  80. package/lib/commonjs/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js +1 -1
  81. package/lib/commonjs/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js.map +1 -1
  82. package/lib/commonjs/providers/stack/blank-stack-state/helpers/state-equality.js +1 -1
  83. package/lib/commonjs/providers/stack/blank-stack-state/helpers/state-equality.js.map +1 -1
  84. package/lib/commonjs/providers/stack/stack-transition/index.js +20 -0
  85. package/lib/commonjs/providers/stack/stack-transition/index.js.map +1 -0
  86. package/lib/commonjs/providers/stack/stack-transition/stack-transition-controller.js +197 -0
  87. package/lib/commonjs/providers/stack/stack-transition/stack-transition-controller.js.map +1 -0
  88. package/lib/commonjs/providers/stack/stack-transition/stack-transition.provider.js +92 -0
  89. package/lib/commonjs/providers/stack/stack-transition/stack-transition.provider.js.map +1 -0
  90. package/lib/commonjs/providers/stack/stack-transition/use-stack-transition.js +46 -0
  91. package/lib/commonjs/providers/stack/stack-transition/use-stack-transition.js.map +1 -0
  92. package/lib/commonjs/types/ownership.types.js +2 -25
  93. package/lib/commonjs/types/ownership.types.js.map +1 -1
  94. package/lib/module/adapters/with-screen-transitions/stack-layout.js +1 -3
  95. package/lib/module/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  96. package/lib/module/components/blank-stack-host.js +17 -0
  97. package/lib/module/components/blank-stack-host.js.map +1 -0
  98. package/lib/module/components/blank-stack-runtime.js +29 -0
  99. package/lib/module/components/blank-stack-runtime.js.map +1 -0
  100. package/lib/module/components/blank-stack-scene.js +27 -0
  101. package/lib/module/components/blank-stack-scene.js.map +1 -0
  102. package/lib/module/components/blank-stack-view.js +19 -0
  103. package/lib/module/components/blank-stack-view.js.map +1 -0
  104. package/lib/module/components/overlay/helpers/run-overlay-slot-interpolator.js +2 -4
  105. package/lib/module/components/overlay/helpers/run-overlay-slot-interpolator.js.map +1 -1
  106. package/lib/module/components/overlay/hooks/use-overlay-slot.js +1 -16
  107. package/lib/module/components/overlay/hooks/use-overlay-slot.js.map +1 -1
  108. package/lib/module/components/overlay/variations/overlay-host.js +0 -1
  109. package/lib/module/components/overlay/variations/overlay-host.js.map +1 -1
  110. package/lib/module/components/screen-lifecycle/index.js +2 -2
  111. package/lib/module/components/screen-lifecycle/index.js.map +1 -1
  112. package/lib/module/custom-navigator.js +8 -0
  113. package/lib/module/custom-navigator.js.map +1 -0
  114. package/lib/module/hooks/navigation/use-blank-stack-state.js +21 -0
  115. package/lib/module/hooks/navigation/use-blank-stack-state.js.map +1 -0
  116. package/lib/module/hooks/navigation/use-navigation-helpers.js +2 -2
  117. package/lib/module/hooks/navigation/use-navigation-helpers.js.map +1 -1
  118. package/lib/module/hooks/navigation/use-screen-state.js +1 -1
  119. package/lib/module/hooks/navigation/use-screen-state.js.map +1 -1
  120. package/lib/module/providers/screen/animation/animation.provider.js +11 -24
  121. package/lib/module/providers/screen/animation/animation.provider.js.map +1 -1
  122. package/lib/module/providers/screen/animation/helpers/pipeline.js +19 -36
  123. package/lib/module/providers/screen/animation/helpers/pipeline.js.map +1 -1
  124. package/lib/module/providers/screen/animation/use-screen-animation.js +17 -13
  125. package/lib/module/providers/screen/animation/use-screen-animation.js.map +1 -1
  126. package/lib/module/providers/screen/descriptors/descriptors.provider.js +31 -66
  127. package/lib/module/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  128. package/lib/module/providers/screen/descriptors/index.js +1 -1
  129. package/lib/module/providers/screen/descriptors/index.js.map +1 -1
  130. package/lib/module/providers/screen/gestures/gestures.provider.js +16 -27
  131. package/lib/module/providers/screen/gestures/gestures.provider.js.map +1 -1
  132. package/lib/module/providers/screen/gestures/hooks/use-screen-gesture-config.js +3 -4
  133. package/lib/module/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  134. package/lib/module/providers/screen/gestures/hooks/use-screen-gesture.js +6 -7
  135. package/lib/module/providers/screen/gestures/hooks/use-screen-gesture.js.map +1 -1
  136. package/lib/module/providers/screen/gestures/ownership/gesture-ownership-coordinator.js +144 -0
  137. package/lib/module/providers/screen/gestures/ownership/gesture-ownership-coordinator.js.map +1 -0
  138. package/lib/module/providers/screen/gestures/ownership/use-gesture-scroll-coordination.js +10 -0
  139. package/lib/module/providers/screen/gestures/ownership/use-gesture-scroll-coordination.js.map +1 -0
  140. package/lib/module/providers/screen/gestures/ownership/use-register-gesture-ownership.js +47 -0
  141. package/lib/module/providers/screen/gestures/ownership/use-register-gesture-ownership.js.map +1 -0
  142. package/lib/module/providers/screen/gestures/pan/activation/pan-activation-decision.js +4 -9
  143. package/lib/module/providers/screen/gestures/pan/activation/pan-activation-decision.js.map +1 -1
  144. package/lib/module/providers/screen/gestures/pan/activation/use-pan-activation.js +3 -3
  145. package/lib/module/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  146. package/lib/module/providers/screen/gestures/pan/use-build-pan-gesture.js +2 -2
  147. package/lib/module/providers/screen/gestures/pan/use-build-pan-gesture.js.map +1 -1
  148. package/lib/module/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +13 -11
  149. package/lib/module/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  150. package/lib/module/providers/screen/gestures/shared/policy.js +4 -9
  151. package/lib/module/providers/screen/gestures/shared/policy.js.map +1 -1
  152. package/lib/module/providers/screen/gestures/types.js +1 -1
  153. package/lib/module/providers/screen/gestures/types.js.map +1 -1
  154. package/lib/module/providers/screen/screen-composer.js +10 -13
  155. package/lib/module/providers/screen/screen-composer.js.map +1 -1
  156. package/lib/module/providers/screen/styles/helpers/create-interpolator-scope.js +3 -15
  157. package/lib/module/providers/screen/styles/helpers/create-interpolator-scope.js.map +1 -1
  158. package/lib/module/providers/screen/styles/hooks/use-interpolated-style-maps.js +4 -25
  159. package/lib/module/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  160. package/lib/module/providers/screen/topology/helpers/create-screen-topology.js +171 -0
  161. package/lib/module/providers/screen/topology/helpers/create-screen-topology.js.map +1 -0
  162. package/lib/module/providers/screen/topology/hooks/use-resolved-transition-key.js +12 -0
  163. package/lib/module/providers/screen/topology/hooks/use-resolved-transition-key.js.map +1 -0
  164. package/lib/module/{factories/screen-topology → providers/screen/topology/hooks}/use-screen-relationships.js +1 -1
  165. package/lib/module/providers/screen/topology/hooks/use-screen-relationships.js.map +1 -0
  166. package/lib/module/providers/screen/topology/index.js +7 -0
  167. package/lib/module/providers/screen/topology/index.js.map +1 -0
  168. package/lib/module/providers/screen/topology/topology.provider.js +50 -0
  169. package/lib/module/providers/screen/topology/topology.provider.js.map +1 -0
  170. package/lib/module/providers/screen/topology/types.js.map +1 -0
  171. package/lib/module/providers/screen/use-current-screen-relationships.js +1 -1
  172. package/lib/module/providers/screen/use-current-screen-relationships.js.map +1 -1
  173. package/lib/module/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js +1 -1
  174. package/lib/module/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js.map +1 -1
  175. package/lib/module/providers/stack/blank-stack-state/helpers/state-equality.js +1 -1
  176. package/lib/module/providers/stack/blank-stack-state/helpers/state-equality.js.map +1 -1
  177. package/lib/module/providers/stack/stack-transition/index.js +5 -0
  178. package/lib/module/providers/stack/stack-transition/index.js.map +1 -0
  179. package/lib/module/providers/stack/stack-transition/stack-transition-controller.js +189 -0
  180. package/lib/module/providers/stack/stack-transition/stack-transition-controller.js.map +1 -0
  181. package/lib/module/providers/stack/stack-transition/stack-transition.provider.js +85 -0
  182. package/lib/module/providers/stack/stack-transition/stack-transition.provider.js.map +1 -0
  183. package/lib/module/providers/stack/stack-transition/use-stack-transition.js +41 -0
  184. package/lib/module/providers/stack/stack-transition/use-stack-transition.js.map +1 -0
  185. package/lib/module/types/animation.types.js.map +1 -1
  186. package/lib/module/types/ownership.types.js +1 -24
  187. package/lib/module/types/ownership.types.js.map +1 -1
  188. package/lib/typescript/adapters/with-screen-transitions/stack-layout.d.ts.map +1 -1
  189. package/lib/typescript/components/blank-stack-host.d.ts +9 -0
  190. package/lib/typescript/components/blank-stack-host.d.ts.map +1 -0
  191. package/lib/typescript/components/blank-stack-runtime.d.ts +8 -0
  192. package/lib/typescript/components/blank-stack-runtime.d.ts.map +1 -0
  193. package/lib/typescript/components/blank-stack-scene.d.ts +5 -0
  194. package/lib/typescript/components/blank-stack-scene.d.ts.map +1 -0
  195. package/lib/typescript/components/blank-stack-view.d.ts +2 -0
  196. package/lib/typescript/components/blank-stack-view.d.ts.map +1 -0
  197. package/lib/typescript/components/overlay/helpers/run-overlay-slot-interpolator.d.ts +2 -3
  198. package/lib/typescript/components/overlay/helpers/run-overlay-slot-interpolator.d.ts.map +1 -1
  199. package/lib/typescript/components/overlay/hooks/use-overlay-slot.d.ts.map +1 -1
  200. package/lib/typescript/custom-navigator.d.ts +8 -0
  201. package/lib/typescript/custom-navigator.d.ts.map +1 -0
  202. package/lib/typescript/hooks/navigation/use-blank-stack-state.d.ts +8 -0
  203. package/lib/typescript/hooks/navigation/use-blank-stack-state.d.ts.map +1 -0
  204. package/lib/typescript/hooks/navigation/use-navigation-helpers.d.ts.map +1 -1
  205. package/lib/typescript/index.d.ts +1 -1
  206. package/lib/typescript/index.d.ts.map +1 -1
  207. package/lib/typescript/providers/screen/animation/animation.provider.d.ts +2 -5
  208. package/lib/typescript/providers/screen/animation/animation.provider.d.ts.map +1 -1
  209. package/lib/typescript/providers/screen/animation/helpers/pipeline.d.ts +2 -4
  210. package/lib/typescript/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
  211. package/lib/typescript/providers/screen/animation/types.d.ts +0 -9
  212. package/lib/typescript/providers/screen/animation/types.d.ts.map +1 -1
  213. package/lib/typescript/providers/screen/animation/use-screen-animation.d.ts.map +1 -1
  214. package/lib/typescript/providers/screen/descriptors/descriptors.provider.d.ts +9 -11
  215. package/lib/typescript/providers/screen/descriptors/descriptors.provider.d.ts.map +1 -1
  216. package/lib/typescript/providers/screen/descriptors/index.d.ts +1 -1
  217. package/lib/typescript/providers/screen/descriptors/index.d.ts.map +1 -1
  218. package/lib/typescript/providers/screen/gestures/gestures.provider.d.ts +9 -12
  219. package/lib/typescript/providers/screen/gestures/gestures.provider.d.ts.map +1 -1
  220. package/lib/typescript/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts +2 -2
  221. package/lib/typescript/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts.map +1 -1
  222. package/lib/typescript/providers/screen/gestures/hooks/use-screen-gesture.d.ts +3 -2
  223. package/lib/typescript/providers/screen/gestures/hooks/use-screen-gesture.d.ts.map +1 -1
  224. package/lib/typescript/providers/screen/gestures/index.d.ts +1 -1
  225. package/lib/typescript/providers/screen/gestures/index.d.ts.map +1 -1
  226. package/lib/typescript/providers/screen/gestures/ownership/gesture-ownership-coordinator.d.ts +26 -0
  227. package/lib/typescript/providers/screen/gestures/ownership/gesture-ownership-coordinator.d.ts.map +1 -0
  228. package/lib/typescript/providers/screen/gestures/ownership/use-gesture-scroll-coordination.d.ts +3 -0
  229. package/lib/typescript/providers/screen/gestures/ownership/use-gesture-scroll-coordination.d.ts.map +1 -0
  230. package/lib/typescript/providers/screen/gestures/ownership/use-register-gesture-ownership.d.ts +9 -0
  231. package/lib/typescript/providers/screen/gestures/ownership/use-register-gesture-ownership.d.ts.map +1 -0
  232. package/lib/typescript/providers/screen/gestures/pan/activation/pan-activation-decision.d.ts +4 -4
  233. package/lib/typescript/providers/screen/gestures/pan/activation/pan-activation-decision.d.ts.map +1 -1
  234. package/lib/typescript/providers/screen/gestures/pan/activation/use-pan-activation.d.ts +3 -3
  235. package/lib/typescript/providers/screen/gestures/pan/activation/use-pan-activation.d.ts.map +1 -1
  236. package/lib/typescript/providers/screen/gestures/pan/use-build-pan-gesture.d.ts +3 -3
  237. package/lib/typescript/providers/screen/gestures/pan/use-build-pan-gesture.d.ts.map +1 -1
  238. package/lib/typescript/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.d.ts.map +1 -1
  239. package/lib/typescript/providers/screen/gestures/shared/policy.d.ts +2 -3
  240. package/lib/typescript/providers/screen/gestures/shared/policy.d.ts.map +1 -1
  241. package/lib/typescript/providers/screen/gestures/types.d.ts +4 -18
  242. package/lib/typescript/providers/screen/gestures/types.d.ts.map +1 -1
  243. package/lib/typescript/providers/screen/screen-composer.d.ts +2 -6
  244. package/lib/typescript/providers/screen/screen-composer.d.ts.map +1 -1
  245. package/lib/typescript/providers/screen/styles/helpers/create-interpolator-scope.d.ts +2 -3
  246. package/lib/typescript/providers/screen/styles/helpers/create-interpolator-scope.d.ts.map +1 -1
  247. package/lib/typescript/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  248. package/lib/typescript/{factories/screen-topology → providers/screen/topology/helpers}/create-screen-topology.d.ts +1 -1
  249. package/lib/typescript/providers/screen/topology/helpers/create-screen-topology.d.ts.map +1 -0
  250. package/lib/typescript/providers/screen/topology/hooks/use-resolved-transition-key.d.ts +3 -0
  251. package/lib/typescript/providers/screen/topology/hooks/use-resolved-transition-key.d.ts.map +1 -0
  252. package/lib/typescript/{factories/screen-topology → providers/screen/topology/hooks}/use-screen-relationships.d.ts +1 -0
  253. package/lib/typescript/providers/screen/topology/hooks/use-screen-relationships.d.ts.map +1 -0
  254. package/lib/typescript/providers/screen/topology/index.d.ts +6 -0
  255. package/lib/typescript/providers/screen/topology/index.d.ts.map +1 -0
  256. package/lib/typescript/providers/screen/topology/topology.provider.d.ts +13 -0
  257. package/lib/typescript/providers/screen/topology/topology.provider.d.ts.map +1 -0
  258. package/lib/typescript/{factories/screen-topology → providers/screen/topology}/types.d.ts +7 -1
  259. package/lib/typescript/providers/screen/topology/types.d.ts.map +1 -0
  260. package/lib/typescript/providers/screen/use-current-screen-relationships.d.ts +1 -0
  261. package/lib/typescript/providers/screen/use-current-screen-relationships.d.ts.map +1 -1
  262. package/lib/typescript/providers/stack/blank-stack-state/helpers/build-blank-stack-state.d.ts.map +1 -1
  263. package/lib/typescript/providers/stack/blank-stack-state/helpers/state-equality.d.ts.map +1 -1
  264. package/lib/typescript/providers/stack/stack-transition/index.d.ts +3 -0
  265. package/lib/typescript/providers/stack/stack-transition/index.d.ts.map +1 -0
  266. package/lib/typescript/providers/stack/stack-transition/stack-transition-controller.d.ts +48 -0
  267. package/lib/typescript/providers/stack/stack-transition/stack-transition-controller.d.ts.map +1 -0
  268. package/lib/typescript/providers/stack/stack-transition/stack-transition.provider.d.ts +14 -0
  269. package/lib/typescript/providers/stack/stack-transition/stack-transition.provider.d.ts.map +1 -0
  270. package/lib/typescript/providers/stack/stack-transition/use-stack-transition.d.ts +12 -0
  271. package/lib/typescript/providers/stack/stack-transition/use-stack-transition.d.ts.map +1 -0
  272. package/lib/typescript/types/animation.types.d.ts +1 -15
  273. package/lib/typescript/types/animation.types.d.ts.map +1 -1
  274. package/lib/typescript/types/bounds.types.d.ts +1 -1
  275. package/lib/typescript/types/bounds.types.d.ts.map +1 -1
  276. package/lib/typescript/types/index.d.ts +1 -1
  277. package/lib/typescript/types/index.d.ts.map +1 -1
  278. package/lib/typescript/types/ownership.types.d.ts +1 -18
  279. package/lib/typescript/types/ownership.types.d.ts.map +1 -1
  280. package/lib/typescript/types/screen.types.d.ts +9 -0
  281. package/lib/typescript/types/screen.types.d.ts.map +1 -1
  282. package/package.json +7 -1
  283. package/src/adapters/with-screen-transitions/stack-layout.tsx +1 -9
  284. package/src/components/blank-stack-host.tsx +21 -0
  285. package/src/components/blank-stack-runtime.tsx +37 -0
  286. package/src/components/blank-stack-scene.tsx +30 -0
  287. package/src/components/blank-stack-view.tsx +19 -0
  288. package/src/components/overlay/helpers/run-overlay-slot-interpolator.ts +0 -4
  289. package/src/components/overlay/hooks/use-overlay-slot.ts +0 -25
  290. package/src/components/overlay/variations/overlay-host.tsx +0 -1
  291. package/src/components/screen-lifecycle/index.tsx +2 -2
  292. package/src/custom-navigator.ts +25 -0
  293. package/src/hooks/navigation/use-blank-stack-state.ts +24 -0
  294. package/src/hooks/navigation/use-navigation-helpers.ts +4 -2
  295. package/src/hooks/navigation/use-screen-state.ts +1 -1
  296. package/src/index.ts +0 -1
  297. package/src/providers/screen/animation/animation.provider.tsx +13 -53
  298. package/src/providers/screen/animation/helpers/pipeline.ts +14 -26
  299. package/src/providers/screen/animation/types.ts +0 -11
  300. package/src/providers/screen/animation/use-screen-animation.tsx +42 -10
  301. package/src/providers/screen/descriptors/descriptors.provider.tsx +43 -99
  302. package/src/providers/screen/descriptors/index.tsx +1 -0
  303. package/src/providers/screen/gestures/gestures.provider.tsx +14 -55
  304. package/src/providers/screen/gestures/hooks/use-screen-gesture-config.ts +3 -6
  305. package/src/providers/screen/gestures/hooks/use-screen-gesture.ts +13 -13
  306. package/src/providers/screen/gestures/index.tsx +0 -2
  307. package/src/providers/screen/gestures/ownership/gesture-ownership-coordinator.ts +252 -0
  308. package/src/providers/screen/gestures/ownership/use-gesture-scroll-coordination.ts +23 -0
  309. package/src/providers/screen/gestures/ownership/use-register-gesture-ownership.ts +73 -0
  310. package/src/providers/screen/gestures/pan/activation/pan-activation-decision.ts +6 -20
  311. package/src/providers/screen/gestures/pan/activation/use-pan-activation.ts +5 -5
  312. package/src/providers/screen/gestures/pan/use-build-pan-gesture.ts +4 -4
  313. package/src/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.ts +9 -12
  314. package/src/providers/screen/gestures/shared/policy.ts +0 -8
  315. package/src/providers/screen/gestures/types.ts +4 -19
  316. package/src/providers/screen/screen-composer.tsx +18 -29
  317. package/src/providers/screen/styles/helpers/create-interpolator-scope.ts +2 -21
  318. package/src/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +0 -29
  319. package/src/{factories/screen-topology → providers/screen/topology/helpers}/create-screen-topology.ts +97 -53
  320. package/src/providers/screen/topology/hooks/use-resolved-transition-key.ts +29 -0
  321. package/src/{factories/screen-topology → providers/screen/topology/hooks}/use-screen-relationships.ts +1 -1
  322. package/src/providers/screen/topology/index.ts +16 -0
  323. package/src/providers/screen/topology/topology.provider.tsx +72 -0
  324. package/src/{factories/screen-topology → providers/screen/topology}/types.ts +7 -1
  325. package/src/providers/screen/use-current-screen-relationships.ts +1 -1
  326. package/src/providers/stack/blank-stack-state/helpers/build-blank-stack-state.ts +1 -0
  327. package/src/providers/stack/blank-stack-state/helpers/state-equality.ts +6 -3
  328. package/src/providers/stack/stack-transition/index.ts +5 -0
  329. package/src/providers/stack/stack-transition/stack-transition-controller.ts +341 -0
  330. package/src/providers/stack/stack-transition/stack-transition.provider.tsx +120 -0
  331. package/src/providers/stack/stack-transition/use-stack-transition.ts +77 -0
  332. package/src/types/animation.types.ts +1 -19
  333. package/src/types/bounds.types.ts +1 -4
  334. package/src/types/index.ts +0 -1
  335. package/src/types/ownership.types.ts +1 -26
  336. package/src/types/screen.types.ts +10 -0
  337. package/lib/commonjs/factories/screen-topology/create-screen-topology.js +0 -147
  338. package/lib/commonjs/factories/screen-topology/create-screen-topology.js.map +0 -1
  339. package/lib/commonjs/factories/screen-topology/index.js.map +0 -1
  340. package/lib/commonjs/factories/screen-topology/types.js.map +0 -1
  341. package/lib/commonjs/factories/screen-topology/use-screen-relationships.js.map +0 -1
  342. package/lib/commonjs/factories/screen-topology/worklet.js +0 -55
  343. package/lib/commonjs/factories/screen-topology/worklet.js.map +0 -1
  344. package/lib/commonjs/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +0 -62
  345. package/lib/commonjs/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +0 -1
  346. package/lib/commonjs/providers/screen/animation/helpers/read-screen-animation-revisions.js +0 -16
  347. package/lib/commonjs/providers/screen/animation/helpers/read-screen-animation-revisions.js.map +0 -1
  348. package/lib/commonjs/providers/screen/gestures/ownership/gesture-ownership-bridge.js +0 -128
  349. package/lib/commonjs/providers/screen/gestures/ownership/gesture-ownership-bridge.js.map +0 -1
  350. package/lib/commonjs/providers/screen/gestures/ownership/resolve-ownership.js +0 -71
  351. package/lib/commonjs/providers/screen/gestures/ownership/resolve-ownership.js.map +0 -1
  352. package/lib/commonjs/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js +0 -54
  353. package/lib/commonjs/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js.map +0 -1
  354. package/lib/commonjs/providers/screen/styles/helpers/collect-interpolator-shared-values.js +0 -50
  355. package/lib/commonjs/providers/screen/styles/helpers/collect-interpolator-shared-values.js.map +0 -1
  356. package/lib/commonjs/utils/resolve-chain-target.js +0 -29
  357. package/lib/commonjs/utils/resolve-chain-target.js.map +0 -1
  358. package/lib/module/factories/screen-topology/create-screen-topology.js +0 -142
  359. package/lib/module/factories/screen-topology/create-screen-topology.js.map +0 -1
  360. package/lib/module/factories/screen-topology/index.js +0 -6
  361. package/lib/module/factories/screen-topology/index.js.map +0 -1
  362. package/lib/module/factories/screen-topology/types.js.map +0 -1
  363. package/lib/module/factories/screen-topology/use-screen-relationships.js.map +0 -1
  364. package/lib/module/factories/screen-topology/worklet.js +0 -48
  365. package/lib/module/factories/screen-topology/worklet.js.map +0 -1
  366. package/lib/module/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +0 -56
  367. package/lib/module/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +0 -1
  368. package/lib/module/providers/screen/animation/helpers/read-screen-animation-revisions.js +0 -11
  369. package/lib/module/providers/screen/animation/helpers/read-screen-animation-revisions.js.map +0 -1
  370. package/lib/module/providers/screen/gestures/ownership/gesture-ownership-bridge.js +0 -124
  371. package/lib/module/providers/screen/gestures/ownership/gesture-ownership-bridge.js.map +0 -1
  372. package/lib/module/providers/screen/gestures/ownership/resolve-ownership.js +0 -67
  373. package/lib/module/providers/screen/gestures/ownership/resolve-ownership.js.map +0 -1
  374. package/lib/module/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js +0 -50
  375. package/lib/module/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js.map +0 -1
  376. package/lib/module/providers/screen/styles/helpers/collect-interpolator-shared-values.js +0 -45
  377. package/lib/module/providers/screen/styles/helpers/collect-interpolator-shared-values.js.map +0 -1
  378. package/lib/module/utils/resolve-chain-target.js +0 -25
  379. package/lib/module/utils/resolve-chain-target.js.map +0 -1
  380. package/lib/typescript/factories/screen-topology/create-screen-topology.d.ts.map +0 -1
  381. package/lib/typescript/factories/screen-topology/index.d.ts +0 -5
  382. package/lib/typescript/factories/screen-topology/index.d.ts.map +0 -1
  383. package/lib/typescript/factories/screen-topology/types.d.ts.map +0 -1
  384. package/lib/typescript/factories/screen-topology/use-screen-relationships.d.ts.map +0 -1
  385. package/lib/typescript/factories/screen-topology/worklet.d.ts +0 -5
  386. package/lib/typescript/factories/screen-topology/worklet.d.ts.map +0 -1
  387. package/lib/typescript/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts +0 -9
  388. package/lib/typescript/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts.map +0 -1
  389. package/lib/typescript/providers/screen/animation/helpers/read-screen-animation-revisions.d.ts +0 -6
  390. package/lib/typescript/providers/screen/animation/helpers/read-screen-animation-revisions.d.ts.map +0 -1
  391. package/lib/typescript/providers/screen/gestures/ownership/gesture-ownership-bridge.d.ts +0 -3
  392. package/lib/typescript/providers/screen/gestures/ownership/gesture-ownership-bridge.d.ts.map +0 -1
  393. package/lib/typescript/providers/screen/gestures/ownership/resolve-ownership.d.ts +0 -32
  394. package/lib/typescript/providers/screen/gestures/ownership/resolve-ownership.d.ts.map +0 -1
  395. package/lib/typescript/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.d.ts +0 -11
  396. package/lib/typescript/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.d.ts.map +0 -1
  397. package/lib/typescript/providers/screen/styles/helpers/collect-interpolator-shared-values.d.ts +0 -4
  398. package/lib/typescript/providers/screen/styles/helpers/collect-interpolator-shared-values.d.ts.map +0 -1
  399. package/lib/typescript/utils/resolve-chain-target.d.ts +0 -11
  400. package/lib/typescript/utils/resolve-chain-target.d.ts.map +0 -1
  401. package/src/factories/screen-topology/index.ts +0 -16
  402. package/src/factories/screen-topology/worklet.ts +0 -60
  403. package/src/providers/screen/animation/helpers/accessors/use-build-transition-accessor.ts +0 -96
  404. package/src/providers/screen/animation/helpers/read-screen-animation-revisions.ts +0 -15
  405. package/src/providers/screen/gestures/ownership/gesture-ownership-bridge.tsx +0 -173
  406. package/src/providers/screen/gestures/ownership/resolve-ownership.ts +0 -90
  407. package/src/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.ts +0 -88
  408. package/src/providers/screen/styles/helpers/collect-interpolator-shared-values.ts +0 -75
  409. package/src/utils/resolve-chain-target.ts +0 -33
  410. /package/lib/commonjs/{factories/screen-topology → providers/screen/topology}/types.js +0 -0
  411. /package/lib/module/{factories/screen-topology → providers/screen/topology}/types.js +0 -0
@@ -1,11 +1,10 @@
1
1
  import { type ReactNode, useMemo } from "react";
2
+ import type { BoundsAccessor } from "../../../types/bounds.types";
2
3
  import { createBoundsAccessor } from "../../../utils/bounds";
3
4
  import createProvider from "../../../utils/create-provider";
4
5
  import { useBlankStackStore } from "../../stack/blank-stack.provider";
5
6
  import { useDescriptorsStore } from "../descriptors";
6
- import { useCurrentScreenRelationships } from "../use-current-screen-relationships";
7
7
  import { useScreenAnimationPipeline } from "./helpers/pipeline";
8
- import type { ScreenAnimationTransitionSource } from "./types";
9
8
 
10
9
  type Props = {
11
10
  children: ReactNode;
@@ -14,70 +13,34 @@ type Props = {
14
13
  export type ScreenAnimationContextValue = ReturnType<
15
14
  typeof useScreenAnimationPipeline
16
15
  > & {
17
- transitionSources: readonly ScreenAnimationTransitionSource[];
18
- transitionOriginIndex: number;
19
- transitionSourcesThroughSelf: readonly ScreenAnimationTransitionSource[];
20
- transitionSourcesFromSelf: readonly ScreenAnimationTransitionSource[];
16
+ boundsAccessor: BoundsAccessor;
21
17
  };
22
18
 
23
- const EMPTY_TRANSITION_SOURCES: readonly ScreenAnimationTransitionSource[] = [];
24
-
25
- const createScreenAnimationProvider = createProvider("ScreenAnimation", {
26
- global: true,
27
- })<Props, ScreenAnimationContextValue>;
28
-
29
19
  export const {
30
20
  StoreProvider: ScreenAnimationStoreProvider,
31
21
  ScreenAnimationProvider,
32
22
  useOptionalScreenAnimationStore,
33
23
  useScreenAnimationStore,
34
- }: ReturnType<
35
- typeof createScreenAnimationProvider
36
- > = createScreenAnimationProvider((_props) => {
24
+ } = createProvider("ScreenAnimation", {
25
+ global: true,
26
+ })<Props, ScreenAnimationContextValue>(() => {
37
27
  const currentScreenKey = useDescriptorsStore(
38
28
  (store) => store.derivations.currentScreenKey,
39
29
  );
40
30
  const isClosing = useBlankStackStore(
41
31
  (store) => store.scenesByKey[currentScreenKey]?.activity === "closing",
42
32
  );
43
- const relationships = useCurrentScreenRelationships();
44
33
  const pipeline = useScreenAnimationPipeline();
45
34
 
46
- const screenAnimationSource = useMemo<ScreenAnimationTransitionSource>(
47
- () => ({
48
- screenInterpolatorProps: pipeline.screenInterpolatorProps,
49
- screenInterpolatorPropsRevision: pipeline.screenInterpolatorPropsRevision,
50
- boundsAccessor: createBoundsAccessor(() => {
35
+ const { screenInterpolatorProps } = pipeline;
36
+
37
+ const boundsAccessor = useMemo(
38
+ () =>
39
+ createBoundsAccessor(() => {
51
40
  "worklet";
52
- return pipeline.screenInterpolatorProps.get();
41
+ return screenInterpolatorProps.get();
53
42
  }),
54
- }),
55
- [
56
- pipeline.screenInterpolatorProps,
57
- pipeline.screenInterpolatorPropsRevision,
58
- ],
59
- );
60
- const ancestorSources =
61
- useOptionalScreenAnimationStore(
62
- relationships.parentScreenKey,
63
- (store) => store.transitionSourcesThroughSelf,
64
- ) ?? EMPTY_TRANSITION_SOURCES;
65
- const descendantSources =
66
- useOptionalScreenAnimationStore(
67
- relationships.activeChildScreenKey,
68
- (store) => store.transitionSourcesFromSelf,
69
- ) ?? EMPTY_TRANSITION_SOURCES;
70
- const transitionSourcesThroughSelf = useMemo(
71
- () => [...ancestorSources, screenAnimationSource],
72
- [ancestorSources, screenAnimationSource],
73
- );
74
- const transitionSourcesFromSelf = useMemo(
75
- () => [screenAnimationSource, ...descendantSources],
76
- [screenAnimationSource, descendantSources],
77
- );
78
- const transitionSources = useMemo(
79
- () => [...transitionSourcesThroughSelf, ...descendantSources],
80
- [transitionSourcesThroughSelf, descendantSources],
43
+ [screenInterpolatorProps],
81
44
  );
82
45
 
83
46
  return {
@@ -85,10 +48,7 @@ export const {
85
48
  unregisterOnCleanup: isClosing,
86
49
  value: {
87
50
  ...pipeline,
88
- transitionSources,
89
- transitionOriginIndex: ancestorSources.length,
90
- transitionSourcesThroughSelf,
91
- transitionSourcesFromSelf,
51
+ boundsAccessor,
92
52
  },
93
53
  };
94
54
  });
@@ -34,9 +34,8 @@ export type ScreenInterpolatorFrame = Omit<
34
34
  "bounds" | "transition"
35
35
  >;
36
36
 
37
- interface ScreenAnimationPipeline {
38
- screenInterpolatorProps: SharedValue<ScreenInterpolatorFrame>;
39
- screenInterpolatorPropsRevision: DerivedValue<number>;
37
+ export interface ScreenAnimationPipeline {
38
+ screenInterpolatorProps: DerivedValue<ScreenInterpolatorFrame>;
40
39
  selectedInterpolatorOptions: SharedValue<SelectedInterpolatorOptions>;
41
40
  nextInterpolator: ScreenStyleInterpolator | undefined;
42
41
  currentInterpolator: ScreenStyleInterpolator | undefined;
@@ -281,9 +280,13 @@ export function useScreenAnimationPipeline(): ScreenAnimationPipeline {
281
280
  [routeKeys],
282
281
  );
283
282
 
284
- const currDescriptor = useDescriptorsStore((store) => store.current);
285
- const nextDescriptor = useDescriptorsStore((store) => store.next);
286
- const prevDescriptor = useDescriptorsStore((store) => store.previous);
283
+ const currDescriptor = useDescriptorsStore(
284
+ (store) => store.descriptors.current,
285
+ );
286
+ const nextDescriptor = useDescriptorsStore((store) => store.descriptors.next);
287
+ const prevDescriptor = useDescriptorsStore(
288
+ (store) => store.descriptors.previous,
289
+ );
287
290
  const currentAnimation = useBuildTransitionState(currDescriptor);
288
291
  const nextAnimation = useBuildTransitionState(nextDescriptor);
289
292
  const prevAnimation = useBuildTransitionState(prevDescriptor);
@@ -306,20 +309,16 @@ export function useScreenAnimationPipeline(): ScreenAnimationPipeline {
306
309
  [dimensions, insets, currDescriptor, nextDescriptor, prevDescriptor],
307
310
  );
308
311
 
309
- const screenInterpolatorProps = useSharedValue(initialInterpolatorProps);
310
312
  const selectedInterpolatorOptions =
311
313
  useSharedValue<SelectedInterpolatorOptions>({
312
314
  owner: "current",
313
315
  });
314
-
315
- const propsRevisionState = useSharedValue({ value: 0 });
316
- const screenInterpolatorPropsRevision = useDerivedValue<number>(() => {
317
- "worklet";
318
- screenInterpolatorProps.modify((frame) => {
316
+ const screenInterpolatorProps = useDerivedValue<ScreenInterpolatorFrame>(
317
+ () => {
319
318
  "worklet";
320
319
  const interpolatorOptions = selectedInterpolatorOptions.get();
321
320
  return hydrateInterpolatorFrame({
322
- frame,
321
+ frame: { ...initialInterpolatorProps },
323
322
  dimensions,
324
323
  insets,
325
324
  currentAnimation,
@@ -330,25 +329,14 @@ export function useScreenAnimationPipeline(): ScreenAnimationPipeline {
330
329
  stackProgressEntries,
331
330
  currentRouteKey,
332
331
  });
333
- }, false);
334
-
335
- // `screenInterpolatorProps` is mutated in place. Consumers read this
336
- // revision first so Reanimated subscribes to the hydrated frame.
337
- propsRevisionState.modify((revision) => {
338
- "worklet";
339
- revision.value += 1;
340
- return revision;
341
- }, false);
342
-
343
- return propsRevisionState.get().value;
344
- });
332
+ },
333
+ );
345
334
 
346
335
  const nextInterpolator = nextDescriptor?.options.screenStyleInterpolator;
347
336
  const currentInterpolator = currDescriptor.options.screenStyleInterpolator;
348
337
 
349
338
  return {
350
339
  screenInterpolatorProps,
351
- screenInterpolatorPropsRevision,
352
340
  selectedInterpolatorOptions,
353
341
  nextInterpolator,
354
342
  currentInterpolator,
@@ -1,14 +1,3 @@
1
- import type { SharedValue } from "react-native-reanimated";
2
1
  import type { ScreenTransitionTarget } from "../../../types/animation.types";
3
- import type { BoundsAccessor } from "../../../types/bounds.types";
4
- import type { ScreenInterpolatorFrame } from "./helpers/pipeline";
5
-
6
- export type ScreenInterpolatorPropsRevision = Pick<SharedValue<number>, "get">;
7
2
 
8
3
  export type ScreenAnimationTarget = ScreenTransitionTarget;
9
-
10
- export type ScreenAnimationTransitionSource = {
11
- screenInterpolatorProps: SharedValue<ScreenInterpolatorFrame>;
12
- screenInterpolatorPropsRevision: ScreenInterpolatorPropsRevision;
13
- boundsAccessor: BoundsAccessor;
14
- };
@@ -3,9 +3,12 @@ import type {
3
3
  ScreenInterpolationProps,
4
4
  ScreenTransitionTarget,
5
5
  } from "../../../types/animation.types";
6
- import { useScreenAnimationStore } from "./animation.provider";
7
- import { useBuildTransitionAccessor } from "./helpers/accessors/use-build-transition-accessor";
8
- import { readScreenAnimationRevisions } from "./helpers/read-screen-animation-revisions";
6
+ import { useOptionalDescriptorsStore } from "../descriptors";
7
+ import { useResolvedTransitionKey } from "../topology";
8
+ import {
9
+ useOptionalScreenAnimationStore,
10
+ useScreenAnimationStore,
11
+ } from "./animation.provider";
9
12
  import type { ScreenAnimationTarget } from "./types";
10
13
 
11
14
  export type { ScreenAnimationTarget } from "./types";
@@ -22,16 +25,45 @@ export function useScreenAnimation(
22
25
  ):
23
26
  | DerivedValue<ScreenInterpolationProps>
24
27
  | DerivedValue<ScreenInterpolationProps | null> {
25
- const screenAnimationStore = useScreenAnimationStore();
28
+ const currentKey = useOptionalDescriptorsStore(
29
+ (store) => store?.derivations.currentScreenKey ?? null,
30
+ );
26
31
 
27
- const { transitionSources } = screenAnimationStore;
28
- const transition = useBuildTransitionAccessor(screenAnimationStore);
29
- const transitionTarget = target;
32
+ const localInterpolatorProps = useScreenAnimationStore(
33
+ (store) => store.screenInterpolatorProps,
34
+ );
35
+ const localBoundsAccessor = useScreenAnimationStore(
36
+ (store) => store.boundsAccessor,
37
+ );
38
+
39
+ const usesLocalStore =
40
+ target === undefined || (typeof target === "object" && target.depth === 0);
41
+
42
+ const screenKey = useResolvedTransitionKey(currentKey, target);
43
+
44
+ const keyedInterpolatorProps = useOptionalScreenAnimationStore(
45
+ usesLocalStore ? null : screenKey,
46
+ (store) => store.screenInterpolatorProps,
47
+ );
48
+ const keyedBoundsAccessor = useOptionalScreenAnimationStore(
49
+ usesLocalStore ? null : screenKey,
50
+ (store) => store.boundsAccessor,
51
+ );
52
+
53
+ const screenInterpolatorProps = usesLocalStore
54
+ ? localInterpolatorProps
55
+ : keyedInterpolatorProps;
56
+ const boundsAccessor = usesLocalStore
57
+ ? localBoundsAccessor
58
+ : keyedBoundsAccessor;
30
59
 
31
60
  const animation = useDerivedValue<ScreenInterpolationProps | null>(() => {
32
- "worklet";
33
- readScreenAnimationRevisions(transitionSources);
34
- return transition(transitionTarget);
61
+ if (!screenInterpolatorProps || !boundsAccessor) return null;
62
+
63
+ return {
64
+ ...screenInterpolatorProps.get(),
65
+ bounds: boundsAccessor,
66
+ };
35
67
  });
36
68
 
37
69
  return animation;
@@ -1,17 +1,11 @@
1
1
  import type { ReactNode } from "react";
2
- import { useLayoutEffect, useMemo } from "react";
3
- import { screenTopology } from "../../../factories/screen-topology";
4
- import { useBlankStackStore } from "../../../providers/stack/blank-stack.provider";
2
+ import { useMemo } from "react";
5
3
  import type { BaseStackDescriptor } from "../../../types/stack.types";
6
4
  import createProvider from "../../../utils/create-provider";
5
+ import { useBlankStackStore } from "../../stack/blank-stack.provider";
7
6
  import type { DescriptorDerivations } from "./helpers/derive-descriptor-derivations";
8
7
  import { deriveDescriptorDerivations } from "./helpers/derive-descriptor-derivations";
9
8
 
10
- /**
11
- * Base descriptor interface - minimal contract for all stack types.
12
- * This allows stack implementations to work with the shared providers without
13
- * tight coupling to React Navigation.
14
- */
15
9
  export type BaseDescriptor = BaseStackDescriptor;
16
10
 
17
11
  export interface DescriptorsContextValue {
@@ -22,7 +16,7 @@ export interface DescriptorsContextValue {
22
16
 
23
17
  export type DescriptorDerivationsContextValue = DescriptorDerivations;
24
18
 
25
- interface DescriptorStoreValue extends DescriptorsContextValue {
19
+ interface DescriptorStoreValue {
26
20
  descriptors: DescriptorsContextValue;
27
21
  derivations: DescriptorDerivationsContextValue;
28
22
  options: BaseDescriptor["options"];
@@ -30,106 +24,56 @@ interface DescriptorStoreValue extends DescriptorsContextValue {
30
24
 
31
25
  type DescriptorsProviderProps = {
32
26
  children: ReactNode;
33
- previous?: BaseDescriptor;
34
- current?: BaseDescriptor;
35
- next?: BaseDescriptor;
36
- routeKey?: string;
27
+ routeKey: string;
37
28
  };
38
29
 
39
- const createDescriptorsProvider = createProvider("Descriptors", {
40
- global: true,
41
- })<DescriptorsProviderProps, DescriptorStoreValue>;
42
-
43
30
  const {
44
31
  DescriptorsProvider,
45
32
  useDescriptorsStore,
46
33
  useOptionalDescriptorsStore,
47
- }: ReturnType<typeof createDescriptorsProvider> = createDescriptorsProvider(
48
- ({ previous, current, next, routeKey, children }) => {
49
- const parentScreenKey = useOptionalDescriptorsStore(
50
- (store) => store?.derivations.currentScreenKey,
51
- );
52
- const blankStackCurrent = useBlankStackStore((store) =>
53
- routeKey ? store.scenesByKey[routeKey]?.descriptor : undefined,
54
- );
55
- const blankStackPrevious = useBlankStackStore((store) =>
56
- routeKey ? store.scenesByKey[routeKey]?.previousDescriptor : undefined,
57
- );
58
- const blankStackNext = useBlankStackStore((store) =>
59
- routeKey ? store.scenesByKey[routeKey]?.nextDescriptor : undefined,
60
- );
61
- const blankStackFocusedScene = useBlankStackStore(
62
- (store) => store.scenes[store.focusedIndex],
63
- );
64
- const resolvedCurrent = current ?? blankStackCurrent;
65
- const resolvedPrevious = previous ?? blankStackPrevious;
66
- const resolvedNext = next ?? blankStackNext;
67
- const currentScreenKey = current?.route.key ?? routeKey;
68
- const focusedScene = blankStackFocusedScene;
69
- const isActiveScreen =
70
- focusedScene?.route.key === currentScreenKey &&
71
- focusedScene?.activity === "active";
72
-
73
- if (!resolvedCurrent) {
74
- throw new Error(
75
- `Descriptors scene "${routeKey ?? "unknown"}" was not found.`,
76
- );
77
- }
78
-
79
- const descriptors = useMemo(
80
- () => ({
81
- previous: resolvedPrevious,
82
- current: resolvedCurrent,
83
- next: resolvedNext,
84
- }),
85
- [resolvedPrevious, resolvedCurrent, resolvedNext],
86
- );
87
-
88
- const derivations = useMemo(
89
- () =>
90
- deriveDescriptorDerivations({
91
- previous: resolvedPrevious,
92
- current: resolvedCurrent,
93
- next: resolvedNext,
94
- }),
95
- [resolvedPrevious, resolvedCurrent, resolvedNext],
96
- );
97
-
98
- useLayoutEffect(() => {
99
- screenTopology.register({
100
- screenKey: derivations.currentScreenKey,
101
- parentScreenKey,
102
- });
34
+ } = createProvider("Descriptors", {
35
+ global: true,
36
+ })<DescriptorsProviderProps, DescriptorStoreValue>(({ routeKey, children }) => {
37
+ const scene = useBlankStackStore((s) => s.scenesByKey[routeKey]);
103
38
 
104
- return () => {
105
- screenTopology.unregister(derivations.currentScreenKey);
106
- };
107
- }, [derivations.currentScreenKey, parentScreenKey]);
39
+ const currentDescriptor = scene.descriptor;
40
+ const previousDescriptor = scene.previousDescriptor;
41
+ const nextDescriptor = scene.nextDescriptor;
42
+ const options = scene.descriptor.options;
108
43
 
109
- useLayoutEffect(() => {
110
- if (!isActiveScreen || !parentScreenKey) {
111
- return;
112
- }
44
+ const descriptors = useMemo(() => {
45
+ return {
46
+ previous: previousDescriptor,
47
+ current: currentDescriptor,
48
+ next: nextDescriptor,
49
+ };
50
+ }, [previousDescriptor, currentDescriptor, nextDescriptor]);
113
51
 
114
- return screenTopology.activate({
115
- screenKey: derivations.currentScreenKey,
116
- parentScreenKey,
117
- });
118
- }, [isActiveScreen, derivations.currentScreenKey, parentScreenKey]);
52
+ const derivations = useMemo(() => {
53
+ return deriveDescriptorDerivations({
54
+ previous: previousDescriptor,
55
+ current: currentDescriptor,
56
+ next: nextDescriptor,
57
+ });
58
+ }, [previousDescriptor, currentDescriptor, nextDescriptor]);
119
59
 
60
+ const value = useMemo(() => {
120
61
  return {
121
- key: derivations.currentScreenKey,
122
- value: {
123
- previous: resolvedPrevious,
124
- current: resolvedCurrent,
125
- next: resolvedNext,
126
- descriptors,
127
- derivations,
128
- options: resolvedCurrent.options,
129
- },
130
- children,
62
+ descriptors,
63
+ derivations,
64
+ options,
131
65
  };
132
- },
133
- );
66
+ }, [descriptors, derivations, options]);
67
+
68
+ return {
69
+ key: routeKey,
70
+ value,
71
+ children,
72
+ };
73
+ });
134
74
 
135
- export { DescriptorsProvider, useDescriptorsStore };
75
+ export {
76
+ DescriptorsProvider,
77
+ useDescriptorsStore,
78
+ useOptionalDescriptorsStore,
79
+ };
@@ -2,4 +2,5 @@ export {
2
2
  type BaseDescriptor,
3
3
  DescriptorsProvider,
4
4
  useDescriptorsStore,
5
+ useOptionalDescriptorsStore,
5
6
  } from "./descriptors.provider";
@@ -1,19 +1,17 @@
1
- import { Fragment, useMemo } from "react";
1
+ import { useMemo } from "react";
2
2
  import { Gesture } from "react-native-gesture-handler";
3
3
  import { useSharedValue } from "react-native-reanimated";
4
4
  import { ScrollStore } from "../../../stores/scroll.store";
5
5
  import createProvider from "../../../utils/create-provider";
6
6
  import { useDescriptorsStore } from "../descriptors";
7
- import { useCurrentScreenRelationships } from "../use-current-screen-relationships";
8
7
  import { useScreenGestureConfig } from "./hooks/use-screen-gesture-config";
9
- import { GestureOwnershipBridge } from "./ownership/gesture-ownership-bridge";
8
+ import { useRegisterGestureOwnership } from "./ownership/use-register-gesture-ownership";
10
9
  import { useBuildPanGesture } from "./pan/use-build-pan-gesture";
11
10
  import { useBuildPinchGesture } from "./pinch/use-build-pinch-gesture";
12
11
  import {
13
- type DirectionClaimMap,
14
12
  type GestureCompositionOwner,
15
13
  type GestureContextType,
16
- NO_DIRECTION_CLAIMS,
14
+ NO_GESTURE_OWNERS,
17
15
  type ScreenGestureSource,
18
16
  } from "./types";
19
17
 
@@ -21,15 +19,9 @@ interface ScreenGestureProviderProps {
21
19
  children: React.ReactNode;
22
20
  }
23
21
 
24
- type ScreenGestureStoreValue = GestureContextType & {
25
- relationshipGestureSources: readonly ScreenGestureSource[];
26
- };
27
-
28
- const EMPTY_GESTURE_SOURCES: readonly ScreenGestureSource[] = [];
29
-
30
22
  const createScreenGestureProvider = createProvider("ScreenGesture", {
31
23
  global: true,
32
- })<ScreenGestureProviderProps, ScreenGestureStoreValue>;
24
+ })<ScreenGestureProviderProps, GestureContextType>;
33
25
 
34
26
  export const {
35
27
  ScreenGestureProvider,
@@ -40,28 +32,15 @@ export const {
40
32
  const currentScreenKey = useDescriptorsStore(
41
33
  (store) => store.derivations.currentScreenKey,
42
34
  );
43
- const isTopMostScreen = useDescriptorsStore(
44
- (store) => store.derivations.isTopMostScreen,
45
- );
46
- const relationships = useCurrentScreenRelationships();
47
- const relationshipAncestorGestures =
48
- useOptionalScreenGestureStore(
49
- relationships.parentScreenKey,
50
- (store) => store.relationshipGestureSources,
51
- ) ?? EMPTY_GESTURE_SOURCES;
52
- const ancestorGestures = isTopMostScreen
53
- ? relationshipAncestorGestures
54
- : EMPTY_GESTURE_SOURCES;
55
- const gestureConfig = useScreenGestureConfig(ancestorGestures);
35
+ const gestureConfig = useScreenGestureConfig();
56
36
  const scrollState = ScrollStore.getValue(currentScreenKey, "coordination");
57
- const childDirectionClaims =
58
- useSharedValue<DirectionClaimMap>(NO_DIRECTION_CLAIMS);
37
+ const gestureOwners = useSharedValue({ ...NO_GESTURE_OWNERS });
59
38
  const gestureCompositionOwner =
60
39
  useSharedValue<GestureCompositionOwner>(null);
61
40
  const panGesture = useBuildPanGesture({
62
41
  scrollState,
63
42
  gestureConfig,
64
- childDirectionClaims,
43
+ gestureOwners,
65
44
  gestureCompositionOwner,
66
45
  });
67
46
  const pinchGesture = useBuildPinchGesture({
@@ -79,8 +58,6 @@ export const {
79
58
  panGesture,
80
59
  pinchGesture,
81
60
  scrollState,
82
- claimedDirections: gestureConfig.participation.claimedDirections,
83
- childDirectionClaims,
84
61
  }),
85
62
  [
86
63
  currentScreenKey,
@@ -88,36 +65,18 @@ export const {
88
65
  panGesture,
89
66
  pinchGesture,
90
67
  scrollState,
91
- gestureConfig.participation.claimedDirections,
92
- childDirectionClaims,
93
68
  ],
94
69
  );
95
- const relationshipGestureSources = useMemo(
96
- () => [source, ...ancestorGestures],
97
- [source, ancestorGestures],
98
- );
99
- const value = useMemo<ScreenGestureStoreValue>(
100
- () => ({
101
- ...source,
102
- ancestorGestures,
103
- relationshipGestureSources,
104
- }),
105
- [source, ancestorGestures, relationshipGestureSources],
106
- );
107
- const content = useMemo(
108
- () => (
109
- <Fragment>
110
- <GestureOwnershipBridge />
111
- {children}
112
- </Fragment>
113
- ),
114
- [children],
115
- );
70
+ useRegisterGestureOwnership({
71
+ claimedDirections: gestureConfig.participation.claimedDirections,
72
+ owners: gestureOwners,
73
+ source,
74
+ });
116
75
 
117
76
  return {
118
77
  key: currentScreenKey,
119
- value,
120
- children: content,
78
+ value: source,
79
+ children,
121
80
  };
122
81
  },
123
82
  );
@@ -1,11 +1,9 @@
1
1
  import { useMemo } from "react";
2
2
  import { useDescriptorsStore } from "../../descriptors";
3
3
  import { resolveScreenGestureConfig } from "../shared/policy";
4
- import type { ScreenGestureConfig, ScreenGestureSource } from "../types";
4
+ import type { ScreenGestureConfig } from "../types";
5
5
 
6
- export function useScreenGestureConfig(
7
- ancestorGestures: readonly ScreenGestureSource[],
8
- ): ScreenGestureConfig {
6
+ export function useScreenGestureConfig(): ScreenGestureConfig {
9
7
  const options = useDescriptorsStore((store) => store.options);
10
8
  const isFirstKey = useDescriptorsStore(
11
9
  (store) => store.derivations.isFirstKey,
@@ -15,8 +13,7 @@ export function useScreenGestureConfig(
15
13
  resolveScreenGestureConfig({
16
14
  options,
17
15
  isFirstKey,
18
- ancestorGestures,
19
16
  }),
20
- [isFirstKey, options, ancestorGestures],
17
+ [isFirstKey, options],
21
18
  );
22
19
  }
@@ -1,10 +1,7 @@
1
- import {
2
- type ChainTarget,
3
- resolveChainTarget,
4
- } from "../../../../utils/resolve-chain-target";
1
+ import { useResolvedTransitionKey } from "../../topology";
5
2
  import { useOptionalScreenGestureStore } from "../gestures.provider";
6
3
 
7
- export type ScreenGestureTarget = ChainTarget;
4
+ export type ScreenGestureTarget = { depth: number };
8
5
 
9
6
  /**
10
7
  * Returns a screen navigation pan gesture.
@@ -20,13 +17,16 @@ export type ScreenGestureTarget = ChainTarget;
20
17
  * ```
21
18
  */
22
19
  export const useScreenGesture = (target?: ScreenGestureTarget) => {
23
- const ctx = useOptionalScreenGestureStore();
24
-
25
- return (
26
- resolveChainTarget({
27
- target,
28
- self: ctx,
29
- ancestors: ctx?.ancestorGestures ?? [],
30
- })?.panGesture ?? null
20
+ const localGesture = useOptionalScreenGestureStore();
21
+ const usesLocalStore = target === undefined || target.depth === 0;
22
+ const screenKey = useResolvedTransitionKey(
23
+ localGesture?.routeKey ?? null,
24
+ target,
25
+ );
26
+ const keyedGesture = useOptionalScreenGestureStore(
27
+ usesLocalStore ? null : screenKey,
28
+ (store) => store.panGesture,
31
29
  );
30
+
31
+ return usesLocalStore ? (localGesture?.panGesture ?? null) : keyedGesture;
32
32
  };
@@ -4,8 +4,6 @@ export {
4
4
  useScreenGestureStore,
5
5
  } from "./gestures.provider";
6
6
  export type {
7
- DirectionClaim,
8
- DirectionClaimMap,
9
7
  GestureContextType,
10
8
  ScrollGestureAxis,
11
9
  ScrollGestureAxisState,