react-native-screen-transitions 3.12.0 → 3.13.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (604) hide show
  1. package/lib/commonjs/shared/adapters/with-screen-transitions/stack-layout.js +1 -2
  2. package/lib/commonjs/shared/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  3. package/lib/commonjs/shared/components/activity/helpers.js +50 -1
  4. package/lib/commonjs/shared/components/activity/helpers.js.map +1 -1
  5. package/lib/commonjs/shared/components/activity/variants/activity-screen.js +17 -68
  6. package/lib/commonjs/shared/components/activity/variants/activity-screen.js.map +1 -1
  7. package/lib/commonjs/shared/components/boundary/components/boundary-lifecycle.js +0 -3
  8. package/lib/commonjs/shared/components/boundary/components/boundary-lifecycle.js.map +1 -1
  9. package/lib/commonjs/shared/components/boundary/components/boundary-target.js +1 -1
  10. package/lib/commonjs/shared/components/boundary/components/boundary-target.js.map +1 -1
  11. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-boundary-measurement-request.js +69 -0
  12. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-boundary-measurement-request.js.map +1 -0
  13. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-boundary-presence.js +11 -10
  14. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-boundary-presence.js.map +1 -1
  15. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js +3 -19
  16. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  17. package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js +8 -17
  18. package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  19. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js +27 -1
  20. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js.map +1 -1
  21. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +27 -11
  22. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  23. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +8 -1
  24. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
  25. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/attachment.js +19 -0
  26. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/attachment.js.map +1 -0
  27. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/host-readiness.js +18 -0
  28. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/host-readiness.js.map +1 -0
  29. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js +22 -1
  30. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js.map +1 -1
  31. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js +10 -10
  32. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js.map +1 -1
  33. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +19 -12
  34. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  35. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js +6 -6
  36. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  37. package/lib/commonjs/shared/components/overlay/helpers/create-overlay-interpolator-frame.js +9 -2
  38. package/lib/commonjs/shared/components/overlay/helpers/create-overlay-interpolator-frame.js.map +1 -1
  39. package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js +16 -4
  40. package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js.map +1 -1
  41. package/lib/commonjs/shared/components/overlay/hooks/use-overlay-slot.js +11 -6
  42. package/lib/commonjs/shared/components/overlay/hooks/use-overlay-slot.js.map +1 -1
  43. package/lib/commonjs/shared/components/overlay/variations/overlay-host.js +5 -4
  44. package/lib/commonjs/shared/components/overlay/variations/overlay-host.js.map +1 -1
  45. package/lib/commonjs/shared/components/screen-container/layers/content.js +1 -3
  46. package/lib/commonjs/shared/components/screen-container/layers/content.js.map +1 -1
  47. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +8 -6
  48. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  49. package/lib/commonjs/shared/factories/screen-topology/create-screen-topology.js +147 -0
  50. package/lib/commonjs/shared/factories/screen-topology/create-screen-topology.js.map +1 -0
  51. package/lib/commonjs/shared/factories/screen-topology/index.js +45 -0
  52. package/lib/commonjs/shared/factories/screen-topology/index.js.map +1 -0
  53. package/lib/commonjs/shared/factories/screen-topology/types.js +2 -0
  54. package/lib/commonjs/shared/factories/screen-topology/types.js.map +1 -0
  55. package/lib/commonjs/shared/factories/screen-topology/use-screen-relationships.js +15 -0
  56. package/lib/commonjs/shared/factories/screen-topology/use-screen-relationships.js.map +1 -0
  57. package/lib/commonjs/shared/factories/screen-topology/worklet.js +55 -0
  58. package/lib/commonjs/shared/factories/screen-topology/worklet.js.map +1 -0
  59. package/lib/commonjs/shared/hooks/navigation/use-screen-state.js.map +1 -1
  60. package/lib/commonjs/shared/hooks/navigation/use-stack.js +16 -16
  61. package/lib/commonjs/shared/hooks/navigation/use-stack.js.map +1 -1
  62. package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js +4 -0
  63. package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
  64. package/lib/commonjs/shared/providers/screen/animation/animation.provider.js +26 -95
  65. package/lib/commonjs/shared/providers/screen/animation/animation.provider.js.map +1 -1
  66. package/lib/commonjs/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +6 -52
  67. package/lib/commonjs/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
  68. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js +5 -1
  69. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  70. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js +12 -12
  71. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  72. package/lib/commonjs/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js +4 -13
  73. package/lib/commonjs/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js.map +1 -1
  74. package/lib/commonjs/shared/providers/screen/animation/helpers/stack-progress.js +10 -26
  75. package/lib/commonjs/shared/providers/screen/animation/helpers/stack-progress.js.map +1 -1
  76. package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js +0 -1
  77. package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
  78. package/lib/commonjs/shared/providers/screen/animation/index.js +6 -0
  79. package/lib/commonjs/shared/providers/screen/animation/index.js.map +1 -1
  80. package/lib/commonjs/shared/providers/screen/animation/use-screen-animation.js +8 -7
  81. package/lib/commonjs/shared/providers/screen/animation/use-screen-animation.js.map +1 -1
  82. package/lib/commonjs/shared/providers/screen/descriptors/descriptors.provider.js +62 -15
  83. package/lib/commonjs/shared/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  84. package/lib/commonjs/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.js +3 -4
  85. package/lib/commonjs/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.js.map +1 -1
  86. package/lib/commonjs/shared/providers/screen/gestures/gestures.provider.js +24 -19
  87. package/lib/commonjs/shared/providers/screen/gestures/gestures.provider.js.map +1 -1
  88. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js +3 -3
  89. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  90. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture.js +2 -3
  91. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture.js.map +1 -1
  92. package/lib/commonjs/shared/providers/screen/gestures/index.js +8 -2
  93. package/lib/commonjs/shared/providers/screen/gestures/index.js.map +1 -1
  94. package/lib/commonjs/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js +11 -18
  95. package/lib/commonjs/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js.map +1 -1
  96. package/lib/commonjs/shared/providers/screen/gestures/ownership/resolve-ownership.js +5 -7
  97. package/lib/commonjs/shared/providers/screen/gestures/ownership/resolve-ownership.js.map +1 -1
  98. package/lib/commonjs/shared/providers/screen/gestures/pan/activation/use-pan-activation.js +4 -1
  99. package/lib/commonjs/shared/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  100. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js +1 -0
  101. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  102. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-release.js +9 -2
  103. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-release.js.map +1 -1
  104. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js +1 -0
  105. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js.map +1 -1
  106. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js +5 -8
  107. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js.map +1 -1
  108. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +5 -4
  109. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  110. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js +1 -3
  111. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js.map +1 -1
  112. package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js +4 -4
  113. package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js.map +1 -1
  114. package/lib/commonjs/shared/providers/screen/styles/constants.js +2 -1
  115. package/lib/commonjs/shared/providers/screen/styles/constants.js.map +1 -1
  116. package/lib/commonjs/shared/providers/screen/styles/helpers/visibility-block-ownership.js +19 -0
  117. package/lib/commonjs/shared/providers/screen/styles/helpers/visibility-block-ownership.js.map +1 -0
  118. package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js +4 -2
  119. package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -1
  120. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +5 -8
  121. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  122. package/lib/commonjs/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js +35 -15
  123. package/lib/commonjs/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  124. package/lib/commonjs/shared/providers/screen/styles/index.js +8 -2
  125. package/lib/commonjs/shared/providers/screen/styles/index.js.map +1 -1
  126. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js +23 -16
  127. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js.map +1 -1
  128. package/lib/commonjs/shared/providers/screen/use-current-screen-relationships.js +14 -0
  129. package/lib/commonjs/shared/providers/screen/use-current-screen-relationships.js.map +1 -0
  130. package/lib/commonjs/shared/providers/stack/blank-stack.provider.js +13 -5
  131. package/lib/commonjs/shared/providers/stack/blank-stack.provider.js.map +1 -1
  132. package/lib/commonjs/shared/providers/stack/core.provider.js +1 -3
  133. package/lib/commonjs/shared/providers/stack/core.provider.js.map +1 -1
  134. package/lib/commonjs/shared/providers/stack/direct.provider.js +2 -5
  135. package/lib/commonjs/shared/providers/stack/direct.provider.js.map +1 -1
  136. package/lib/commonjs/shared/stores/animation.store.js +0 -2
  137. package/lib/commonjs/shared/stores/animation.store.js.map +1 -1
  138. package/lib/commonjs/shared/stores/bounds/helpers/link-pairs.helpers.js +11 -1
  139. package/lib/commonjs/shared/stores/bounds/helpers/link-pairs.helpers.js.map +1 -1
  140. package/lib/commonjs/shared/stores/bounds/internals/clear.js +6 -0
  141. package/lib/commonjs/shared/stores/bounds/internals/clear.js.map +1 -1
  142. package/lib/commonjs/shared/stores/bounds/internals/coordinator.js +312 -0
  143. package/lib/commonjs/shared/stores/bounds/internals/coordinator.js.map +1 -0
  144. package/lib/commonjs/shared/stores/bounds/internals/entries.js +0 -27
  145. package/lib/commonjs/shared/stores/bounds/internals/entries.js.map +1 -1
  146. package/lib/commonjs/shared/stores/bounds/internals/links.js +22 -32
  147. package/lib/commonjs/shared/stores/bounds/internals/links.js.map +1 -1
  148. package/lib/commonjs/shared/stores/bounds/internals/state.js +4 -1
  149. package/lib/commonjs/shared/stores/bounds/internals/state.js.map +1 -1
  150. package/lib/commonjs/shared/utils/bounds/helpers/create-bounds-accessor-core.js +7 -3
  151. package/lib/commonjs/shared/utils/bounds/helpers/create-bounds-accessor-core.js.map +1 -1
  152. package/lib/commonjs/shared/utils/bounds/helpers/create-link-accessor.js +11 -0
  153. package/lib/commonjs/shared/utils/bounds/helpers/create-link-accessor.js.map +1 -1
  154. package/lib/commonjs/shared/utils/bounds/helpers/prepare-bound-styles.js +6 -2
  155. package/lib/commonjs/shared/utils/bounds/helpers/prepare-bound-styles.js.map +1 -1
  156. package/lib/commonjs/shared/utils/bounds/helpers/resolve-bounds-pair-key.js.map +1 -1
  157. package/lib/commonjs/shared/utils/bounds/helpers/styles/compute.js +11 -5
  158. package/lib/commonjs/shared/utils/bounds/helpers/styles/compute.js.map +1 -1
  159. package/lib/commonjs/shared/utils/create-provider.js +51 -100
  160. package/lib/commonjs/shared/utils/create-provider.js.map +1 -1
  161. package/lib/module/shared/adapters/with-screen-transitions/stack-layout.js +1 -2
  162. package/lib/module/shared/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  163. package/lib/module/shared/components/activity/helpers.js +48 -0
  164. package/lib/module/shared/components/activity/helpers.js.map +1 -1
  165. package/lib/module/shared/components/activity/variants/activity-screen.js +18 -69
  166. package/lib/module/shared/components/activity/variants/activity-screen.js.map +1 -1
  167. package/lib/module/shared/components/boundary/components/boundary-lifecycle.js +0 -3
  168. package/lib/module/shared/components/boundary/components/boundary-lifecycle.js.map +1 -1
  169. package/lib/module/shared/components/boundary/components/boundary-target.js +2 -2
  170. package/lib/module/shared/components/boundary/components/boundary-target.js.map +1 -1
  171. package/lib/module/shared/components/boundary/hooks/lifecycles/use-boundary-measurement-request.js +64 -0
  172. package/lib/module/shared/components/boundary/hooks/lifecycles/use-boundary-measurement-request.js.map +1 -0
  173. package/lib/module/shared/components/boundary/hooks/lifecycles/use-boundary-presence.js +11 -10
  174. package/lib/module/shared/components/boundary/hooks/lifecycles/use-boundary-presence.js.map +1 -1
  175. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js +3 -19
  176. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  177. package/lib/module/shared/components/boundary/hooks/use-measurer.js +9 -18
  178. package/lib/module/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  179. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js +24 -0
  180. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js.map +1 -1
  181. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +29 -13
  182. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  183. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +8 -1
  184. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
  185. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/attachment.js +14 -0
  186. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/attachment.js.map +1 -0
  187. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/host-readiness.js +13 -0
  188. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/host-readiness.js.map +1 -0
  189. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js +19 -0
  190. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js.map +1 -1
  191. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js +10 -10
  192. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js.map +1 -1
  193. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +20 -13
  194. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  195. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js +5 -6
  196. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  197. package/lib/module/shared/components/overlay/helpers/create-overlay-interpolator-frame.js +7 -1
  198. package/lib/module/shared/components/overlay/helpers/create-overlay-interpolator-frame.js.map +1 -1
  199. package/lib/module/shared/components/overlay/helpers/get-active-overlay.js +16 -4
  200. package/lib/module/shared/components/overlay/helpers/get-active-overlay.js.map +1 -1
  201. package/lib/module/shared/components/overlay/hooks/use-overlay-slot.js +12 -7
  202. package/lib/module/shared/components/overlay/hooks/use-overlay-slot.js.map +1 -1
  203. package/lib/module/shared/components/overlay/variations/overlay-host.js +7 -6
  204. package/lib/module/shared/components/overlay/variations/overlay-host.js.map +1 -1
  205. package/lib/module/shared/components/screen-container/layers/content.js +2 -3
  206. package/lib/module/shared/components/screen-container/layers/content.js.map +1 -1
  207. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +9 -7
  208. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  209. package/lib/module/shared/factories/screen-topology/create-screen-topology.js +142 -0
  210. package/lib/module/shared/factories/screen-topology/create-screen-topology.js.map +1 -0
  211. package/lib/module/shared/factories/screen-topology/index.js +6 -0
  212. package/lib/module/shared/factories/screen-topology/index.js.map +1 -0
  213. package/lib/module/shared/factories/screen-topology/types.js +2 -0
  214. package/lib/module/shared/factories/screen-topology/types.js.map +1 -0
  215. package/lib/module/shared/factories/screen-topology/use-screen-relationships.js +10 -0
  216. package/lib/module/shared/factories/screen-topology/use-screen-relationships.js.map +1 -0
  217. package/lib/module/shared/factories/screen-topology/worklet.js +48 -0
  218. package/lib/module/shared/factories/screen-topology/worklet.js.map +1 -0
  219. package/lib/module/shared/hooks/navigation/use-screen-state.js.map +1 -1
  220. package/lib/module/shared/hooks/navigation/use-stack.js +17 -18
  221. package/lib/module/shared/hooks/navigation/use-stack.js.map +1 -1
  222. package/lib/module/shared/providers/helpers/measured-bounds-writes.js +4 -0
  223. package/lib/module/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
  224. package/lib/module/shared/providers/screen/animation/animation.provider.js +25 -95
  225. package/lib/module/shared/providers/screen/animation/animation.provider.js.map +1 -1
  226. package/lib/module/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +6 -52
  227. package/lib/module/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
  228. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js +5 -1
  229. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  230. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js +14 -14
  231. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  232. package/lib/module/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js +4 -13
  233. package/lib/module/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js.map +1 -1
  234. package/lib/module/shared/providers/screen/animation/helpers/stack-progress.js +9 -24
  235. package/lib/module/shared/providers/screen/animation/helpers/stack-progress.js.map +1 -1
  236. package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js +0 -1
  237. package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
  238. package/lib/module/shared/providers/screen/animation/index.js +1 -1
  239. package/lib/module/shared/providers/screen/animation/index.js.map +1 -1
  240. package/lib/module/shared/providers/screen/animation/use-screen-animation.js +9 -8
  241. package/lib/module/shared/providers/screen/animation/use-screen-animation.js.map +1 -1
  242. package/lib/module/shared/providers/screen/descriptors/descriptors.provider.js +66 -18
  243. package/lib/module/shared/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  244. package/lib/module/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.js +3 -4
  245. package/lib/module/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.js.map +1 -1
  246. package/lib/module/shared/providers/screen/gestures/gestures.provider.js +21 -17
  247. package/lib/module/shared/providers/screen/gestures/gestures.provider.js.map +1 -1
  248. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js +3 -3
  249. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  250. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture.js +3 -4
  251. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture.js.map +1 -1
  252. package/lib/module/shared/providers/screen/gestures/index.js +1 -1
  253. package/lib/module/shared/providers/screen/gestures/index.js.map +1 -1
  254. package/lib/module/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js +13 -20
  255. package/lib/module/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js.map +1 -1
  256. package/lib/module/shared/providers/screen/gestures/ownership/resolve-ownership.js +5 -7
  257. package/lib/module/shared/providers/screen/gestures/ownership/resolve-ownership.js.map +1 -1
  258. package/lib/module/shared/providers/screen/gestures/pan/activation/use-pan-activation.js +4 -1
  259. package/lib/module/shared/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  260. package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js +1 -0
  261. package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  262. package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-release.js +9 -2
  263. package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-release.js.map +1 -1
  264. package/lib/module/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js +1 -0
  265. package/lib/module/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js.map +1 -1
  266. package/lib/module/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js +4 -8
  267. package/lib/module/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js.map +1 -1
  268. package/lib/module/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +7 -6
  269. package/lib/module/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  270. package/lib/module/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js +1 -3
  271. package/lib/module/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js.map +1 -1
  272. package/lib/module/shared/providers/screen/gestures/shared/policy.js +4 -4
  273. package/lib/module/shared/providers/screen/gestures/shared/policy.js.map +1 -1
  274. package/lib/module/shared/providers/screen/styles/constants.js +2 -1
  275. package/lib/module/shared/providers/screen/styles/constants.js.map +1 -1
  276. package/lib/module/shared/providers/screen/styles/helpers/visibility-block-ownership.js +14 -0
  277. package/lib/module/shared/providers/screen/styles/helpers/visibility-block-ownership.js.map +1 -0
  278. package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js +5 -3
  279. package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -1
  280. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +5 -8
  281. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  282. package/lib/module/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js +35 -15
  283. package/lib/module/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  284. package/lib/module/shared/providers/screen/styles/index.js +1 -1
  285. package/lib/module/shared/providers/screen/styles/index.js.map +1 -1
  286. package/lib/module/shared/providers/screen/styles/slot.provider.js +20 -14
  287. package/lib/module/shared/providers/screen/styles/slot.provider.js.map +1 -1
  288. package/lib/module/shared/providers/screen/use-current-screen-relationships.js +9 -0
  289. package/lib/module/shared/providers/screen/use-current-screen-relationships.js.map +1 -0
  290. package/lib/module/shared/providers/stack/blank-stack.provider.js +12 -5
  291. package/lib/module/shared/providers/stack/blank-stack.provider.js.map +1 -1
  292. package/lib/module/shared/providers/stack/core.provider.js +1 -3
  293. package/lib/module/shared/providers/stack/core.provider.js.map +1 -1
  294. package/lib/module/shared/providers/stack/direct.provider.js +2 -5
  295. package/lib/module/shared/providers/stack/direct.provider.js.map +1 -1
  296. package/lib/module/shared/stores/animation.store.js +0 -2
  297. package/lib/module/shared/stores/animation.store.js.map +1 -1
  298. package/lib/module/shared/stores/bounds/helpers/link-pairs.helpers.js +9 -0
  299. package/lib/module/shared/stores/bounds/helpers/link-pairs.helpers.js.map +1 -1
  300. package/lib/module/shared/stores/bounds/internals/clear.js +7 -1
  301. package/lib/module/shared/stores/bounds/internals/clear.js.map +1 -1
  302. package/lib/module/shared/stores/bounds/internals/coordinator.js +300 -0
  303. package/lib/module/shared/stores/bounds/internals/coordinator.js.map +1 -0
  304. package/lib/module/shared/stores/bounds/internals/entries.js +1 -27
  305. package/lib/module/shared/stores/bounds/internals/entries.js.map +1 -1
  306. package/lib/module/shared/stores/bounds/internals/links.js +24 -32
  307. package/lib/module/shared/stores/bounds/internals/links.js.map +1 -1
  308. package/lib/module/shared/stores/bounds/internals/state.js +3 -0
  309. package/lib/module/shared/stores/bounds/internals/state.js.map +1 -1
  310. package/lib/module/shared/utils/bounds/helpers/create-bounds-accessor-core.js +7 -3
  311. package/lib/module/shared/utils/bounds/helpers/create-bounds-accessor-core.js.map +1 -1
  312. package/lib/module/shared/utils/bounds/helpers/create-link-accessor.js +11 -0
  313. package/lib/module/shared/utils/bounds/helpers/create-link-accessor.js.map +1 -1
  314. package/lib/module/shared/utils/bounds/helpers/prepare-bound-styles.js +6 -2
  315. package/lib/module/shared/utils/bounds/helpers/prepare-bound-styles.js.map +1 -1
  316. package/lib/module/shared/utils/bounds/helpers/resolve-bounds-pair-key.js.map +1 -1
  317. package/lib/module/shared/utils/bounds/helpers/styles/compute.js +11 -5
  318. package/lib/module/shared/utils/bounds/helpers/styles/compute.js.map +1 -1
  319. package/lib/module/shared/utils/create-provider.js +51 -100
  320. package/lib/module/shared/utils/create-provider.js.map +1 -1
  321. package/lib/typescript/shared/adapters/with-screen-transitions/stack-layout.d.ts.map +1 -1
  322. package/lib/typescript/shared/components/activity/helpers.d.ts +16 -0
  323. package/lib/typescript/shared/components/activity/helpers.d.ts.map +1 -1
  324. package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts +2 -4
  325. package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts.map +1 -1
  326. package/lib/typescript/shared/components/boundary/components/boundary-lifecycle.d.ts.map +1 -1
  327. package/lib/typescript/shared/components/boundary/hooks/lifecycles/{use-initial-source-measurement.d.ts → use-boundary-measurement-request.d.ts} +4 -3
  328. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-boundary-measurement-request.d.ts.map +1 -0
  329. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-boundary-presence.d.ts.map +1 -1
  330. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts +1 -3
  331. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts.map +1 -1
  332. package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts.map +1 -1
  333. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.d.ts +12 -0
  334. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.d.ts.map +1 -1
  335. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts.map +1 -1
  336. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.d.ts.map +1 -1
  337. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/attachment.d.ts +8 -0
  338. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/attachment.d.ts.map +1 -0
  339. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/host-readiness.d.ts +6 -0
  340. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/host-readiness.d.ts.map +1 -0
  341. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.d.ts +4 -1
  342. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.d.ts.map +1 -1
  343. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.d.ts +2 -3
  344. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.d.ts.map +1 -1
  345. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -1
  346. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts +1 -1
  347. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts.map +1 -1
  348. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts +3 -0
  349. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
  350. package/lib/typescript/shared/components/boundary/types.d.ts +1 -1
  351. package/lib/typescript/shared/components/boundary/types.d.ts.map +1 -1
  352. package/lib/typescript/shared/components/overlay/helpers/create-overlay-interpolator-frame.d.ts +1 -0
  353. package/lib/typescript/shared/components/overlay/helpers/create-overlay-interpolator-frame.d.ts.map +1 -1
  354. package/lib/typescript/shared/components/overlay/helpers/get-active-overlay.d.ts.map +1 -1
  355. package/lib/typescript/shared/components/overlay/hooks/use-overlay-slot.d.ts +2 -1
  356. package/lib/typescript/shared/components/overlay/hooks/use-overlay-slot.d.ts.map +1 -1
  357. package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts.map +1 -1
  358. package/lib/typescript/shared/components/screen-container/layers/content.d.ts.map +1 -1
  359. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts +1 -1
  360. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts.map +1 -1
  361. package/lib/typescript/shared/factories/screen-topology/create-screen-topology.d.ts +4 -0
  362. package/lib/typescript/shared/factories/screen-topology/create-screen-topology.d.ts.map +1 -0
  363. package/lib/typescript/shared/factories/screen-topology/index.d.ts +5 -0
  364. package/lib/typescript/shared/factories/screen-topology/index.d.ts.map +1 -0
  365. package/lib/typescript/shared/factories/screen-topology/types.d.ts +20 -0
  366. package/lib/typescript/shared/factories/screen-topology/types.d.ts.map +1 -0
  367. package/lib/typescript/shared/factories/screen-topology/use-screen-relationships.d.ts +5 -0
  368. package/lib/typescript/shared/factories/screen-topology/use-screen-relationships.d.ts.map +1 -0
  369. package/lib/typescript/shared/factories/screen-topology/worklet.d.ts +5 -0
  370. package/lib/typescript/shared/factories/screen-topology/worklet.d.ts.map +1 -0
  371. package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts.map +1 -1
  372. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts +2 -0
  373. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts.map +1 -1
  374. package/lib/typescript/shared/providers/helpers/measured-bounds-writes.d.ts.map +1 -1
  375. package/lib/typescript/shared/providers/screen/animation/animation.provider.d.ts +14 -12
  376. package/lib/typescript/shared/providers/screen/animation/animation.provider.d.ts.map +1 -1
  377. package/lib/typescript/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts +4 -4
  378. package/lib/typescript/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts.map +1 -1
  379. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/index.d.ts.map +1 -1
  380. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/types.d.ts +0 -1
  381. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/types.d.ts.map +1 -1
  382. package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
  383. package/lib/typescript/shared/providers/screen/animation/helpers/read-screen-animation-revisions.d.ts +2 -2
  384. package/lib/typescript/shared/providers/screen/animation/helpers/read-screen-animation-revisions.d.ts.map +1 -1
  385. package/lib/typescript/shared/providers/screen/animation/helpers/stack-progress.d.ts +5 -2
  386. package/lib/typescript/shared/providers/screen/animation/helpers/stack-progress.d.ts.map +1 -1
  387. package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts +0 -1
  388. package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts.map +1 -1
  389. package/lib/typescript/shared/providers/screen/animation/index.d.ts +1 -1
  390. package/lib/typescript/shared/providers/screen/animation/index.d.ts.map +1 -1
  391. package/lib/typescript/shared/providers/screen/animation/types.d.ts +1 -13
  392. package/lib/typescript/shared/providers/screen/animation/types.d.ts.map +1 -1
  393. package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts +5 -2
  394. package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts.map +1 -1
  395. package/lib/typescript/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.d.ts +5 -4
  396. package/lib/typescript/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.d.ts.map +1 -1
  397. package/lib/typescript/shared/providers/screen/gestures/gestures.provider.d.ts +16 -4
  398. package/lib/typescript/shared/providers/screen/gestures/gestures.provider.d.ts.map +1 -1
  399. package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts +2 -2
  400. package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts.map +1 -1
  401. package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture.d.ts.map +1 -1
  402. package/lib/typescript/shared/providers/screen/gestures/index.d.ts +1 -1
  403. package/lib/typescript/shared/providers/screen/gestures/index.d.ts.map +1 -1
  404. package/lib/typescript/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.d.ts.map +1 -1
  405. package/lib/typescript/shared/providers/screen/gestures/ownership/resolve-ownership.d.ts +2 -3
  406. package/lib/typescript/shared/providers/screen/gestures/ownership/resolve-ownership.d.ts.map +1 -1
  407. package/lib/typescript/shared/providers/screen/gestures/pan/activation/use-pan-activation.d.ts.map +1 -1
  408. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.d.ts.map +1 -1
  409. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/pan-release.d.ts.map +1 -1
  410. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.d.ts.map +1 -1
  411. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.d.ts +5 -3
  412. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.d.ts.map +1 -1
  413. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.d.ts.map +1 -1
  414. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.d.ts +2 -2
  415. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.d.ts.map +1 -1
  416. package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts +3 -3
  417. package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts.map +1 -1
  418. package/lib/typescript/shared/providers/screen/gestures/types.d.ts +5 -2
  419. package/lib/typescript/shared/providers/screen/gestures/types.d.ts.map +1 -1
  420. package/lib/typescript/shared/providers/screen/styles/constants.d.ts.map +1 -1
  421. package/lib/typescript/shared/providers/screen/styles/helpers/visibility-block-ownership.d.ts +10 -0
  422. package/lib/typescript/shared/providers/screen/styles/helpers/visibility-block-ownership.d.ts.map +1 -0
  423. package/lib/typescript/shared/providers/screen/styles/hooks/slot-resolvers.d.ts.map +1 -1
  424. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  425. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts +8 -2
  426. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts.map +1 -1
  427. package/lib/typescript/shared/providers/screen/styles/index.d.ts +1 -1
  428. package/lib/typescript/shared/providers/screen/styles/index.d.ts.map +1 -1
  429. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts +9 -3
  430. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts.map +1 -1
  431. package/lib/typescript/shared/providers/screen/use-current-screen-relationships.d.ts +5 -0
  432. package/lib/typescript/shared/providers/screen/use-current-screen-relationships.d.ts.map +1 -0
  433. package/lib/typescript/shared/providers/stack/blank-stack.provider.d.ts +4 -1
  434. package/lib/typescript/shared/providers/stack/blank-stack.provider.d.ts.map +1 -1
  435. package/lib/typescript/shared/providers/stack/core.provider.d.ts.map +1 -1
  436. package/lib/typescript/shared/providers/stack/direct.provider.d.ts.map +1 -1
  437. package/lib/typescript/shared/stores/animation.store.d.ts +0 -1
  438. package/lib/typescript/shared/stores/animation.store.d.ts.map +1 -1
  439. package/lib/typescript/shared/stores/bounds/helpers/link-pairs.helpers.d.ts +1 -0
  440. package/lib/typescript/shared/stores/bounds/helpers/link-pairs.helpers.d.ts.map +1 -1
  441. package/lib/typescript/shared/stores/bounds/internals/clear.d.ts.map +1 -1
  442. package/lib/typescript/shared/stores/bounds/internals/coordinator.d.ts +36 -0
  443. package/lib/typescript/shared/stores/bounds/internals/coordinator.d.ts.map +1 -0
  444. package/lib/typescript/shared/stores/bounds/internals/entries.d.ts +1 -2
  445. package/lib/typescript/shared/stores/bounds/internals/entries.d.ts.map +1 -1
  446. package/lib/typescript/shared/stores/bounds/internals/links.d.ts +1 -3
  447. package/lib/typescript/shared/stores/bounds/internals/links.d.ts.map +1 -1
  448. package/lib/typescript/shared/stores/bounds/internals/state.d.ts +3 -1
  449. package/lib/typescript/shared/stores/bounds/internals/state.d.ts.map +1 -1
  450. package/lib/typescript/shared/stores/bounds/types.d.ts +12 -1
  451. package/lib/typescript/shared/stores/bounds/types.d.ts.map +1 -1
  452. package/lib/typescript/shared/types/providers/blank-stack-provider.types.d.ts +1 -0
  453. package/lib/typescript/shared/types/providers/blank-stack-provider.types.d.ts.map +1 -1
  454. package/lib/typescript/shared/utils/bounds/helpers/create-bounds-accessor-core.d.ts.map +1 -1
  455. package/lib/typescript/shared/utils/bounds/helpers/create-link-accessor.d.ts.map +1 -1
  456. package/lib/typescript/shared/utils/bounds/helpers/prepare-bound-styles.d.ts.map +1 -1
  457. package/lib/typescript/shared/utils/bounds/helpers/resolve-bounds-pair-key.d.ts.map +1 -1
  458. package/lib/typescript/shared/utils/bounds/helpers/styles/compute.d.ts.map +1 -1
  459. package/lib/typescript/shared/utils/create-provider.d.ts +24 -24
  460. package/lib/typescript/shared/utils/create-provider.d.ts.map +1 -1
  461. package/package.json +1 -1
  462. package/src/shared/adapters/with-screen-transitions/stack-layout.tsx +1 -2
  463. package/src/shared/components/activity/helpers.ts +59 -0
  464. package/src/shared/components/activity/variants/activity-screen.tsx +29 -94
  465. package/src/shared/components/boundary/components/boundary-lifecycle.tsx +0 -6
  466. package/src/shared/components/boundary/components/boundary-target.tsx +2 -2
  467. package/src/shared/components/boundary/hooks/lifecycles/use-boundary-measurement-request.ts +102 -0
  468. package/src/shared/components/boundary/hooks/lifecycles/use-boundary-presence.ts +20 -11
  469. package/src/shared/components/boundary/hooks/use-boundary-measurement.ts +3 -22
  470. package/src/shared/components/boundary/hooks/use-measurer.ts +8 -22
  471. package/src/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.ts +40 -0
  472. package/src/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.ts +73 -22
  473. package/src/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.tsx +10 -1
  474. package/src/shared/components/boundary/portal/components/boundary-portal/helpers/attachment.ts +19 -0
  475. package/src/shared/components/boundary/portal/components/boundary-portal/helpers/host-readiness.ts +14 -0
  476. package/src/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.ts +36 -1
  477. package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.ts +22 -13
  478. package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +28 -15
  479. package/src/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.ts +1 -1
  480. package/src/shared/components/boundary/providers/boundary-root.provider.tsx +10 -6
  481. package/src/shared/components/boundary/types.ts +1 -1
  482. package/src/shared/components/overlay/helpers/create-overlay-interpolator-frame.ts +14 -1
  483. package/src/shared/components/overlay/helpers/get-active-overlay.ts +29 -4
  484. package/src/shared/components/overlay/hooks/use-overlay-slot.ts +26 -8
  485. package/src/shared/components/overlay/variations/overlay-host.tsx +11 -6
  486. package/src/shared/components/screen-container/layers/content.tsx +3 -4
  487. package/src/shared/components/screen-lifecycle/hooks/use-close-transition-intent.ts +8 -12
  488. package/src/shared/factories/screen-topology/create-screen-topology.ts +199 -0
  489. package/src/shared/factories/screen-topology/index.ts +16 -0
  490. package/src/shared/factories/screen-topology/types.ts +22 -0
  491. package/src/shared/factories/screen-topology/use-screen-relationships.ts +15 -0
  492. package/src/shared/factories/screen-topology/worklet.ts +60 -0
  493. package/src/shared/hooks/navigation/use-screen-state.ts +2 -7
  494. package/src/shared/hooks/navigation/use-stack.tsx +28 -31
  495. package/src/shared/providers/helpers/measured-bounds-writes.ts +5 -0
  496. package/src/shared/providers/screen/animation/animation.provider.tsx +73 -206
  497. package/src/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.ts +10 -81
  498. package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/index.ts +18 -3
  499. package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/types.ts +0 -1
  500. package/src/shared/providers/screen/animation/helpers/pipeline.ts +19 -22
  501. package/src/shared/providers/screen/animation/helpers/read-screen-animation-revisions.ts +6 -30
  502. package/src/shared/providers/screen/animation/helpers/stack-progress.ts +13 -32
  503. package/src/shared/providers/screen/animation/helpers/use-build-transition-state.ts +0 -2
  504. package/src/shared/providers/screen/animation/index.tsx +1 -0
  505. package/src/shared/providers/screen/animation/types.ts +1 -23
  506. package/src/shared/providers/screen/animation/use-screen-animation.tsx +10 -14
  507. package/src/shared/providers/screen/descriptors/descriptors.provider.tsx +110 -23
  508. package/src/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.ts +6 -6
  509. package/src/shared/providers/screen/gestures/gestures.provider.tsx +96 -85
  510. package/src/shared/providers/screen/gestures/hooks/use-screen-gesture-config.ts +4 -4
  511. package/src/shared/providers/screen/gestures/hooks/use-screen-gesture.ts +3 -4
  512. package/src/shared/providers/screen/gestures/index.tsx +2 -1
  513. package/src/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.tsx +16 -29
  514. package/src/shared/providers/screen/gestures/ownership/resolve-ownership.ts +5 -8
  515. package/src/shared/providers/screen/gestures/pan/activation/use-pan-activation.ts +2 -3
  516. package/src/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.ts +1 -0
  517. package/src/shared/providers/screen/gestures/pan/behavior/pan-release.ts +12 -2
  518. package/src/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.ts +1 -0
  519. package/src/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.tsx +6 -9
  520. package/src/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.ts +11 -7
  521. package/src/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.ts +12 -12
  522. package/src/shared/providers/screen/gestures/shared/policy.ts +7 -7
  523. package/src/shared/providers/screen/gestures/types.ts +6 -2
  524. package/src/shared/providers/screen/styles/constants.ts +1 -0
  525. package/src/shared/providers/screen/styles/helpers/visibility-block-ownership.ts +16 -0
  526. package/src/shared/providers/screen/styles/hooks/slot-resolvers.tsx +10 -3
  527. package/src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +7 -17
  528. package/src/shared/providers/screen/styles/hooks/use-maybe-block-visibility.tsx +40 -15
  529. package/src/shared/providers/screen/styles/index.tsx +2 -1
  530. package/src/shared/providers/screen/styles/slot.provider.tsx +30 -15
  531. package/src/shared/providers/screen/use-current-screen-relationships.ts +10 -0
  532. package/src/shared/providers/stack/blank-stack.provider.tsx +19 -6
  533. package/src/shared/providers/stack/core.provider.tsx +0 -1
  534. package/src/shared/providers/stack/direct.provider.tsx +2 -4
  535. package/src/shared/stores/animation.store.ts +0 -3
  536. package/src/shared/stores/bounds/helpers/link-pairs.helpers.ts +12 -0
  537. package/src/shared/stores/bounds/internals/clear.ts +12 -1
  538. package/src/shared/stores/bounds/internals/coordinator.ts +415 -0
  539. package/src/shared/stores/bounds/internals/entries.ts +1 -38
  540. package/src/shared/stores/bounds/internals/links.ts +28 -38
  541. package/src/shared/stores/bounds/internals/state.ts +10 -1
  542. package/src/shared/stores/bounds/types.ts +18 -1
  543. package/src/shared/types/providers/blank-stack-provider.types.ts +1 -0
  544. package/src/shared/utils/bounds/helpers/create-bounds-accessor-core.ts +8 -3
  545. package/src/shared/utils/bounds/helpers/create-link-accessor.ts +11 -0
  546. package/src/shared/utils/bounds/helpers/prepare-bound-styles.ts +3 -2
  547. package/src/shared/utils/bounds/helpers/resolve-bounds-pair-key.ts +0 -1
  548. package/src/shared/utils/bounds/helpers/styles/compute.ts +12 -5
  549. package/src/shared/utils/create-provider.tsx +135 -200
  550. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +0 -177
  551. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +0 -1
  552. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.js +0 -49
  553. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.js.map +0 -1
  554. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js +0 -69
  555. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +0 -1
  556. package/lib/commonjs/shared/components/boundary/utils/destination-signals.js +0 -68
  557. package/lib/commonjs/shared/components/boundary/utils/destination-signals.js.map +0 -1
  558. package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js +0 -97
  559. package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js.map +0 -1
  560. package/lib/commonjs/shared/components/boundary/utils/source-signals.js +0 -43
  561. package/lib/commonjs/shared/components/boundary/utils/source-signals.js.map +0 -1
  562. package/lib/commonjs/shared/providers/screen/descriptors/helpers/get-ancestor-keys.js +0 -29
  563. package/lib/commonjs/shared/providers/screen/descriptors/helpers/get-ancestor-keys.js.map +0 -1
  564. package/lib/commonjs/shared/providers/screen/gestures/shared/ancestors.js +0 -23
  565. package/lib/commonjs/shared/providers/screen/gestures/shared/ancestors.js.map +0 -1
  566. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +0 -173
  567. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +0 -1
  568. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.js +0 -44
  569. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.js.map +0 -1
  570. package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js +0 -64
  571. package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +0 -1
  572. package/lib/module/shared/components/boundary/utils/destination-signals.js +0 -63
  573. package/lib/module/shared/components/boundary/utils/destination-signals.js.map +0 -1
  574. package/lib/module/shared/components/boundary/utils/refresh-signals.js +0 -92
  575. package/lib/module/shared/components/boundary/utils/refresh-signals.js.map +0 -1
  576. package/lib/module/shared/components/boundary/utils/source-signals.js +0 -38
  577. package/lib/module/shared/components/boundary/utils/source-signals.js.map +0 -1
  578. package/lib/module/shared/providers/screen/descriptors/helpers/get-ancestor-keys.js +0 -25
  579. package/lib/module/shared/providers/screen/descriptors/helpers/get-ancestor-keys.js.map +0 -1
  580. package/lib/module/shared/providers/screen/gestures/shared/ancestors.js +0 -19
  581. package/lib/module/shared/providers/screen/gestures/shared/ancestors.js.map +0 -1
  582. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts +0 -10
  583. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts.map +0 -1
  584. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.d.ts.map +0 -1
  585. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts +0 -10
  586. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts.map +0 -1
  587. package/lib/typescript/shared/components/boundary/utils/destination-signals.d.ts +0 -16
  588. package/lib/typescript/shared/components/boundary/utils/destination-signals.d.ts.map +0 -1
  589. package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts +0 -19
  590. package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts.map +0 -1
  591. package/lib/typescript/shared/components/boundary/utils/source-signals.d.ts +0 -14
  592. package/lib/typescript/shared/components/boundary/utils/source-signals.d.ts.map +0 -1
  593. package/lib/typescript/shared/providers/screen/descriptors/helpers/get-ancestor-keys.d.ts +0 -6
  594. package/lib/typescript/shared/providers/screen/descriptors/helpers/get-ancestor-keys.d.ts.map +0 -1
  595. package/lib/typescript/shared/providers/screen/gestures/shared/ancestors.d.ts +0 -11
  596. package/lib/typescript/shared/providers/screen/gestures/shared/ancestors.d.ts.map +0 -1
  597. package/src/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.ts +0 -267
  598. package/src/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.ts +0 -51
  599. package/src/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.ts +0 -90
  600. package/src/shared/components/boundary/utils/destination-signals.ts +0 -75
  601. package/src/shared/components/boundary/utils/refresh-signals.ts +0 -164
  602. package/src/shared/components/boundary/utils/source-signals.ts +0 -51
  603. package/src/shared/providers/screen/descriptors/helpers/get-ancestor-keys.ts +0 -28
  604. package/src/shared/providers/screen/gestures/shared/ancestors.ts +0 -27
