react-native-screen-transitions 4.0.0-alpha.2 → 4.0.0-alpha.3

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 (565) hide show
  1. package/lib/commonjs/adapters/with-screen-transitions/context.js +4 -0
  2. package/lib/commonjs/adapters/with-screen-transitions/context.js.map +1 -1
  3. package/lib/commonjs/adapters/with-screen-transitions/stack-layout.js +14 -8
  4. package/lib/commonjs/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  5. package/lib/commonjs/animation/snap-to.js +1 -0
  6. package/lib/commonjs/animation/snap-to.js.map +1 -1
  7. package/lib/commonjs/components/activity/variants/activity-screen.js +26 -10
  8. package/lib/commonjs/components/activity/variants/activity-screen.js.map +1 -1
  9. package/lib/commonjs/components/boundary/components/boundary-target.js +1 -1
  10. package/lib/commonjs/components/boundary/components/boundary-target.js.map +1 -1
  11. package/lib/commonjs/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +18 -7
  12. package/lib/commonjs/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -1
  13. package/lib/commonjs/components/boundary/hooks/lifecycles/use-refresh-boundary.js +5 -12
  14. package/lib/commonjs/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
  15. package/lib/commonjs/components/boundary/hooks/use-measurer.js +6 -13
  16. package/lib/commonjs/components/boundary/hooks/use-measurer.js.map +1 -1
  17. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js +67 -0
  18. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js.map +1 -0
  19. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +44 -37
  20. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  21. package/lib/commonjs/components/boundary/portal/components/boundary-portal/components/host.js +2 -2
  22. package/lib/commonjs/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
  23. package/lib/commonjs/components/boundary/portal/components/boundary-portal/helpers/active-pair.js +30 -0
  24. package/lib/commonjs/components/boundary/portal/components/boundary-portal/helpers/active-pair.js.map +1 -0
  25. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js +75 -0
  26. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js.map +1 -0
  27. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +17 -32
  28. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  29. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js +10 -19
  30. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js.map +1 -1
  31. package/lib/commonjs/components/boundary/portal/utils/naming.js +8 -1
  32. package/lib/commonjs/components/boundary/portal/utils/naming.js.map +1 -1
  33. package/lib/commonjs/components/boundary/providers/boundary-root.provider.js +4 -5
  34. package/lib/commonjs/components/boundary/providers/boundary-root.provider.js.map +1 -1
  35. package/lib/commonjs/components/boundary/utils/measured-bounds.js +19 -31
  36. package/lib/commonjs/components/boundary/utils/measured-bounds.js.map +1 -1
  37. package/lib/commonjs/components/boundary/utils/refresh-signals.js +14 -20
  38. package/lib/commonjs/components/boundary/utils/refresh-signals.js.map +1 -1
  39. package/lib/commonjs/components/create-transition-aware-component.js +9 -30
  40. package/lib/commonjs/components/create-transition-aware-component.js.map +1 -1
  41. package/lib/commonjs/components/screen-container/hooks/use-backdrop-pointer-events.js +5 -9
  42. package/lib/commonjs/components/screen-container/hooks/use-backdrop-pointer-events.js.map +1 -1
  43. package/lib/commonjs/components/screen-container/hooks/use-content-layout.js +3 -8
  44. package/lib/commonjs/components/screen-container/hooks/use-content-layout.js.map +1 -1
  45. package/lib/commonjs/components/screen-container/layers/backdrop.js +7 -10
  46. package/lib/commonjs/components/screen-container/layers/backdrop.js.map +1 -1
  47. package/lib/commonjs/components/screen-container/layers/content.js +10 -16
  48. package/lib/commonjs/components/screen-container/layers/content.js.map +1 -1
  49. package/lib/commonjs/components/screen-container/layers/surface-container.js +1 -5
  50. package/lib/commonjs/components/screen-container/layers/surface-container.js.map +1 -1
  51. package/lib/commonjs/components/screen-lifecycle/hooks/use-close-transition-intent.js +10 -12
  52. package/lib/commonjs/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  53. package/lib/commonjs/components/screen-lifecycle/hooks/use-open-transition-intent.js +2 -3
  54. package/lib/commonjs/components/screen-lifecycle/hooks/use-open-transition-intent.js.map +1 -1
  55. package/lib/commonjs/components/screen-lifecycle/hooks/use-transition-start-controller.js +5 -1
  56. package/lib/commonjs/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
  57. package/lib/commonjs/components/screen-lifecycle/index.js +2 -4
  58. package/lib/commonjs/components/screen-lifecycle/index.js.map +1 -1
  59. package/lib/commonjs/components/stack-view.js +69 -35
  60. package/lib/commonjs/components/stack-view.js.map +1 -1
  61. package/lib/commonjs/configs/presets.js +10 -10
  62. package/lib/commonjs/configs/presets.js.map +1 -1
  63. package/lib/commonjs/constants.js +1 -0
  64. package/lib/commonjs/constants.js.map +1 -1
  65. package/lib/commonjs/hooks/navigation/use-navigation-helpers.js +9 -8
  66. package/lib/commonjs/hooks/navigation/use-navigation-helpers.js.map +1 -1
  67. package/lib/commonjs/hooks/navigation/use-screen-state.js +1 -3
  68. package/lib/commonjs/hooks/navigation/use-screen-state.js.map +1 -1
  69. package/lib/commonjs/providers/screen/animation/animation.provider.js +7 -7
  70. package/lib/commonjs/providers/screen/animation/animation.provider.js.map +1 -1
  71. package/lib/commonjs/providers/screen/animation/helpers/accessors/use-build-bounds-accessor.js +1 -3
  72. package/lib/commonjs/providers/screen/animation/helpers/accessors/use-build-bounds-accessor.js.map +1 -1
  73. package/lib/commonjs/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +1 -1
  74. package/lib/commonjs/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
  75. package/lib/commonjs/providers/screen/animation/helpers/hydrate-transition-state/index.js +4 -10
  76. package/lib/commonjs/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  77. package/lib/commonjs/providers/screen/animation/helpers/pipeline.js +5 -7
  78. package/lib/commonjs/providers/screen/animation/helpers/pipeline.js.map +1 -1
  79. package/lib/commonjs/providers/screen/animation/index.js +2 -2
  80. package/lib/commonjs/providers/screen/animation/use-screen-animation.js +1 -1
  81. package/lib/commonjs/providers/screen/animation/use-screen-animation.js.map +1 -1
  82. package/lib/commonjs/providers/screen/descriptors/descriptors.provider.js +34 -42
  83. package/lib/commonjs/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  84. package/lib/commonjs/providers/screen/descriptors/index.js +0 -12
  85. package/lib/commonjs/providers/screen/descriptors/index.js.map +1 -1
  86. package/lib/commonjs/providers/screen/gestures/gestures.provider.js +7 -7
  87. package/lib/commonjs/providers/screen/gestures/gestures.provider.js.map +1 -1
  88. package/lib/commonjs/providers/screen/gestures/hooks/use-screen-gesture-config.js +3 -9
  89. package/lib/commonjs/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  90. package/lib/commonjs/providers/screen/gestures/hooks/use-screen-gesture.js +1 -1
  91. package/lib/commonjs/providers/screen/gestures/hooks/use-screen-gesture.js.map +1 -1
  92. package/lib/commonjs/providers/screen/gestures/hooks/use-stable-runtime-config.js +1 -3
  93. package/lib/commonjs/providers/screen/gestures/hooks/use-stable-runtime-config.js.map +1 -1
  94. package/lib/commonjs/providers/screen/gestures/index.js +2 -2
  95. package/lib/commonjs/providers/screen/gestures/ownership/shadowing-claims.js +2 -2
  96. package/lib/commonjs/providers/screen/gestures/ownership/shadowing-claims.js.map +1 -1
  97. package/lib/commonjs/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js +8 -11
  98. package/lib/commonjs/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js.map +1 -1
  99. package/lib/commonjs/providers/screen/gestures/pan/activation/use-pan-activation.js +2 -4
  100. package/lib/commonjs/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  101. package/lib/commonjs/providers/screen/gestures/pan/behavior/pan-lifecycle.js +5 -8
  102. package/lib/commonjs/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  103. package/lib/commonjs/providers/screen/gestures/pan/behavior/pan-reset.js +10 -0
  104. package/lib/commonjs/providers/screen/gestures/pan/behavior/pan-reset.js.map +1 -1
  105. package/lib/commonjs/providers/screen/gestures/pan/use-build-pan-gesture.js +1 -1
  106. package/lib/commonjs/providers/screen/gestures/pan/use-build-pan-gesture.js.map +1 -1
  107. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +8 -6
  108. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  109. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-reset.js +7 -0
  110. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-reset.js.map +1 -1
  111. package/lib/commonjs/providers/screen/gestures/pinch/use-build-pinch-gesture.js +1 -1
  112. package/lib/commonjs/providers/screen/gestures/pinch/use-build-pinch-gesture.js.map +1 -1
  113. package/lib/commonjs/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js +5 -5
  114. package/lib/commonjs/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js.map +1 -1
  115. package/lib/commonjs/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +2 -2
  116. package/lib/commonjs/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  117. package/lib/commonjs/providers/screen/options/index.js +2 -2
  118. package/lib/commonjs/providers/screen/options/options.provider.js +4 -8
  119. package/lib/commonjs/providers/screen/options/options.provider.js.map +1 -1
  120. package/lib/commonjs/providers/screen/screen-composer.js +2 -0
  121. package/lib/commonjs/providers/screen/screen-composer.js.map +1 -1
  122. package/lib/commonjs/providers/screen/styles/constants.js +10 -4
  123. package/lib/commonjs/providers/screen/styles/constants.js.map +1 -1
  124. package/lib/commonjs/providers/screen/styles/helpers/resolve-interpolator-style-handoff.js +93 -0
  125. package/lib/commonjs/providers/screen/styles/helpers/resolve-interpolator-style-handoff.js.map +1 -0
  126. package/lib/commonjs/providers/screen/styles/helpers/resolve-slot-styles/index.js +48 -5
  127. package/lib/commonjs/providers/screen/styles/helpers/resolve-slot-styles/index.js.map +1 -1
  128. package/lib/commonjs/providers/screen/styles/helpers/select-interpolator-frame.js +32 -0
  129. package/lib/commonjs/providers/screen/styles/helpers/select-interpolator-frame.js.map +1 -0
  130. package/lib/commonjs/providers/screen/styles/helpers/visibility-gate.js +14 -1
  131. package/lib/commonjs/providers/screen/styles/helpers/visibility-gate.js.map +1 -1
  132. package/lib/commonjs/providers/screen/styles/hooks/use-interpolated-style-maps.js +64 -40
  133. package/lib/commonjs/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  134. package/lib/commonjs/providers/screen/styles/hooks/use-maybe-block-visibility.js +1 -3
  135. package/lib/commonjs/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  136. package/lib/commonjs/providers/screen/styles/index.js +0 -6
  137. package/lib/commonjs/providers/screen/styles/index.js.map +1 -1
  138. package/lib/commonjs/providers/screen/styles/slot.provider.js +23 -19
  139. package/lib/commonjs/providers/screen/styles/slot.provider.js.map +1 -1
  140. package/lib/commonjs/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js +3 -11
  141. package/lib/commonjs/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js.map +1 -1
  142. package/lib/commonjs/providers/stack/blank-stack.provider.js +53 -49
  143. package/lib/commonjs/providers/stack/blank-stack.provider.js.map +1 -1
  144. package/lib/commonjs/providers/stack/core.provider.js +24 -45
  145. package/lib/commonjs/providers/stack/core.provider.js.map +1 -1
  146. package/lib/commonjs/providers/stack/direct.provider.js +46 -40
  147. package/lib/commonjs/providers/stack/direct.provider.js.map +1 -1
  148. package/lib/commonjs/stores/animation.store.js +19 -1
  149. package/lib/commonjs/stores/animation.store.js.map +1 -1
  150. package/lib/commonjs/types/stack.types.js.map +1 -1
  151. package/lib/commonjs/utils/animation/animate-to-progress.js +12 -11
  152. package/lib/commonjs/utils/animation/animate-to-progress.js.map +1 -1
  153. package/lib/commonjs/utils/bounds/helpers/create-bounds-accessor-core.js +6 -0
  154. package/lib/commonjs/utils/bounds/helpers/create-bounds-accessor-core.js.map +1 -1
  155. package/lib/commonjs/utils/create-provider.js +61 -75
  156. package/lib/commonjs/utils/create-provider.js.map +1 -1
  157. package/lib/module/adapters/with-screen-transitions/context.js +3 -0
  158. package/lib/module/adapters/with-screen-transitions/context.js.map +1 -1
  159. package/lib/module/adapters/with-screen-transitions/stack-layout.js +14 -8
  160. package/lib/module/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  161. package/lib/module/animation/snap-to.js +1 -0
  162. package/lib/module/animation/snap-to.js.map +1 -1
  163. package/lib/module/components/activity/variants/activity-screen.js +26 -10
  164. package/lib/module/components/activity/variants/activity-screen.js.map +1 -1
  165. package/lib/module/components/boundary/components/boundary-target.js +2 -2
  166. package/lib/module/components/boundary/components/boundary-target.js.map +1 -1
  167. package/lib/module/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +19 -7
  168. package/lib/module/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -1
  169. package/lib/module/components/boundary/hooks/lifecycles/use-refresh-boundary.js +5 -12
  170. package/lib/module/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
  171. package/lib/module/components/boundary/hooks/use-measurer.js +7 -14
  172. package/lib/module/components/boundary/hooks/use-measurer.js.map +1 -1
  173. package/lib/module/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js +60 -0
  174. package/lib/module/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js.map +1 -0
  175. package/lib/module/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +44 -37
  176. package/lib/module/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  177. package/lib/module/components/boundary/portal/components/boundary-portal/components/host.js +2 -2
  178. package/lib/module/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
  179. package/lib/module/components/boundary/portal/components/boundary-portal/helpers/active-pair.js +25 -0
  180. package/lib/module/components/boundary/portal/components/boundary-portal/helpers/active-pair.js.map +1 -0
  181. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js +70 -0
  182. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js.map +1 -0
  183. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +17 -32
  184. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  185. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js +13 -22
  186. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js.map +1 -1
  187. package/lib/module/components/boundary/portal/utils/naming.js +6 -0
  188. package/lib/module/components/boundary/portal/utils/naming.js.map +1 -1
  189. package/lib/module/components/boundary/providers/boundary-root.provider.js +3 -3
  190. package/lib/module/components/boundary/providers/boundary-root.provider.js.map +1 -1
  191. package/lib/module/components/boundary/utils/measured-bounds.js +17 -28
  192. package/lib/module/components/boundary/utils/measured-bounds.js.map +1 -1
  193. package/lib/module/components/boundary/utils/refresh-signals.js +14 -20
  194. package/lib/module/components/boundary/utils/refresh-signals.js.map +1 -1
  195. package/lib/module/components/create-transition-aware-component.js +10 -31
  196. package/lib/module/components/create-transition-aware-component.js.map +1 -1
  197. package/lib/module/components/screen-container/hooks/use-backdrop-pointer-events.js +8 -12
  198. package/lib/module/components/screen-container/hooks/use-backdrop-pointer-events.js.map +1 -1
  199. package/lib/module/components/screen-container/hooks/use-content-layout.js +4 -9
  200. package/lib/module/components/screen-container/hooks/use-content-layout.js.map +1 -1
  201. package/lib/module/components/screen-container/layers/backdrop.js +8 -11
  202. package/lib/module/components/screen-container/layers/backdrop.js.map +1 -1
  203. package/lib/module/components/screen-container/layers/content.js +12 -18
  204. package/lib/module/components/screen-container/layers/content.js.map +1 -1
  205. package/lib/module/components/screen-container/layers/surface-container.js +2 -6
  206. package/lib/module/components/screen-container/layers/surface-container.js.map +1 -1
  207. package/lib/module/components/screen-lifecycle/hooks/use-close-transition-intent.js +13 -15
  208. package/lib/module/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  209. package/lib/module/components/screen-lifecycle/hooks/use-open-transition-intent.js +3 -4
  210. package/lib/module/components/screen-lifecycle/hooks/use-open-transition-intent.js.map +1 -1
  211. package/lib/module/components/screen-lifecycle/hooks/use-transition-start-controller.js +5 -1
  212. package/lib/module/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
  213. package/lib/module/components/screen-lifecycle/index.js +3 -5
  214. package/lib/module/components/screen-lifecycle/index.js.map +1 -1
  215. package/lib/module/components/stack-view.js +71 -37
  216. package/lib/module/components/stack-view.js.map +1 -1
  217. package/lib/module/configs/presets.js +10 -10
  218. package/lib/module/configs/presets.js.map +1 -1
  219. package/lib/module/constants.js +1 -0
  220. package/lib/module/constants.js.map +1 -1
  221. package/lib/module/hooks/navigation/use-navigation-helpers.js +9 -8
  222. package/lib/module/hooks/navigation/use-navigation-helpers.js.map +1 -1
  223. package/lib/module/hooks/navigation/use-screen-state.js +2 -4
  224. package/lib/module/hooks/navigation/use-screen-state.js.map +1 -1
  225. package/lib/module/providers/screen/animation/animation.provider.js +6 -5
  226. package/lib/module/providers/screen/animation/animation.provider.js.map +1 -1
  227. package/lib/module/providers/screen/animation/helpers/accessors/use-build-bounds-accessor.js +2 -4
  228. package/lib/module/providers/screen/animation/helpers/accessors/use-build-bounds-accessor.js.map +1 -1
  229. package/lib/module/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +2 -2
  230. package/lib/module/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
  231. package/lib/module/providers/screen/animation/helpers/hydrate-transition-state/index.js +4 -10
  232. package/lib/module/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  233. package/lib/module/providers/screen/animation/helpers/pipeline.js +6 -8
  234. package/lib/module/providers/screen/animation/helpers/pipeline.js.map +1 -1
  235. package/lib/module/providers/screen/animation/index.js +1 -1
  236. package/lib/module/providers/screen/animation/index.js.map +1 -1
  237. package/lib/module/providers/screen/animation/use-screen-animation.js +2 -2
  238. package/lib/module/providers/screen/animation/use-screen-animation.js.map +1 -1
  239. package/lib/module/providers/screen/descriptors/descriptors.provider.js +34 -40
  240. package/lib/module/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  241. package/lib/module/providers/screen/descriptors/index.js +1 -1
  242. package/lib/module/providers/screen/descriptors/index.js.map +1 -1
  243. package/lib/module/providers/screen/gestures/gestures.provider.js +6 -6
  244. package/lib/module/providers/screen/gestures/gestures.provider.js.map +1 -1
  245. package/lib/module/providers/screen/gestures/hooks/use-screen-gesture-config.js +5 -11
  246. package/lib/module/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  247. package/lib/module/providers/screen/gestures/hooks/use-screen-gesture.js +2 -2
  248. package/lib/module/providers/screen/gestures/hooks/use-screen-gesture.js.map +1 -1
  249. package/lib/module/providers/screen/gestures/hooks/use-stable-runtime-config.js +2 -4
  250. package/lib/module/providers/screen/gestures/hooks/use-stable-runtime-config.js.map +1 -1
  251. package/lib/module/providers/screen/gestures/index.js +1 -1
  252. package/lib/module/providers/screen/gestures/index.js.map +1 -1
  253. package/lib/module/providers/screen/gestures/ownership/shadowing-claims.js +2 -2
  254. package/lib/module/providers/screen/gestures/ownership/shadowing-claims.js.map +1 -1
  255. package/lib/module/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js +10 -13
  256. package/lib/module/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js.map +1 -1
  257. package/lib/module/providers/screen/gestures/pan/activation/use-pan-activation.js +3 -5
  258. package/lib/module/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  259. package/lib/module/providers/screen/gestures/pan/behavior/pan-lifecycle.js +6 -9
  260. package/lib/module/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  261. package/lib/module/providers/screen/gestures/pan/behavior/pan-reset.js +10 -0
  262. package/lib/module/providers/screen/gestures/pan/behavior/pan-reset.js.map +1 -1
  263. package/lib/module/providers/screen/gestures/pan/use-build-pan-gesture.js +2 -2
  264. package/lib/module/providers/screen/gestures/pan/use-build-pan-gesture.js.map +1 -1
  265. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +9 -7
  266. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  267. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-reset.js +7 -0
  268. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-reset.js.map +1 -1
  269. package/lib/module/providers/screen/gestures/pinch/use-build-pinch-gesture.js +2 -2
  270. package/lib/module/providers/screen/gestures/pinch/use-build-pinch-gesture.js.map +1 -1
  271. package/lib/module/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js +3 -3
  272. package/lib/module/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js.map +1 -1
  273. package/lib/module/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +4 -4
  274. package/lib/module/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  275. package/lib/module/providers/screen/options/index.js +1 -1
  276. package/lib/module/providers/screen/options/index.js.map +1 -1
  277. package/lib/module/providers/screen/options/options.provider.js +3 -7
  278. package/lib/module/providers/screen/options/options.provider.js.map +1 -1
  279. package/lib/module/providers/screen/screen-composer.js +2 -0
  280. package/lib/module/providers/screen/screen-composer.js.map +1 -1
  281. package/lib/module/providers/screen/styles/constants.js +8 -3
  282. package/lib/module/providers/screen/styles/constants.js.map +1 -1
  283. package/lib/module/providers/screen/styles/helpers/resolve-interpolator-style-handoff.js +88 -0
  284. package/lib/module/providers/screen/styles/helpers/resolve-interpolator-style-handoff.js.map +1 -0
  285. package/lib/module/providers/screen/styles/helpers/resolve-slot-styles/index.js +49 -6
  286. package/lib/module/providers/screen/styles/helpers/resolve-slot-styles/index.js.map +1 -1
  287. package/lib/module/providers/screen/styles/helpers/select-interpolator-frame.js +27 -0
  288. package/lib/module/providers/screen/styles/helpers/select-interpolator-frame.js.map +1 -0
  289. package/lib/module/providers/screen/styles/helpers/visibility-gate.js +12 -0
  290. package/lib/module/providers/screen/styles/helpers/visibility-gate.js.map +1 -1
  291. package/lib/module/providers/screen/styles/hooks/use-interpolated-style-maps.js +67 -43
  292. package/lib/module/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  293. package/lib/module/providers/screen/styles/hooks/use-maybe-block-visibility.js +2 -4
  294. package/lib/module/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  295. package/lib/module/providers/screen/styles/index.js +1 -1
  296. package/lib/module/providers/screen/styles/index.js.map +1 -1
  297. package/lib/module/providers/screen/styles/slot.provider.js +23 -18
  298. package/lib/module/providers/screen/styles/slot.provider.js.map +1 -1
  299. package/lib/module/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js +3 -11
  300. package/lib/module/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js.map +1 -1
  301. package/lib/module/providers/stack/blank-stack.provider.js +50 -47
  302. package/lib/module/providers/stack/blank-stack.provider.js.map +1 -1
  303. package/lib/module/providers/stack/core.provider.js +22 -43
  304. package/lib/module/providers/stack/core.provider.js.map +1 -1
  305. package/lib/module/providers/stack/direct.provider.js +44 -41
  306. package/lib/module/providers/stack/direct.provider.js.map +1 -1
  307. package/lib/module/stores/animation.store.js +17 -0
  308. package/lib/module/stores/animation.store.js.map +1 -1
  309. package/lib/module/types/stack.types.js.map +1 -1
  310. package/lib/module/utils/animation/animate-to-progress.js +12 -11
  311. package/lib/module/utils/animation/animate-to-progress.js.map +1 -1
  312. package/lib/module/utils/bounds/helpers/create-bounds-accessor-core.js +6 -0
  313. package/lib/module/utils/bounds/helpers/create-bounds-accessor-core.js.map +1 -1
  314. package/lib/module/utils/create-provider.js +62 -76
  315. package/lib/module/utils/create-provider.js.map +1 -1
  316. package/lib/typescript/adapters/with-screen-transitions/context.d.ts +2 -0
  317. package/lib/typescript/adapters/with-screen-transitions/context.d.ts.map +1 -1
  318. package/lib/typescript/adapters/with-screen-transitions/stack-layout.d.ts +1 -1
  319. package/lib/typescript/adapters/with-screen-transitions/stack-layout.d.ts.map +1 -1
  320. package/lib/typescript/animation/snap-to.d.ts.map +1 -1
  321. package/lib/typescript/components/activity/variants/activity-screen.d.ts +3 -2
  322. package/lib/typescript/components/activity/variants/activity-screen.d.ts.map +1 -1
  323. package/lib/typescript/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts.map +1 -1
  324. package/lib/typescript/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts.map +1 -1
  325. package/lib/typescript/components/boundary/hooks/use-measurer.d.ts +1 -1
  326. package/lib/typescript/components/boundary/hooks/use-measurer.d.ts.map +1 -1
  327. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.d.ts +26 -0
  328. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.d.ts.map +1 -0
  329. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts.map +1 -1
  330. package/lib/typescript/components/boundary/portal/components/boundary-portal/components/host.d.ts.map +1 -1
  331. package/lib/typescript/components/boundary/portal/components/boundary-portal/helpers/active-pair.d.ts +9 -0
  332. package/lib/typescript/components/boundary/portal/components/boundary-portal/helpers/active-pair.d.ts.map +1 -0
  333. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.d.ts +17 -0
  334. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.d.ts.map +1 -0
  335. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -1
  336. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.d.ts +0 -1
  337. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.d.ts.map +1 -1
  338. package/lib/typescript/components/boundary/portal/utils/naming.d.ts +1 -0
  339. package/lib/typescript/components/boundary/portal/utils/naming.d.ts.map +1 -1
  340. package/lib/typescript/components/boundary/providers/boundary-root.provider.d.ts +1 -1
  341. package/lib/typescript/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
  342. package/lib/typescript/components/boundary/utils/measured-bounds.d.ts +1 -3
  343. package/lib/typescript/components/boundary/utils/measured-bounds.d.ts.map +1 -1
  344. package/lib/typescript/components/boundary/utils/refresh-signals.d.ts +0 -4
  345. package/lib/typescript/components/boundary/utils/refresh-signals.d.ts.map +1 -1
  346. package/lib/typescript/components/create-transition-aware-component.d.ts +0 -2
  347. package/lib/typescript/components/create-transition-aware-component.d.ts.map +1 -1
  348. package/lib/typescript/components/screen-container/hooks/use-backdrop-pointer-events.d.ts.map +1 -1
  349. package/lib/typescript/components/screen-container/hooks/use-content-layout.d.ts.map +1 -1
  350. package/lib/typescript/components/screen-container/layers/backdrop.d.ts.map +1 -1
  351. package/lib/typescript/components/screen-container/layers/content.d.ts.map +1 -1
  352. package/lib/typescript/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts.map +1 -1
  353. package/lib/typescript/components/screen-lifecycle/hooks/use-open-transition-intent.d.ts.map +1 -1
  354. package/lib/typescript/components/screen-lifecycle/hooks/use-transition-start-controller.d.ts.map +1 -1
  355. package/lib/typescript/components/screen-lifecycle/index.d.ts.map +1 -1
  356. package/lib/typescript/components/stack-view.d.ts +5 -1
  357. package/lib/typescript/components/stack-view.d.ts.map +1 -1
  358. package/lib/typescript/configs/index.d.ts +6 -6
  359. package/lib/typescript/configs/presets.d.ts +6 -6
  360. package/lib/typescript/configs/presets.d.ts.map +1 -1
  361. package/lib/typescript/constants.d.ts.map +1 -1
  362. package/lib/typescript/hooks/navigation/use-navigation-helpers.d.ts.map +1 -1
  363. package/lib/typescript/hooks/navigation/use-screen-state.d.ts.map +1 -1
  364. package/lib/typescript/index.d.ts +10 -18
  365. package/lib/typescript/index.d.ts.map +1 -1
  366. package/lib/typescript/providers/screen/animation/animation.provider.d.ts +4 -1
  367. package/lib/typescript/providers/screen/animation/animation.provider.d.ts.map +1 -1
  368. package/lib/typescript/providers/screen/animation/helpers/accessors/use-build-bounds-accessor.d.ts.map +1 -1
  369. package/lib/typescript/providers/screen/animation/helpers/hydrate-transition-state/index.d.ts.map +1 -1
  370. package/lib/typescript/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
  371. package/lib/typescript/providers/screen/animation/index.d.ts +1 -1
  372. package/lib/typescript/providers/screen/animation/index.d.ts.map +1 -1
  373. package/lib/typescript/providers/screen/descriptors/descriptors.provider.d.ts +10 -11
  374. package/lib/typescript/providers/screen/descriptors/descriptors.provider.d.ts.map +1 -1
  375. package/lib/typescript/providers/screen/descriptors/index.d.ts +1 -1
  376. package/lib/typescript/providers/screen/descriptors/index.d.ts.map +1 -1
  377. package/lib/typescript/providers/screen/gestures/gestures.provider.d.ts +4 -1
  378. package/lib/typescript/providers/screen/gestures/gestures.provider.d.ts.map +1 -1
  379. package/lib/typescript/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts.map +1 -1
  380. package/lib/typescript/providers/screen/gestures/hooks/use-stable-runtime-config.d.ts.map +1 -1
  381. package/lib/typescript/providers/screen/gestures/index.d.ts +1 -1
  382. package/lib/typescript/providers/screen/gestures/index.d.ts.map +1 -1
  383. package/lib/typescript/providers/screen/gestures/ownership/shadowing-claims.d.ts +2 -3
  384. package/lib/typescript/providers/screen/gestures/ownership/shadowing-claims.d.ts.map +1 -1
  385. package/lib/typescript/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.d.ts.map +1 -1
  386. package/lib/typescript/providers/screen/gestures/pan/activation/use-pan-activation.d.ts.map +1 -1
  387. package/lib/typescript/providers/screen/gestures/pan/behavior/pan-lifecycle.d.ts.map +1 -1
  388. package/lib/typescript/providers/screen/gestures/pan/behavior/pan-reset.d.ts +4 -1
  389. package/lib/typescript/providers/screen/gestures/pan/behavior/pan-reset.d.ts.map +1 -1
  390. package/lib/typescript/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts.map +1 -1
  391. package/lib/typescript/providers/screen/gestures/pinch/behavior/pinch-reset.d.ts +3 -1
  392. package/lib/typescript/providers/screen/gestures/pinch/behavior/pinch-reset.d.ts.map +1 -1
  393. package/lib/typescript/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.d.ts +1 -1
  394. package/lib/typescript/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.d.ts.map +1 -1
  395. package/lib/typescript/providers/screen/options/index.d.ts +1 -1
  396. package/lib/typescript/providers/screen/options/index.d.ts.map +1 -1
  397. package/lib/typescript/providers/screen/options/options.provider.d.ts +4 -1
  398. package/lib/typescript/providers/screen/options/options.provider.d.ts.map +1 -1
  399. package/lib/typescript/providers/screen/screen-composer.d.ts +3 -2
  400. package/lib/typescript/providers/screen/screen-composer.d.ts.map +1 -1
  401. package/lib/typescript/providers/screen/styles/constants.d.ts +1 -0
  402. package/lib/typescript/providers/screen/styles/constants.d.ts.map +1 -1
  403. package/lib/typescript/providers/screen/styles/helpers/resolve-interpolator-style-handoff.d.ts +12 -0
  404. package/lib/typescript/providers/screen/styles/helpers/resolve-interpolator-style-handoff.d.ts.map +1 -0
  405. package/lib/typescript/providers/screen/styles/helpers/resolve-slot-styles/index.d.ts +5 -3
  406. package/lib/typescript/providers/screen/styles/helpers/resolve-slot-styles/index.d.ts.map +1 -1
  407. package/lib/typescript/providers/screen/styles/helpers/select-interpolator-frame.d.ts +4 -0
  408. package/lib/typescript/providers/screen/styles/helpers/select-interpolator-frame.d.ts.map +1 -0
  409. package/lib/typescript/providers/screen/styles/helpers/visibility-gate.d.ts +10 -0
  410. package/lib/typescript/providers/screen/styles/helpers/visibility-gate.d.ts.map +1 -1
  411. package/lib/typescript/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts +10 -5
  412. package/lib/typescript/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  413. package/lib/typescript/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts +1 -1
  414. package/lib/typescript/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts.map +1 -1
  415. package/lib/typescript/providers/screen/styles/index.d.ts +1 -1
  416. package/lib/typescript/providers/screen/styles/index.d.ts.map +1 -1
  417. package/lib/typescript/providers/screen/styles/slot.provider.d.ts +4 -1
  418. package/lib/typescript/providers/screen/styles/slot.provider.d.ts.map +1 -1
  419. package/lib/typescript/providers/stack/blank-stack-state/helpers/build-blank-stack-state.d.ts.map +1 -1
  420. package/lib/typescript/providers/stack/blank-stack.provider.d.ts +12 -6
  421. package/lib/typescript/providers/stack/blank-stack.provider.d.ts.map +1 -1
  422. package/lib/typescript/providers/stack/core.provider.d.ts +10 -8
  423. package/lib/typescript/providers/stack/core.provider.d.ts.map +1 -1
  424. package/lib/typescript/providers/stack/direct.provider.d.ts +11 -4
  425. package/lib/typescript/providers/stack/direct.provider.d.ts.map +1 -1
  426. package/lib/typescript/stores/animation.store.d.ts +1 -0
  427. package/lib/typescript/stores/animation.store.d.ts.map +1 -1
  428. package/lib/typescript/types/blank-stack.types.d.ts +1 -4
  429. package/lib/typescript/types/blank-stack.types.d.ts.map +1 -1
  430. package/lib/typescript/types/gesture.types.d.ts +11 -0
  431. package/lib/typescript/types/gesture.types.d.ts.map +1 -1
  432. package/lib/typescript/types/providers/blank-stack-provider.types.d.ts +12 -20
  433. package/lib/typescript/types/providers/blank-stack-provider.types.d.ts.map +1 -1
  434. package/lib/typescript/types/providers/direct-stack.types.d.ts +2 -1
  435. package/lib/typescript/types/providers/direct-stack.types.d.ts.map +1 -1
  436. package/lib/typescript/types/screen.types.d.ts +0 -30
  437. package/lib/typescript/types/screen.types.d.ts.map +1 -1
  438. package/lib/typescript/types/stack.types.d.ts +2 -4
  439. package/lib/typescript/types/stack.types.d.ts.map +1 -1
  440. package/lib/typescript/utils/animation/animate-to-progress.d.ts +3 -2
  441. package/lib/typescript/utils/animation/animate-to-progress.d.ts.map +1 -1
  442. package/lib/typescript/utils/bounds/helpers/create-bounds-accessor-core.d.ts.map +1 -1
  443. package/lib/typescript/utils/create-provider.d.ts +17 -9
  444. package/lib/typescript/utils/create-provider.d.ts.map +1 -1
  445. package/package.json +1 -1
  446. package/src/adapters/with-screen-transitions/context.tsx +5 -0
  447. package/src/adapters/with-screen-transitions/stack-layout.tsx +20 -7
  448. package/src/animation/snap-to.ts +1 -0
  449. package/src/components/activity/variants/activity-screen.tsx +46 -13
  450. package/src/components/boundary/components/boundary-target.tsx +2 -2
  451. package/src/components/boundary/hooks/lifecycles/use-initial-destination-measurement.ts +28 -14
  452. package/src/components/boundary/hooks/lifecycles/use-refresh-boundary.ts +7 -24
  453. package/src/components/boundary/hooks/use-measurer.ts +7 -16
  454. package/src/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.ts +103 -0
  455. package/src/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.ts +86 -61
  456. package/src/components/boundary/portal/components/boundary-portal/components/host.tsx +12 -14
  457. package/src/components/boundary/portal/components/boundary-portal/helpers/active-pair.ts +36 -0
  458. package/src/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.ts +114 -0
  459. package/src/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +9 -46
  460. package/src/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.ts +13 -20
  461. package/src/components/boundary/portal/utils/naming.ts +11 -0
  462. package/src/components/boundary/providers/boundary-root.provider.tsx +8 -11
  463. package/src/components/boundary/utils/measured-bounds.ts +29 -32
  464. package/src/components/boundary/utils/refresh-signals.ts +23 -26
  465. package/src/components/create-transition-aware-component.tsx +11 -36
  466. package/src/components/screen-container/hooks/use-backdrop-pointer-events.ts +10 -8
  467. package/src/components/screen-container/hooks/use-content-layout.ts +10 -10
  468. package/src/components/screen-container/layers/backdrop.tsx +20 -9
  469. package/src/components/screen-container/layers/content.tsx +20 -21
  470. package/src/components/screen-container/layers/surface-container.tsx +4 -4
  471. package/src/components/screen-lifecycle/hooks/use-close-transition-intent.ts +19 -9
  472. package/src/components/screen-lifecycle/hooks/use-open-transition-intent.ts +5 -2
  473. package/src/components/screen-lifecycle/hooks/use-transition-start-controller.ts +6 -0
  474. package/src/components/screen-lifecycle/index.tsx +3 -2
  475. package/src/components/stack-view.tsx +117 -56
  476. package/src/configs/presets.ts +13 -13
  477. package/src/constants.ts +1 -0
  478. package/src/hooks/navigation/use-navigation-helpers.ts +9 -8
  479. package/src/hooks/navigation/use-screen-state.ts +4 -2
  480. package/src/providers/screen/animation/animation.provider.tsx +170 -173
  481. package/src/providers/screen/animation/helpers/accessors/use-build-bounds-accessor.tsx +4 -2
  482. package/src/providers/screen/animation/helpers/accessors/use-build-transition-accessor.ts +2 -2
  483. package/src/providers/screen/animation/helpers/hydrate-transition-state/index.ts +4 -21
  484. package/src/providers/screen/animation/helpers/pipeline.ts +6 -10
  485. package/src/providers/screen/animation/index.tsx +1 -1
  486. package/src/providers/screen/animation/use-screen-animation.tsx +2 -2
  487. package/src/providers/screen/descriptors/descriptors.provider.tsx +83 -72
  488. package/src/providers/screen/descriptors/index.tsx +0 -2
  489. package/src/providers/screen/gestures/gestures.provider.tsx +72 -63
  490. package/src/providers/screen/gestures/hooks/use-screen-gesture-config.ts +7 -8
  491. package/src/providers/screen/gestures/hooks/use-screen-gesture.ts +2 -2
  492. package/src/providers/screen/gestures/hooks/use-stable-runtime-config.ts +4 -2
  493. package/src/providers/screen/gestures/index.tsx +1 -1
  494. package/src/providers/screen/gestures/ownership/shadowing-claims.ts +3 -4
  495. package/src/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.ts +16 -8
  496. package/src/providers/screen/gestures/pan/activation/use-pan-activation.ts +7 -2
  497. package/src/providers/screen/gestures/pan/behavior/pan-lifecycle.ts +8 -16
  498. package/src/providers/screen/gestures/pan/behavior/pan-reset.ts +14 -0
  499. package/src/providers/screen/gestures/pan/use-build-pan-gesture.ts +2 -2
  500. package/src/providers/screen/gestures/pinch/behavior/pinch-lifecycle.ts +12 -11
  501. package/src/providers/screen/gestures/pinch/behavior/pinch-reset.ts +10 -0
  502. package/src/providers/screen/gestures/pinch/use-build-pinch-gesture.ts +2 -2
  503. package/src/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.tsx +4 -4
  504. package/src/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.ts +4 -4
  505. package/src/providers/screen/options/index.ts +1 -1
  506. package/src/providers/screen/options/options.provider.tsx +24 -28
  507. package/src/providers/screen/screen-composer.tsx +9 -2
  508. package/src/providers/screen/styles/constants.ts +8 -6
  509. package/src/providers/screen/styles/helpers/resolve-interpolator-style-handoff.ts +138 -0
  510. package/src/providers/screen/styles/helpers/resolve-slot-styles/index.ts +71 -4
  511. package/src/providers/screen/styles/helpers/select-interpolator-frame.ts +41 -0
  512. package/src/providers/screen/styles/helpers/visibility-gate.ts +25 -0
  513. package/src/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +99 -55
  514. package/src/providers/screen/styles/hooks/use-maybe-block-visibility.tsx +4 -2
  515. package/src/providers/screen/styles/index.tsx +0 -1
  516. package/src/providers/screen/styles/slot.provider.tsx +62 -48
  517. package/src/providers/stack/blank-stack-state/helpers/build-blank-stack-state.ts +4 -17
  518. package/src/providers/stack/blank-stack.provider.tsx +66 -75
  519. package/src/providers/stack/core.provider.tsx +53 -79
  520. package/src/providers/stack/direct.provider.tsx +76 -57
  521. package/src/stores/animation.store.ts +19 -0
  522. package/src/types/blank-stack.types.ts +1 -4
  523. package/src/types/gesture.types.ts +11 -0
  524. package/src/types/providers/blank-stack-provider.types.ts +8 -22
  525. package/src/types/providers/direct-stack.types.ts +2 -1
  526. package/src/types/screen.types.ts +0 -32
  527. package/src/types/stack.types.ts +2 -4
  528. package/src/utils/animation/animate-to-progress.ts +18 -18
  529. package/src/utils/bounds/helpers/create-bounds-accessor-core.ts +7 -0
  530. package/src/utils/create-provider.tsx +105 -136
  531. package/lib/commonjs/components/boundary/portal/components/boundary-portal/helpers/host-name.js +0 -14
  532. package/lib/commonjs/components/boundary/portal/components/boundary-portal/helpers/host-name.js.map +0 -1
  533. package/lib/commonjs/components/boundary/portal/utils/handoff-target.js +0 -33
  534. package/lib/commonjs/components/boundary/portal/utils/handoff-target.js.map +0 -1
  535. package/lib/commonjs/hooks/use-stable-callback-value.js +0 -69
  536. package/lib/commonjs/hooks/use-stable-callback-value.js.map +0 -1
  537. package/lib/commonjs/providers/register-bounds.provider.js +0 -312
  538. package/lib/commonjs/providers/register-bounds.provider.js.map +0 -1
  539. package/lib/commonjs/providers/screen/origin.provider.js +0 -41
  540. package/lib/commonjs/providers/screen/origin.provider.js.map +0 -1
  541. package/lib/module/components/boundary/portal/components/boundary-portal/helpers/host-name.js +0 -9
  542. package/lib/module/components/boundary/portal/components/boundary-portal/helpers/host-name.js.map +0 -1
  543. package/lib/module/components/boundary/portal/utils/handoff-target.js +0 -28
  544. package/lib/module/components/boundary/portal/utils/handoff-target.js.map +0 -1
  545. package/lib/module/hooks/use-stable-callback-value.js +0 -64
  546. package/lib/module/hooks/use-stable-callback-value.js.map +0 -1
  547. package/lib/module/providers/register-bounds.provider.js +0 -308
  548. package/lib/module/providers/register-bounds.provider.js.map +0 -1
  549. package/lib/module/providers/screen/origin.provider.js +0 -33
  550. package/lib/module/providers/screen/origin.provider.js.map +0 -1
  551. package/lib/typescript/components/boundary/portal/components/boundary-portal/helpers/host-name.d.ts +0 -2
  552. package/lib/typescript/components/boundary/portal/components/boundary-portal/helpers/host-name.d.ts.map +0 -1
  553. package/lib/typescript/components/boundary/portal/utils/handoff-target.d.ts +0 -12
  554. package/lib/typescript/components/boundary/portal/utils/handoff-target.d.ts.map +0 -1
  555. package/lib/typescript/hooks/use-stable-callback-value.d.ts +0 -13
  556. package/lib/typescript/hooks/use-stable-callback-value.d.ts.map +0 -1
  557. package/lib/typescript/providers/register-bounds.provider.d.ts +0 -25
  558. package/lib/typescript/providers/register-bounds.provider.d.ts.map +0 -1
  559. package/lib/typescript/providers/screen/origin.provider.d.ts +0 -11
  560. package/lib/typescript/providers/screen/origin.provider.d.ts.map +0 -1
  561. package/src/components/boundary/portal/components/boundary-portal/helpers/host-name.ts +0 -10
  562. package/src/components/boundary/portal/utils/handoff-target.ts +0 -48
  563. package/src/hooks/use-stable-callback-value.ts +0 -72
  564. package/src/providers/register-bounds.provider.tsx +0 -401
  565. package/src/providers/screen/origin.provider.tsx +0 -38
@@ -60,18 +60,6 @@ export const adjustedMeasuredBoundsForOverscrollDeltas = (
60
60
  };
61
61
  };
62
62
 
63
- export const normalizeMeasuredBoundsToOrigin = (
64
- measured: MeasuredDimensions,
65
- origin: MeasuredDimensions,
66
- ): MeasuredDimensions => {
67
- "worklet";
68
- return {
69
- ...measured,
70
- pageX: measured.pageX - origin.pageX,
71
- pageY: measured.pageY - origin.pageY,
72
- };
73
- };
74
-
75
63
  export const isMeasurementInViewport = (
76
64
  measured: MeasuredDimensions,
77
65
  viewportWidth: number,
@@ -96,52 +84,61 @@ export const isMeasurementInViewport = (
96
84
  );
97
85
  };
98
86
 
99
- export const normalizeMeasuredBoundsWithVisibilityGate = ({
87
+ export const correctMeasuredBoundsForVisibilityGate = ({
100
88
  measured,
101
- origin,
102
89
  visibilityBlocked,
103
90
  visibilityBlockOffset,
104
91
  viewportWidth,
105
92
  viewportHeight,
106
93
  }: {
107
94
  measured: MeasuredDimensions;
108
- origin: MeasuredDimensions;
109
95
  visibilityBlocked: boolean;
110
96
  visibilityBlockOffset: number;
111
97
  viewportWidth: number;
112
98
  viewportHeight: number;
113
99
  }): MeasuredDimensions => {
114
100
  "worklet";
115
- const normalized = normalizeMeasuredBoundsToOrigin(measured, origin);
116
101
 
117
102
  if (
118
103
  !visibilityBlocked ||
119
104
  visibilityBlockOffset <= 0 ||
120
- isMeasurementInViewport(normalized, viewportWidth, viewportHeight)
105
+ isMeasurementInViewport(measured, viewportWidth, viewportHeight)
121
106
  ) {
122
- return normalized;
107
+ return measured;
123
108
  }
124
109
 
125
- // Fabric can expose the visibility transform to one native measurement one
126
- // frame before the other. Prefer normal origin-relative coordinates, then
127
- // test either side of that known frame skew while the gate is active.
128
- const measuredAhead = {
129
- ...normalized,
130
- pageY: normalized.pageY - visibilityBlockOffset,
110
+ // A destination can still carry the internal visibility transform for one
111
+ // native frame. Correct only that known offset and preserve all other
112
+ // presentation transforms in the measured coordinates.
113
+ const visibilityOffsetApplied = {
114
+ ...measured,
115
+ pageY: measured.pageY - visibilityBlockOffset,
131
116
  };
132
- if (isMeasurementInViewport(measuredAhead, viewportWidth, viewportHeight)) {
133
- return measuredAhead;
117
+ if (
118
+ isMeasurementInViewport(
119
+ visibilityOffsetApplied,
120
+ viewportWidth,
121
+ viewportHeight,
122
+ )
123
+ ) {
124
+ return visibilityOffsetApplied;
134
125
  }
135
126
 
136
- const originAhead = {
137
- ...normalized,
138
- pageY: normalized.pageY + visibilityBlockOffset,
127
+ const inverseVisibilityOffsetApplied = {
128
+ ...measured,
129
+ pageY: measured.pageY + visibilityBlockOffset,
139
130
  };
140
- if (isMeasurementInViewport(originAhead, viewportWidth, viewportHeight)) {
141
- return originAhead;
131
+ if (
132
+ isMeasurementInViewport(
133
+ inverseVisibilityOffsetApplied,
134
+ viewportWidth,
135
+ viewportHeight,
136
+ )
137
+ ) {
138
+ return inverseVisibilityOffsetApplied;
142
139
  }
143
140
 
144
- return normalized;
141
+ return measured;
145
142
  };
146
143
 
147
144
  export const measureWithOverscrollAwareness = (
@@ -37,10 +37,6 @@ export const getRefreshBoundarySignal = (params: {
37
37
  group?: string;
38
38
  shouldRefresh: boolean;
39
39
  closing: boolean;
40
- entering: boolean;
41
- animating: boolean;
42
- progress: number;
43
- gestureInProgress: boolean;
44
40
  linkState?: LinkPairsState;
45
41
  }): RefreshBoundarySignal | null => {
46
42
  "worklet";
@@ -55,37 +51,34 @@ export const getRefreshBoundarySignal = (params: {
55
51
  group,
56
52
  shouldRefresh,
57
53
  closing,
58
- entering,
59
- animating,
60
- progress,
61
- gestureInProgress,
62
54
  linkState,
63
55
  } = params;
64
56
 
65
57
  if (!enabled) return null;
66
58
 
67
- // This is temporary for a patch fix. However, this architecture should
68
- // change: our signals aren't currently doing their intended job, so right
69
- // now we'll add one more guard until the shape is much more tested and
70
- // bulletproof.
71
- if (gestureInProgress) return null;
72
-
73
- const canRefreshPreCloseDestination =
74
- shouldRefresh && closing && !entering && !animating && progress >= 1;
75
-
76
- const canRefreshSettledDestination = shouldRefresh && !closing && !entering;
77
-
78
- // Guards:
79
- // 1) A user may dismiss via back button, in this case, we should remeasure.
80
- // 2) If a user drags during entering/closing animations we should NOT remeasure.
81
- if (!canRefreshPreCloseDestination && !canRefreshSettledDestination) {
59
+ if (!shouldRefresh) {
82
60
  return null;
83
61
  }
84
62
 
85
- // Non group:
86
- // Since in typical group flows we would need to know the src, we don't need to do that for
87
- // single a->b flows. So we just trigger the destination refresh.
63
+ // A source may move while its destination is active, so refresh whichever
64
+ // side of the pair this boundary currently represents.
88
65
  if (!group) {
66
+ if (sourcePairKey) {
67
+ const sourcePair = linkState?.[sourcePairKey];
68
+ const participates =
69
+ !!sourcePair?.links?.[linkId] || !!sourcePair?.sourceRequests?.[linkId];
70
+
71
+ if (!participates) {
72
+ return null;
73
+ }
74
+
75
+ return buildRefreshSignal(
76
+ "source",
77
+ sourcePairKey,
78
+ [currentScreenKey, closing ? "closing" : "settled"].join("|"),
79
+ );
80
+ }
81
+
89
82
  const refreshDestinationPairKey =
90
83
  destinationPairKey ??
91
84
  (nextScreenKey ? undefined : ancestorDestinationPairKey);
@@ -94,6 +87,10 @@ export const getRefreshBoundarySignal = (params: {
94
87
  return null;
95
88
  }
96
89
 
90
+ if (!linkState?.[refreshDestinationPairKey]?.links?.[linkId]) {
91
+ return null;
92
+ }
93
+
97
94
  return buildRefreshSignal(
98
95
  "destination",
99
96
  refreshDestinationPairKey,
@@ -1,14 +1,8 @@
1
1
  /** biome-ignore-all lint/style/noNonNullAssertion: <This helper is usually being used inside a transitionable stack> */
2
2
  import type React from "react";
3
3
  import { type ComponentType, forwardRef, memo } from "react";
4
- import type { View } from "react-native";
5
4
  import { GestureDetector } from "react-native-gesture-handler";
6
- import Animated, {
7
- useAnimatedRef,
8
- useComposedEventHandler,
9
- } from "react-native-reanimated";
10
- import { scheduleOnUI } from "react-native-worklets";
11
- import { RegisterBoundsProvider } from "../providers/register-bounds.provider";
5
+ import Animated, { useComposedEventHandler } from "react-native-reanimated";
12
6
  import {
13
7
  ScrollMetadataOwnerProvider,
14
8
  useScrollGestureCoordination,
@@ -36,7 +30,6 @@ export function createTransitionAwareComponent<P extends object>(
36
30
  TransitionAwareProps<P>
37
31
  >((props: any, ref) => {
38
32
  const {
39
- remeasureOnFocus: _remeasureOnFocus,
40
33
  onScroll: userOnScroll,
41
34
  onMomentumScrollEnd: userOnMomentumScrollEnd,
42
35
  onScrollEndDrag: userOnScrollEndDrag,
@@ -112,45 +105,27 @@ export function createTransitionAwareComponent<P extends object>(
112
105
  const Inner = forwardRef<
113
106
  React.ComponentRef<typeof AnimatedComponent>,
114
107
  TransitionAwareProps<P>
115
- >((props, _) => {
108
+ >((props, ref) => {
116
109
  const {
117
110
  children,
118
111
  style,
119
- sharedBoundTag,
120
112
  styleId,
121
- onPress,
122
- remeasureOnFocus,
123
113
  animatedProps: userAnimatedProps,
124
114
  ...rest
125
115
  } = props as any;
126
116
 
127
- const animatedRef = useAnimatedRef<View>();
128
- const associatedId = sharedBoundTag || styleId;
129
- const associatedStyles = useSlotStyles(associatedId);
130
- const associatedProps = useSlotProps(associatedId);
117
+ const associatedStyles = useSlotStyles(styleId);
118
+ const associatedProps = useSlotProps(styleId);
131
119
 
132
120
  return (
133
- <RegisterBoundsProvider
134
- animatedRef={animatedRef}
135
- style={style}
136
- onPress={onPress}
137
- sharedBoundTag={sharedBoundTag}
138
- remeasureOnFocus={remeasureOnFocus}
121
+ <AnimatedComponent
122
+ {...(rest as any)}
123
+ ref={ref}
124
+ style={[style, associatedStyles]}
125
+ animatedProps={userAnimatedProps ?? associatedProps}
139
126
  >
140
- {({ captureActiveOnPress, handleInitialLayout }) => (
141
- <AnimatedComponent
142
- {...(rest as any)}
143
- ref={animatedRef}
144
- style={[style, associatedStyles]}
145
- animatedProps={userAnimatedProps ?? associatedProps}
146
- onPress={captureActiveOnPress}
147
- onLayout={() => scheduleOnUI(handleInitialLayout)}
148
- collapsable={!sharedBoundTag}
149
- >
150
- {children}
151
- </AnimatedComponent>
152
- )}
153
- </RegisterBoundsProvider>
127
+ {children}
128
+ </AnimatedComponent>
154
129
  );
155
130
  });
156
131
 
@@ -1,9 +1,9 @@
1
1
  import { useState } from "react";
2
2
  import { useAnimatedReaction } from "react-native-reanimated";
3
3
  import { scheduleOnRN } from "react-native-worklets";
4
- import { useDescriptors } from "../../../providers/screen/descriptors";
5
- import { useScreenOptionsContext } from "../../../providers/screen/options";
6
- import { useStackCoreContext } from "../../../providers/stack/core.provider";
4
+ import { useDescriptorsStore } from "../../../providers/screen/descriptors";
5
+ import { useScreenOptionsStore } from "../../../providers/screen/options";
6
+ import { useStackCoreStore } from "../../../providers/stack/core.provider";
7
7
  import type { BackdropBehavior } from "../../../types/screen.types";
8
8
  import { StackType } from "../../../types/stack.types";
9
9
 
@@ -22,9 +22,11 @@ interface BackdropPointerEventsResult {
22
22
  * - Other stacks default to 'block' (undefined = normal touch handling)
23
23
  */
24
24
  export function useBackdropPointerEvents(): BackdropPointerEventsResult {
25
- const { current } = useDescriptors();
26
- const screenOptions = useScreenOptionsContext();
27
- const { flags } = useStackCoreContext();
25
+ const screenOptions = useScreenOptionsStore();
26
+ const descriptorBackdropBehavior = useDescriptorsStore(
27
+ (store) => store.options.backdropBehavior,
28
+ );
29
+ const stackType = useStackCoreStore((store) => store.flags.STACK_TYPE);
28
30
  const [runtimeBackdropBehavior, setRuntimeBackdropBehavior] = useState<
29
31
  BackdropBehavior | undefined
30
32
  >(undefined);
@@ -40,10 +42,10 @@ export function useBackdropPointerEvents(): BackdropPointerEventsResult {
40
42
  [screenOptions],
41
43
  );
42
44
 
43
- const isComponentStack = flags.STACK_TYPE === StackType.COMPONENT;
45
+ const isComponentStack = stackType === StackType.COMPONENT;
44
46
  const backdropBehavior: BackdropBehavior =
45
47
  runtimeBackdropBehavior ??
46
- current.options.backdropBehavior ??
48
+ descriptorBackdropBehavior ??
47
49
  (isComponentStack ? "passthrough" : "block");
48
50
 
49
51
  const pointerEvents =
@@ -1,10 +1,7 @@
1
1
  import { useCallback } from "react";
2
2
  import { type LayoutChangeEvent, useWindowDimensions } from "react-native";
3
3
  import { scheduleOnUI } from "react-native-worklets";
4
- import {
5
- useDescriptorDerivations,
6
- useDescriptors,
7
- } from "../../../providers/screen/descriptors";
4
+ import { useDescriptorsStore } from "../../../providers/screen/descriptors";
8
5
  import { AnimationStore } from "../../../stores/animation.store";
9
6
  import {
10
7
  LifecycleTransitionRequestKind,
@@ -12,10 +9,16 @@ import {
12
9
  } from "../../../stores/system.store";
13
10
 
14
11
  export function useContentLayout() {
15
- const { current } = useDescriptors();
16
- const { isFirstKey } = useDescriptorDerivations();
12
+ const routeKey = useDescriptorsStore(
13
+ (store) => store.derivations.currentScreenKey,
14
+ );
15
+ const isFirstKey = useDescriptorsStore(
16
+ (store) => store.derivations.isFirstKey,
17
+ );
18
+ const experimental_animateOnInitialMount = useDescriptorsStore(
19
+ (store) => store.options.experimental_animateOnInitialMount,
20
+ );
17
21
  const { height: screenHeight } = useWindowDimensions();
18
- const routeKey = current.route.key;
19
22
  const animations = AnimationStore.getBag(routeKey);
20
23
  const system = SystemStore.getBag(routeKey);
21
24
 
@@ -23,9 +26,6 @@ export function useContentLayout() {
23
26
  system;
24
27
  const { requestLifecycleTransition } = system.actions;
25
28
 
26
- const experimental_animateOnInitialMount =
27
- current.options.experimental_animateOnInitialMount;
28
-
29
29
  return useCallback(
30
30
  (event: LayoutChangeEvent) => {
31
31
  const { width, height } = event.nativeEvent.layout;
@@ -4,7 +4,7 @@ import Animated from "react-native-reanimated";
4
4
  import { scheduleOnUI } from "react-native-worklets";
5
5
  import { DefaultSnapSpec } from "../../../configs/specs";
6
6
  import { useNavigationHelpers } from "../../../hooks/navigation/use-navigation-helpers";
7
- import { useDescriptors } from "../../../providers/screen/descriptors";
7
+ import { useDescriptorsStore } from "../../../providers/screen/descriptors";
8
8
  import { useSlotProps, useSlotStyles } from "../../../providers/screen/styles";
9
9
  import { AnimationStore } from "../../../stores/animation.store";
10
10
  import { GestureStore } from "../../../stores/gesture.store";
@@ -24,11 +24,23 @@ export const BackdropLayer = memo(function BackdropLayer({
24
24
  backdropBehavior: BackdropBehavior;
25
25
  isBackdropActive: boolean;
26
26
  }) {
27
- const { current } = useDescriptors();
28
27
  const { dismissScreen } = useNavigationHelpers();
29
28
 
30
- const BackdropComponent = current.options.backdropComponent;
31
- const routeKey = current.route.key;
29
+ const routeKey = useDescriptorsStore(
30
+ (store) => store.derivations.currentScreenKey,
31
+ );
32
+ const BackdropComponent = useDescriptorsStore(
33
+ (store) => store.options.backdropComponent,
34
+ );
35
+ const rawSnapPoints = useDescriptorsStore(
36
+ (store) => store.options.snapPoints,
37
+ );
38
+ const canDismiss = useDescriptorsStore(
39
+ (store) => store.options.gestureEnabled !== false,
40
+ );
41
+ const transitionSpec = useDescriptorsStore(
42
+ (store) => store.options.transitionSpec,
43
+ );
32
44
  const animations = AnimationStore.getBag(routeKey);
33
45
  const { targetProgress, animationProgress, resolvedAutoSnapPoint } =
34
46
  SystemStore.getBag(routeKey);
@@ -50,9 +62,6 @@ export const BackdropLayer = memo(function BackdropLayer({
50
62
  }
51
63
 
52
64
  if (backdropBehavior === "collapse") {
53
- const rawSnapPoints = current.options.snapPoints;
54
- const canDismiss = current.options.gestureEnabled !== false;
55
-
56
65
  // No snap points → fallback to dismiss
57
66
  if (!rawSnapPoints || rawSnapPoints.length === 0) {
58
67
  dismissScreen();
@@ -60,7 +69,6 @@ export const BackdropLayer = memo(function BackdropLayer({
60
69
  }
61
70
 
62
71
  const gestures = GestureStore.getBag(routeKey);
63
- const transitionSpec = current.options.transitionSpec;
64
72
 
65
73
  scheduleOnUI(() => {
66
74
  "worklet";
@@ -96,6 +104,7 @@ export const BackdropLayer = memo(function BackdropLayer({
96
104
 
97
105
  animateToProgress({
98
106
  target,
107
+ markEntering: false,
99
108
  spec,
100
109
  animations,
101
110
  targetProgress,
@@ -110,7 +119,9 @@ export const BackdropLayer = memo(function BackdropLayer({
110
119
  animationProgress,
111
120
  resolvedAutoSnapPoint,
112
121
  backdropBehavior,
113
- current,
122
+ rawSnapPoints,
123
+ canDismiss,
124
+ transitionSpec,
114
125
  dismissScreen,
115
126
  routeKey,
116
127
  ]);
@@ -3,9 +3,8 @@ import { type ComponentType, memo, useMemo } from "react";
3
3
  import { StyleSheet, View } from "react-native";
4
4
  import { GestureDetector } from "react-native-gesture-handler";
5
5
  import Animated from "react-native-reanimated";
6
- import { useDescriptors } from "../../../providers/screen/descriptors";
7
- import { useGestureContext } from "../../../providers/screen/gestures";
8
- import { OriginProvider } from "../../../providers/screen/origin.provider";
6
+ import { useDescriptorsStore } from "../../../providers/screen/descriptors";
7
+ import { useGestureStore } from "../../../providers/screen/gestures";
9
8
  import { useSlotProps, useSlotStyles } from "../../../providers/screen/styles";
10
9
  import type { ScreenContentComponentProps } from "../../../types";
11
10
  import { ScreenFallbackHost } from "../../boundary/portal/components/boundary-portal/components/host";
@@ -22,11 +21,16 @@ type Props = {
22
21
 
23
22
  export const ContentLayer = memo(
24
23
  ({ children, pointerEvents, isBackdropActive }: Props) => {
25
- const { current } = useDescriptors();
26
-
27
- const gestureContext = useGestureContext();
28
- const ContentComponent = current.options.contentComponent;
29
- const isNavigationMaskEnabled = !!current.options.navigationMaskEnabled;
24
+ const gestureContext = useGestureStore();
25
+ const ContentComponent = useDescriptorsStore(
26
+ (store) => store.options.contentComponent,
27
+ );
28
+ const isNavigationMaskEnabled = useDescriptorsStore(
29
+ (store) => !!store.options.navigationMaskEnabled,
30
+ );
31
+ const hasAutoSnapPoint = useDescriptorsStore(
32
+ (store) => store.options.snapPoints?.includes("auto") ?? false,
33
+ );
30
34
  const contentPointerEvents = isBackdropActive ? "box-none" : pointerEvents;
31
35
 
32
36
  const AnimatedContentComponent = useMemo(() => {
@@ -37,9 +41,6 @@ export const ContentLayer = memo(
37
41
  : null;
38
42
  }, [ContentComponent]);
39
43
 
40
- const hasAutoSnapPoint =
41
- current.options.snapPoints?.includes("auto") ?? false;
42
-
43
44
  const handleContentLayout = useContentLayout();
44
45
 
45
46
  const animatedContentStyle = useSlotStyles("content");
@@ -57,16 +58,14 @@ export const ContentLayer = memo(
57
58
  enabled={isNavigationMaskEnabled}
58
59
  >
59
60
  <SurfaceContainer pointerEvents={contentPointerEvents}>
60
- <OriginProvider>
61
- {hasAutoSnapPoint ? (
62
- <View collapsable={false} onLayout={handleContentLayout}>
63
- {children}
64
- </View>
65
- ) : (
66
- children
67
- )}
68
- <ScreenFallbackHost />
69
- </OriginProvider>
61
+ {hasAutoSnapPoint ? (
62
+ <View collapsable={false} onLayout={handleContentLayout}>
63
+ {children}
64
+ </View>
65
+ ) : (
66
+ children
67
+ )}
68
+ <ScreenFallbackHost />
70
69
  </SurfaceContainer>
71
70
  </MaybeMaskedNavigationContainer>
72
71
  );
@@ -1,7 +1,7 @@
1
1
  import { type ComponentType, memo, useMemo } from "react";
2
2
  import { StyleSheet, type ViewProps } from "react-native";
3
3
  import Animated from "react-native-reanimated";
4
- import { useDescriptors } from "../../../providers/screen/descriptors";
4
+ import { useDescriptorsStore } from "../../../providers/screen/descriptors";
5
5
  import { useSlotProps, useSlotStyles } from "../../../providers/screen/styles";
6
6
 
7
7
  type Props = {
@@ -10,10 +10,10 @@ type Props = {
10
10
  };
11
11
 
12
12
  export const SurfaceContainer = memo(({ children, pointerEvents }: Props) => {
13
- const { current } = useDescriptors();
14
-
15
13
  /** @deprecated Use `contentComponent` instead. */
16
- const DeprecatedSurfaceComponent = current.options.surfaceComponent;
14
+ const DeprecatedSurfaceComponent = useDescriptorsStore(
15
+ (store) => store.options.surfaceComponent,
16
+ );
17
17
 
18
18
  const AnimatedSurfaceComponent = useMemo<ComponentType<any> | null>(() => {
19
19
  return DeprecatedSurfaceComponent
@@ -3,10 +3,10 @@ import { useLayoutEffect, useMemo, useRef } from "react";
3
3
  import useStableCallback from "../../../hooks/use-stable-callback";
4
4
  import {
5
5
  type BaseDescriptor,
6
- useDescriptorDerivations,
6
+ useDescriptorsStore,
7
7
  } from "../../../providers/screen/descriptors";
8
- import { useBlankStackContext } from "../../../providers/stack/blank-stack.provider";
9
- import { useStackCoreContext } from "../../../providers/stack/core.provider";
8
+ import { useBlankStackStore } from "../../../providers/stack/blank-stack.provider";
9
+ import { useStackCoreStore } from "../../../providers/stack/core.provider";
10
10
  import { GestureStore } from "../../../stores/gesture.store";
11
11
  import {
12
12
  LifecycleTransitionRequestKind,
@@ -27,10 +27,15 @@ const useBlankStackClose = ({
27
27
  requestLifecycleTransition,
28
28
  resetStores,
29
29
  }: CloseHookParams) => {
30
- const { handleCloseRoute } = useBlankStackContext();
30
+ const handleCloseRoute = useBlankStackStore(
31
+ (store) => store?.handleCloseRoute,
32
+ );
33
+ const isClosing = useBlankStackStore(
34
+ (store) => store?.scenesByKey[current.route.key]?.activity === "closing",
35
+ );
31
36
 
32
37
  useLayoutEffect(() => {
33
- if (current.activity !== "closing") {
38
+ if (!isClosing) {
34
39
  return;
35
40
  }
36
41
 
@@ -38,10 +43,13 @@ const useBlankStackClose = ({
38
43
  LifecycleTransitionRequestKind.BlankStackClose,
39
44
  0,
40
45
  );
41
- }, [current.activity, requestLifecycleTransition]);
46
+ }, [isClosing, requestLifecycleTransition]);
42
47
 
43
48
  const handleBlankStackCloseEnd = useStableCallback((finished: boolean) => {
44
49
  if (!finished) return;
50
+ if (!handleCloseRoute) {
51
+ throw new Error("Blank stack close handler was not found.");
52
+ }
45
53
  handleCloseRoute({ route: current.route });
46
54
  requestAnimationFrame(() => {
47
55
  resetStores();
@@ -59,7 +67,9 @@ const useNativeStackClose = ({
59
67
  requestLifecycleTransition,
60
68
  resetStores,
61
69
  }: CloseHookParams) => {
62
- const { parentScreenKey } = useDescriptorDerivations();
70
+ const parentScreenKey = useDescriptorsStore(
71
+ (store) => store.derivations.parentScreenKey,
72
+ );
63
73
  const pendingActionRef = useRef<any>(null);
64
74
 
65
75
  const nearestAncestorDismissing = useMemo(() => {
@@ -121,8 +131,8 @@ export function useCloseTransitionIntent(
121
131
  handleNativeCloseEnd?: (finished: boolean) => void;
122
132
  } {
123
133
  const routeKey = current.route.key;
124
- const { flags } = useStackCoreContext();
125
- const isNativeStack = flags.STACK_TYPE === StackType.NATIVE;
134
+ const stackType = useStackCoreStore((store) => store.flags.STACK_TYPE);
135
+ const isNativeStack = stackType === StackType.NATIVE;
126
136
  const { requestLifecycleTransition } = system.actions;
127
137
 
128
138
  const resetStores = useStableCallback(() => {
@@ -1,7 +1,7 @@
1
1
  import { useLayoutEffect } from "react";
2
2
  import {
3
3
  type BaseDescriptor,
4
- useDescriptorDerivations,
4
+ useDescriptorsStore,
5
5
  } from "../../../providers/screen/descriptors";
6
6
  import type { AnimationStoreMap } from "../../../stores/animation.store";
7
7
  import {
@@ -41,7 +41,9 @@ export function useOpenTransitionIntent(
41
41
  animations: AnimationStoreMap,
42
42
  system: SystemStoreMap,
43
43
  ) {
44
- const { isFirstKey } = useDescriptorDerivations();
44
+ const isFirstKey = useDescriptorsStore(
45
+ (store) => store.derivations.isFirstKey,
46
+ );
45
47
  const { requestLifecycleTransition } = system.actions;
46
48
 
47
49
  // biome-ignore lint/correctness/useExhaustiveDependencies: Must only run once on mount
@@ -78,6 +80,7 @@ export function useOpenTransitionIntent(
78
80
  return;
79
81
  }
80
82
 
83
+ animations.entering.set(1);
81
84
  requestLifecycleTransition(
82
85
  LifecycleTransitionRequestKind.Open,
83
86
  initialProgress ?? 1,
@@ -1,6 +1,7 @@
1
1
  import { useAnimatedReaction } from "react-native-reanimated";
2
2
  import type { BaseDescriptor } from "../../../providers/screen/descriptors";
3
3
  import type { AnimationStoreMap } from "../../../stores/animation.store";
4
+ import { GestureStore } from "../../../stores/gesture.store";
4
5
  import {
5
6
  LifecycleTransitionRequestKind,
6
7
  type SystemStoreMap,
@@ -29,6 +30,7 @@ export const useTransitionStartController = ({
29
30
  } = system;
30
31
  const { clearLifecycleTransitionRequest } = system.actions;
31
32
  const transitionSpec = current.options.transitionSpec;
33
+ const isDragging = GestureStore.getValue(current.route.key, "dragging");
32
34
 
33
35
  useAnimatedReaction(
34
36
  () => {
@@ -61,10 +63,14 @@ export const useTransitionStartController = ({
61
63
  animateToProgress({
62
64
  target,
63
65
  spec: transitionSpec,
66
+ emitWillAnimate:
67
+ kind !== LifecycleTransitionRequestKind.Open ||
68
+ !animations.entering.get(),
64
69
  animations,
65
70
  targetProgress,
66
71
  animationProgress,
67
72
  onAnimationFinish,
73
+ isDragging,
68
74
  });
69
75
 
70
76
  clearLifecycleTransitionRequest();
@@ -1,4 +1,4 @@
1
- import { useDescriptors } from "../../providers/screen/descriptors";
1
+ import { useDescriptorsStore } from "../../providers/screen/descriptors";
2
2
  import { AnimationStore } from "../../stores/animation.store";
3
3
  import { SystemStore } from "../../stores/system.store";
4
4
  import { useScreenHistory } from "./hooks/history/use-screen-history";
@@ -15,7 +15,8 @@ interface Props {
15
15
  * Reads current/previous descriptors from DescriptorsProvider context.
16
16
  */
17
17
  export const ScreenLifecycle = ({ children }: Props) => {
18
- const { current, previous } = useDescriptors();
18
+ const current = useDescriptorsStore((store) => store.current);
19
+ const previous = useDescriptorsStore((store) => store.previous);
19
20
 
20
21
  const animations = AnimationStore.getBag(current.route.key);
21
22
  const system = SystemStore.getBag(current.route.key);