@@ -4,6 +4,7 @@ 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";
7
8
  import { useScreenGestureConfig } from "./hooks/use-screen-gesture-config";
8
9
  import { GestureOwnershipBridge } from "./ownership/gesture-ownership-bridge";
9
10
  import { useBuildPanGesture } from "./pan/use-build-pan-gesture";
@@ -13,100 +14,110 @@ import {
13
14
  type GestureCompositionOwner,
14
15
  type GestureContextType,
15
16
  NO_DIRECTION_CLAIMS,
17
+ type ScreenGestureSource,
16
18
  } from "./types";
17
19
 
18
20
  interface ScreenGestureProviderProps {
19
21
  children: React.ReactNode;
20
22
  }
21
23
 
22
- export const { ScreenGestureProvider, useScreenGestureStore: useGestureStore } =
23
- createProvider("ScreenGesture", { guarded: false })<
24
- ScreenGestureProviderProps,
25
- GestureContextType
26
- >(
27
- (
28
- { children },
29
- { useParentStore },
30
- ): { value: GestureContextType; children: React.ReactNode } => {
31
- const currentScreenKey = useDescriptorsStore(
32
- (store) => store.derivations.currentScreenKey,
33
- );
34
- const isTopMostScreen = useDescriptorsStore(
35
- (store) => store.derivations.isTopMostScreen,
36
- );
37
- const gestureContext = useParentStore((parentContext) =>
38
- isTopMostScreen ? parentContext : null,
39
- );
40
- const gestureConfig = useScreenGestureConfig(gestureContext);
24
+ type ScreenGestureStoreValue = GestureContextType & {
25
+ relationshipGestureSources: readonly ScreenGestureSource[];
26
+ };
41
27
 
42
- const scrollState = ScrollStore.getValue(
43
- currentScreenKey,
44
- "coordination",
45
- );
46
-
47
- // Ancestors read this before activating. If a nested screen claims the same
48
- // direction, it writes here so the ancestor can fail and let it take priority.
49
- const childDirectionClaims =
50
- useSharedValue<DirectionClaimMap>(NO_DIRECTION_CLAIMS);
28
+ const EMPTY_GESTURE_SOURCES: readonly ScreenGestureSource[] = [];
51
29
 
52
- // The first gesture to activate owns navigation release. Other gestures may
53
- // still join as companion trackers during the same simultaneous composition.
54
- const gestureCompositionOwner =
55
- useSharedValue<GestureCompositionOwner>(null);
30
+ const createScreenGestureProvider = createProvider("ScreenGesture", {
31
+ global: true,
32
+ })<ScreenGestureProviderProps, ScreenGestureStoreValue>;
56
33
 
57
- const panGesture = useBuildPanGesture({
34
+ export const {
35
+ ScreenGestureProvider,
36
+ useOptionalScreenGestureStore,
37
+ useScreenGestureStore,
38
+ }: ReturnType<typeof createScreenGestureProvider> = createScreenGestureProvider(
39
+ ({ children }) => {
40
+ const currentScreenKey = useDescriptorsStore(
41
+ (store) => store.derivations.currentScreenKey,
42
+ );
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);
56
+ const scrollState = ScrollStore.getValue(currentScreenKey, "coordination");
57
+ const childDirectionClaims =
58
+ useSharedValue<DirectionClaimMap>(NO_DIRECTION_CLAIMS);
59
+ const gestureCompositionOwner =
60
+ useSharedValue<GestureCompositionOwner>(null);
61
+ const panGesture = useBuildPanGesture({
62
+ scrollState,
63
+ gestureConfig,
64
+ childDirectionClaims,
65
+ gestureCompositionOwner,
66
+ });
67
+ const pinchGesture = useBuildPinchGesture({
68
+ gestureConfig,
69
+ gestureCompositionOwner,
70
+ });
71
+ const detectorGesture = useMemo(
72
+ () => Gesture.Simultaneous(panGesture, pinchGesture),
73
+ [panGesture, pinchGesture],
74
+ );
75
+ const source = useMemo<ScreenGestureSource>(
76
+ () => ({
77
+ routeKey: currentScreenKey,
78
+ detectorGesture,
79
+ panGesture,
80
+ pinchGesture,
58
81
  scrollState,
59
- gestureConfig,
82
+ claimedDirections: gestureConfig.participation.claimedDirections,
60
83
  childDirectionClaims,
61
- gestureCompositionOwner,
62
- });
63
-
64
- const pinchGesture = useBuildPinchGesture({
65
- gestureConfig,
66
- gestureCompositionOwner,
67
- });
68
-
69
- const detectorGesture = useMemo(
70
- () => Gesture.Simultaneous(panGesture, pinchGesture),
71
- [panGesture, pinchGesture],
72
- );
73
-
74
- const value = useMemo<GestureContextType>(
75
- () => ({
76
- routeKey: currentScreenKey,
77
- detectorGesture,
78
- panGesture,
79
- pinchGesture,
80
- scrollState,
81
- gestureContext,
82
- claimedDirections: gestureConfig.participation.claimedDirections,
83
- childDirectionClaims,
84
- }),
85
- [
86
- currentScreenKey,
87
- detectorGesture,
88
- panGesture,
89
- pinchGesture,
90
- scrollState,
91
- gestureContext,
92
- gestureConfig.participation.claimedDirections,
93
- childDirectionClaims,
94
- ],
95
- );
96
-
97
- const content = useMemo(
98
- () => (
99
- <Fragment>
100
- <GestureOwnershipBridge />
101
- {children}
102
- </Fragment>
103
- ),
104
- [children],
105
- );
84
+ }),
85
+ [
86
+ currentScreenKey,
87
+ detectorGesture,
88
+ panGesture,
89
+ pinchGesture,
90
+ scrollState,
91
+ gestureConfig.participation.claimedDirections,
92
+ childDirectionClaims,
93
+ ],
94
+ );
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
+ );
106
116
 
107
- return {
108
- value,
109
- children: content,
110
- };
111
- },
112
- );
117
+ return {
118
+ key: currentScreenKey,
119
+ value,
120
+ children: content,
121
+ };
122
+ },
123
+ );
@@ -2,10 +2,10 @@ import { usePreventRemoveContext } from "@react-navigation/native";
2
2
  import { useMemo } from "react";
3
3
  import { useDescriptorsStore } from "../../descriptors";
4
4
  import { resolveScreenGestureConfig } from "../shared/policy";
5
- import type { GestureContextType, ScreenGestureConfig } from "../types";
5
+ import type { ScreenGestureConfig, ScreenGestureSource } from "../types";
6
6
 
7
7
  export function useScreenGestureConfig(
8
- gestureContext: GestureContextType | null,
8
+ ancestorGestures: readonly ScreenGestureSource[],
9
9
  ): ScreenGestureConfig {
10
10
  const options = useDescriptorsStore((store) => store.options);
11
11
  const isFirstKey = useDescriptorsStore(
@@ -23,9 +23,9 @@ export function useScreenGestureConfig(
23
23
  resolveScreenGestureConfig({
24
24
  options,
25
25
  isFirstKey,
26
- gestureContext,
26
+ ancestorGestures,
27
27
  isRemovePrevented,
28
28
  }),
29
- [isFirstKey, options, gestureContext, isRemovePrevented],
29
+ [isFirstKey, options, ancestorGestures, isRemovePrevented],
30
30
  );
31
31
  }
@@ -2,8 +2,7 @@ import {
2
2
  type ChainTarget,
3
3
  resolveChainTarget,
4
4
  } from "../../../../utils/resolve-chain-target";
5
- import { useGestureStore } from "../gestures.provider";
6
- import { walkGestureAncestors } from "../shared/ancestors";
5
+ import { useOptionalScreenGestureStore } from "../gestures.provider";
7
6
 
8
7
  export type ScreenGestureTarget = ChainTarget;
9
8
 
@@ -21,13 +20,13 @@ export type ScreenGestureTarget = ChainTarget;
21
20
  * ```
22
21
  */
23
22
  export const useScreenGesture = (target?: ScreenGestureTarget) => {
24
- const ctx = useGestureStore();
23
+ const ctx = useOptionalScreenGestureStore();
25
24
 
26
25
  return (
27
26
  resolveChainTarget({
28
27
  target,
29
28
  self: ctx,
30
- ancestors: walkGestureAncestors(ctx?.gestureContext),
29
+ ancestors: ctx?.ancestorGestures ?? [],
31
30
  })?.panGesture ?? null
32
31
  );
33
32
  };
@@ -1,6 +1,7 @@
1
1
  export {
2
2
  ScreenGestureProvider,
3
- useGestureStore,
3
+ useOptionalScreenGestureStore,
4
+ useScreenGestureStore,
4
5
  } from "./gestures.provider";
5
6
  export type {
6
7
  DirectionClaim,
@@ -10,15 +10,14 @@ import {
10
10
  type BaseDescriptor,
11
11
  useDescriptorsStore,
12
12
  } from "../../../screen/descriptors";
13
- import { useBlankStackStore } from "../../../stack/blank-stack.provider";
14
- import { useGestureStore } from "../gestures.provider";
15
- import { walkGestureAncestors } from "../shared/ancestors";
13
+ import { useOptionalBlankStackStore } from "../../../stack/blank-stack.provider";
14
+ import { useScreenGestureStore } from "../gestures.provider";
16
15
  import { resolveScreenGestureConfig } from "../shared/policy";
17
- import type { GestureContextType } from "../types";
16
+ import type { ScreenGestureSource } from "../types";
18
17
  import { resolveShadowingClaimDirections } from "./shadowing-claims";
19
18
 
20
19
  type ShadowedAncestor = {
21
- ancestor: GestureContextType;
20
+ ancestor: ScreenGestureSource;
22
21
  directions: Direction[];
23
22
  };
24
23
 
@@ -40,15 +39,15 @@ const findShadowedDirections = (
40
39
  };
41
40
 
42
41
  const findShadowedAncestors = (
43
- parentContext: GestureContextType | null,
42
+ ancestorGestures: readonly ScreenGestureSource[],
44
43
  claimedDirections: ClaimedDirections,
45
44
  ) => {
46
- if (!parentContext) {
45
+ if (ancestorGestures.length === 0) {
47
46
  return NO_SHADOWED_ANCESTORS;
48
47
  }
49
48
 
50
49
  const ancestors: ShadowedAncestor[] = [];
51
- for (const ancestor of walkGestureAncestors(parentContext)) {
50
+ for (const ancestor of ancestorGestures) {
52
51
  const directions = findShadowedDirections(
53
52
  claimedDirections,
54
53
  ancestor.claimedDirections,
@@ -107,7 +106,7 @@ const getDescriptorIsFirstKey = (descriptor: BaseDescriptor): boolean => {
107
106
 
108
107
  const getDescriptorClaimedDirections = (
109
108
  descriptor: BaseDescriptor | undefined,
110
- gestureContext: GestureContextType | null,
109
+ ancestorGestures: readonly ScreenGestureSource[],
111
110
  ): ClaimedDirections => {
112
111
  if (!descriptor) {
113
112
  return NO_CLAIMS;
@@ -116,32 +115,20 @@ const getDescriptorClaimedDirections = (
116
115
  return resolveScreenGestureConfig({
117
116
  options: descriptor.options,
118
117
  isFirstKey: getDescriptorIsFirstKey(descriptor),
119
- gestureContext,
118
+ ancestorGestures,
120
119
  }).participation.claimedDirections;
121
120
  };
122
121
 
123
- const requireGestureContext = (
124
- gestureContext: GestureContextType | null,
125
- ): GestureContextType => {
126
- if (!gestureContext) {
127
- throw new Error(
128
- "GestureOwnershipBridge must be rendered within a ScreenGestureProvider",
129
- );
130
- }
131
-
132
- return gestureContext;
133
- };
134
-
135
122
  function ActiveGestureOwnershipBridge() {
136
- const gestureContext = requireGestureContext(useGestureStore());
123
+ const gestureContext = useScreenGestureStore();
137
124
  const previous = useDescriptorsStore((store) => store.previous);
138
- const isCurrentScreenClosing = useBlankStackStore(
125
+ const isCurrentScreenClosing = useOptionalBlankStackStore(
139
126
  (store) =>
140
127
  store?.scenesByKey[gestureContext.routeKey]?.activity === "closing",
141
128
  );
142
129
  const {
143
130
  claimedDirections,
144
- gestureContext: parentContext,
131
+ ancestorGestures,
145
132
  routeKey: currentScreenKey,
146
133
  } = gestureContext;
147
134
  // A retained closing screen cannot receive touches, so its ownership must
@@ -153,14 +140,14 @@ function ActiveGestureOwnershipBridge() {
153
140
  currentClaimedDirections: claimedDirections,
154
141
  previousClaimedDirections: getDescriptorClaimedDirections(
155
142
  previous,
156
- parentContext,
143
+ ancestorGestures,
157
144
  ),
158
145
  }),
159
- [isCurrentScreenClosing, claimedDirections, previous, parentContext],
146
+ [isCurrentScreenClosing, claimedDirections, previous, ancestorGestures],
160
147
  );
161
148
  const shadowedAncestors = useMemo(
162
- () => findShadowedAncestors(parentContext, effectiveClaimedDirections),
163
- [parentContext, effectiveClaimedDirections],
149
+ () => findShadowedAncestors(ancestorGestures, effectiveClaimedDirections),
150
+ [ancestorGestures, effectiveClaimedDirections],
164
151
  );
165
152
 
166
153
  useLayoutEffect(() => {
@@ -16,7 +16,6 @@ import type { DirectionClaim } from "../types";
16
16
  */
17
17
  interface AncestorClaimsContext {
18
18
  claimedDirections: ClaimedDirections;
19
- gestureContext: AncestorClaimsContext | null;
20
19
  }
21
20
 
22
21
  /**
@@ -31,12 +30,12 @@ interface AncestorClaimsContext {
31
30
  * used in worklets since it's a plain object.
32
31
  *
33
32
  * @param selfClaims - The directions claimed by the current screen
34
- * @param gestureContext - The gesture context chain (can be null if no ancestors)
33
+ * @param ancestors - Nearest-first ancestor gesture values from screen topology.
35
34
  * @returns Ownership status for all four directions
36
35
  */
37
36
  export function resolveOwnership(
38
37
  selfClaims: ClaimedDirections,
39
- gestureContext: AncestorClaimsContext | null,
38
+ ancestors: readonly AncestorClaimsContext[],
40
39
  ): DirectionOwnership {
41
40
  const result: DirectionOwnership = { ...NO_OWNERSHIP };
42
41
 
@@ -44,7 +43,7 @@ export function resolveOwnership(
44
43
  result[direction] = resolveDirectionOwnership(
45
44
  direction,
46
45
  selfClaims,
47
- gestureContext,
46
+ ancestors,
48
47
  );
49
48
  }
50
49
 
@@ -57,7 +56,7 @@ export function resolveOwnership(
57
56
  function resolveDirectionOwnership(
58
57
  direction: Direction,
59
58
  selfClaims: ClaimedDirections,
60
- gestureContext: AncestorClaimsContext | null,
59
+ ancestors: readonly AncestorClaimsContext[],
61
60
  ): OwnershipStatus {
62
61
  // Check self first
63
62
  if (selfClaims[direction]) {
@@ -65,12 +64,10 @@ function resolveDirectionOwnership(
65
64
  }
66
65
 
67
66
  // Walk ancestors looking for a claim
68
- let ancestor = gestureContext;
69
- while (ancestor) {
67
+ for (const ancestor of ancestors) {
70
68
  if (ancestor.claimedDirections?.[direction]) {
71
69
  return "ancestor";
72
70
  }
73
- ancestor = ancestor.gestureContext;
74
71
  }
75
72
 
76
73
  // No one claims this direction
@@ -9,6 +9,7 @@ import { GestureActivationState } from "../../../../../types/gesture.types";
9
9
  import type { Direction } from "../../../../../types/ownership.types";
10
10
  import { useDescriptorsStore } from "../../../descriptors";
11
11
  import type { ScreenOptionsContextValue } from "../../../options";
12
+ import { useCurrentScreenRelationships } from "../../../use-current-screen-relationships";
12
13
  import { resolvePanRuntime } from "../../shared/runtime";
13
14
  import type {
14
15
  DirectionClaimMap,
@@ -39,9 +40,7 @@ export const usePanActivation = ({
39
40
  const currentScreenKey = useDescriptorsStore(
40
41
  (store) => store.derivations.currentScreenKey,
41
42
  );
42
- const parentScreenKey = useDescriptorsStore(
43
- (store) => store.derivations.parentScreenKey,
44
- );
43
+ const { parentScreenKey } = useCurrentScreenRelationships();
45
44
 
46
45
  const ancestorDismissing = useMemo(() => {
47
46
  if (!parentScreenKey) return null;
@@ -109,6 +109,7 @@ export const finalizePanRelease = (
109
109
  : {
110
110
  target: animations.transitionProgress.get(),
111
111
  shouldDismiss: false,
112
+ isCancelled: true,
112
113
  initialVelocity: 0,
113
114
  transitionSpec: undefined,
114
115
  resetSpec: policy.transitionSpec?.open,
@@ -1,4 +1,5 @@
1
1
  import { clamp } from "react-native-reanimated";
2
+ import { EPSILON } from "../../../../../constants";
2
3
  import {
3
4
  getPanSnapAxisConfigForDirection,
4
5
  isResolvedPanGestureDirection,
@@ -111,6 +112,7 @@ const buildInactivePanSnapRelease = (
111
112
  return {
112
113
  target: stores.animations.transitionProgress.get(),
113
114
  shouldDismiss: false,
115
+ isCancelled: true,
114
116
  initialVelocity: 0,
115
117
  transitionSpec: policy.transitionSpec,
116
118
  resetSpec: policy.transitionSpec?.open,
@@ -146,6 +148,7 @@ export const resolvePanRelease = (
146
148
  return {
147
149
  target: shouldDismiss ? 0 : 1,
148
150
  shouldDismiss,
151
+ isCancelled: !shouldDismiss,
149
152
  initialVelocity: getPanReleaseProgressVelocity({
150
153
  animations,
151
154
  shouldDismiss,
@@ -205,9 +208,16 @@ export const resolveSnapPanRelease = (
205
208
  const shouldDismiss = participation.canDismiss && result.shouldDismiss;
206
209
  const target = shouldDismiss ? 0 : result.targetProgress;
207
210
 
211
+ // Compare against the gesture's starting snap so only true snap-backs lose velocity.
212
+ const initialTarget = policy.gestureSnapLocked
213
+ ? (runtime.stores.gestures.internal.lockedSnapPoint.get() ??
214
+ runtime.stores.system.targetProgress.get())
215
+ : runtime.stores.system.targetProgress.get();
216
+
208
217
  return {
209
218
  target,
210
219
  shouldDismiss,
220
+ isCancelled: !shouldDismiss && Math.abs(target - initialTarget) <= EPSILON,
211
221
  initialVelocity: getProgressVelocityTowardTarget({
212
222
  handoffVelocity: getPanReleaseHandoffVelocity(
213
223
  axisVelocity,
@@ -238,7 +248,7 @@ export const buildPanReleasePlan = (
238
248
  "worklet";
239
249
  const { policy } = runtime;
240
250
  const releaseVelocityScale = Math.max(0, policy.gestureReleaseVelocityScale);
241
- const resetVelocityScale = releaseVelocityScale;
251
+ const resetVelocityScale = release.isCancelled ? 0 : releaseVelocityScale;
242
252
  const resetVelocityX =
243
253
  resetVelocityScale === 0 ? 0 : rawEvent.velocityX * resetVelocityScale;
244
254
  const resetVelocityY =
@@ -264,7 +274,7 @@ export const buildPanReleasePlan = (
264
274
  return {
265
275
  target: release.target,
266
276
  shouldDismiss: release.shouldDismiss,
267
- progressVelocity: release.initialVelocity,
277
+ progressVelocity: release.isCancelled ? 0 : release.initialVelocity,
268
278
  resetVelocityX,
269
279
  resetVelocityY,
270
280
  resetVelocityNormX: resetVelocityX / Math.max(1, dimensions.width),
@@ -97,6 +97,7 @@ export const usePanBehavior = (
97
97
  ? {
98
98
  target: latestRuntime.stores.animations.transitionProgress.get(),
99
99
  shouldDismiss: false,
100
+ isCancelled: true,
100
101
  initialVelocity: 0,
101
102
  transitionSpec: undefined,
102
103
  resetSpec: latestRuntime.policy.transitionSpec?.open,
@@ -14,21 +14,20 @@ const DEFAULT_SCROLL_METADATA_OWNER_CONTEXT: ScrollMetadataOwnerContextValue = {
14
14
  horizontal: false,
15
15
  };
16
16
 
17
- const {
17
+ export const {
18
18
  ScrollMetadataOwnerProvider,
19
- useScrollMetadataOwnerStore: useMaybeScrollMetadataOwnerStore,
20
- } = createProvider("ScrollMetadataOwner", { guarded: false })<
19
+ useOptionalScrollMetadataOwnerStore,
20
+ } = createProvider("ScrollMetadataOwner")<
21
21
  ScrollMetadataOwnerProviderProps,
22
22
  ScrollMetadataOwnerContextValue
23
23
  >(({ children, value }) => ({ children, value }));
24
24
 
25
- export const useScrollMetadataOwnerStore = () =>
26
- useMaybeScrollMetadataOwnerStore() ?? DEFAULT_SCROLL_METADATA_OWNER_CONTEXT;
27
-
28
25
  export const useScrollMetadataOwnerProviderValue = (
29
26
  axis: ScrollGestureAxis,
30
27
  ) => {
31
- const parent = useScrollMetadataOwnerStore();
28
+ const parent =
29
+ useOptionalScrollMetadataOwnerStore() ??
30
+ DEFAULT_SCROLL_METADATA_OWNER_CONTEXT;
32
31
 
33
32
  return useMemo(() => {
34
33
  if (parent[axis]) return parent;
@@ -39,5 +38,3 @@ export const useScrollMetadataOwnerProviderValue = (
39
38
  };
40
39
  }, [axis, parent]);
41
40
  };
42
-
43
- export { ScrollMetadataOwnerProvider };
@@ -10,7 +10,7 @@ import { useSharedValueState } from "../../../../hooks/reanimated/use-shared-val
10
10
  import useStableCallback from "../../../../hooks/use-stable-callback";
11
11
  import { AnimationStore } from "../../../../stores/animation.store";
12
12
  import { ScrollStore } from "../../../../stores/scroll.store";
13
- import { useGestureStore } from "../gestures.provider";
13
+ import { useOptionalScreenGestureStore } from "../gestures.provider";
14
14
  import type {
15
15
  ScrollGestureAxis,
16
16
  ScrollGestureAxisState,
@@ -18,8 +18,8 @@ import type {
18
18
  ScrollMetadataState,
19
19
  } from "../types";
20
20
  import {
21
+ useOptionalScrollMetadataOwnerStore,
21
22
  useScrollMetadataOwnerProviderValue,
22
- useScrollMetadataOwnerStore,
23
23
  } from "./scroll-metadata-owner";
24
24
  import {
25
25
  clearScrollMetadataAxisState,
@@ -88,21 +88,25 @@ const clearScrollMetadataAxis = (
88
88
  export const useScrollGestureCoordination = (
89
89
  props: ScrollGestureCoordinationProps,
90
90
  ) => {
91
- const context = useGestureStore();
91
+ const context = useOptionalScreenGestureStore();
92
92
  const scrollDirection = props.direction ?? "vertical";
93
+ const gesturePath = useMemo(
94
+ () => (context ? [context, ...context.ancestorGestures] : []),
95
+ [context],
96
+ );
93
97
 
94
- const metadataOwnerContext = useScrollMetadataOwnerStore();
98
+ const metadataOwnerContext = useOptionalScrollMetadataOwnerStore();
95
99
  const metadataOwnerProviderValue =
96
100
  useScrollMetadataOwnerProviderValue(scrollDirection);
97
- const isFirstMetadataWriterInTree = !metadataOwnerContext[scrollDirection];
101
+ const isFirstMetadataWriterInTree = !metadataOwnerContext?.[scrollDirection];
98
102
  const [metadataWriterId] = useState(() =>
99
103
  ScrollStore.createMetadataWriterId(),
100
104
  );
101
105
  const [writesMetadata, setWritesMetadata] = useState(false);
102
106
 
103
107
  const { scrollStates, panGestures, pinchGestures, ownerRouteKeys } = useMemo(
104
- () => walkUpScrollGestureCoordination(context, scrollDirection),
105
- [context, scrollDirection],
108
+ () => walkUpScrollGestureCoordination(gesturePath, scrollDirection),
109
+ [gesturePath, scrollDirection],
106
110
  );
107
111
 
108
112
  const routeKey = context?.routeKey;
@@ -1,19 +1,18 @@
1
1
  import type { SharedValue } from "react-native-reanimated";
2
2
  import type { Direction } from "../../../../types/ownership.types";
3
- import { walkGestureAncestors } from "../shared/ancestors";
4
3
  import type {
5
- GestureContextType,
6
4
  PanGesture,
7
5
  PinchGesture,
6
+ ScreenGestureSource,
8
7
  ScrollGestureAxis,
9
8
  ScrollGestureState,
10
9
  } from "../types";
11
10
 
12
11
  /** Walks up the gesture tree until it finds the owner for a specific direction. */
13
12
  function findGestureOwnerForDirection(
14
- ancestors: GestureContextType[],
13
+ ancestors: readonly ScreenGestureSource[],
15
14
  direction: Direction,
16
- ): GestureContextType | null {
15
+ ): ScreenGestureSource | null {
17
16
  for (const ancestor of ancestors) {
18
17
  if (ancestor.claimedDirections?.[direction]) return ancestor;
19
18
  }
@@ -28,8 +27,10 @@ const getDirectionsForAxis = (
28
27
  ? ["vertical", "vertical-inverted"]
29
28
  : ["horizontal", "horizontal-inverted"];
30
29
 
31
- const collectAncestorPinchGestures = (ancestors: GestureContextType[]) => {
32
- const pinchGestures: GestureContextType["pinchGesture"][] = [];
30
+ const collectAncestorPinchGestures = (
31
+ ancestors: readonly ScreenGestureSource[],
32
+ ) => {
33
+ const pinchGestures: ScreenGestureSource["pinchGesture"][] = [];
33
34
 
34
35
  for (const ancestor of ancestors) {
35
36
  if (!pinchGestures.includes(ancestor.pinchGesture)) {
@@ -41,12 +42,12 @@ const collectAncestorPinchGestures = (ancestors: GestureContextType[]) => {
41
42
  };
42
43
 
43
44
  const collectAxisOwners = (
44
- ancestors: GestureContextType[],
45
+ ancestors: readonly ScreenGestureSource[],
45
46
  directions: readonly [Direction, Direction],
46
47
  ) => {
47
- const seenOwners: GestureContextType[] = [];
48
- const panGestures: GestureContextType["panGesture"][] = [];
49
- const scrollStates: GestureContextType["scrollState"][] = [];
48
+ const seenOwners: ScreenGestureSource[] = [];
49
+ const panGestures: ScreenGestureSource["panGesture"][] = [];
50
+ const scrollStates: ScreenGestureSource["scrollState"][] = [];
50
51
  const ownerRouteKeys: string[] = [];
51
52
 
52
53
  for (const direction of directions) {
@@ -73,10 +74,9 @@ interface WalkUpScrollGestureCoordinationResult {
73
74
  }
74
75
 
75
76
  export function walkUpScrollGestureCoordination(
76
- context: GestureContextType | null,
77
+ ancestors: readonly ScreenGestureSource[],
77
78
  axis: ScrollGestureAxis,
78
79
  ): WalkUpScrollGestureCoordinationResult {
79
- const ancestors = walkGestureAncestors(context);
80
80
  const axisOwners = collectAxisOwners(ancestors, getDirectionsForAxis(axis));
81
81
 
82
82
  return {