react-native-screen-transitions 3.11.2 → 3.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (457) hide show
  1. package/lib/commonjs/blank-stack/components/stack-view.js +1 -2
  2. package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -1
  3. package/lib/commonjs/component-stack/components/stack-view.js +1 -2
  4. package/lib/commonjs/component-stack/components/stack-view.js.map +1 -1
  5. package/lib/commonjs/native-stack/views/NativeStackView.native.js +3 -4
  6. package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
  7. package/lib/commonjs/shared/adapters/with-screen-transitions/stack-layout.js +1 -1
  8. package/lib/commonjs/shared/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  9. package/lib/commonjs/shared/components/boundary/components/boundary-lifecycle.js +36 -0
  10. package/lib/commonjs/shared/components/boundary/components/boundary-lifecycle.js.map +1 -0
  11. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +1 -13
  12. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -1
  13. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js +9 -2
  14. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
  15. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js +3 -2
  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 +9 -2
  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/hooks/use-boundary-content-portal-attachment.js +7 -4
  20. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  21. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/host.js +5 -12
  22. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
  23. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +25 -43
  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/local-measurement.js +13 -0
  26. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js.map +1 -0
  27. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js +8 -31
  28. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -1
  29. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js +14 -19
  30. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js.map +1 -1
  31. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +8 -0
  32. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  33. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js +19 -47
  34. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js.map +1 -1
  35. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/index.js.map +1 -1
  36. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js +1 -1
  37. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -1
  38. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js +19 -17
  39. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  40. package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js +19 -5
  41. package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js.map +1 -1
  42. package/lib/commonjs/shared/components/overlay/helpers/create-overlay-interpolator-frame.js +30 -0
  43. package/lib/commonjs/shared/components/overlay/helpers/create-overlay-interpolator-frame.js.map +1 -0
  44. package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js +40 -22
  45. package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js.map +1 -1
  46. package/lib/commonjs/shared/components/overlay/helpers/retain-ready-overlay-resources.js +21 -0
  47. package/lib/commonjs/shared/components/overlay/helpers/retain-ready-overlay-resources.js.map +1 -0
  48. package/lib/commonjs/shared/components/overlay/helpers/run-overlay-slot-interpolator.js +41 -0
  49. package/lib/commonjs/shared/components/overlay/helpers/run-overlay-slot-interpolator.js.map +1 -0
  50. package/lib/commonjs/shared/components/overlay/hooks/use-overlay-slot.js +85 -0
  51. package/lib/commonjs/shared/components/overlay/hooks/use-overlay-slot.js.map +1 -0
  52. package/lib/commonjs/shared/components/overlay/variations/float-overlay.js +14 -65
  53. package/lib/commonjs/shared/components/overlay/variations/float-overlay.js.map +1 -1
  54. package/lib/commonjs/shared/components/overlay/variations/overlay-host.js +89 -16
  55. package/lib/commonjs/shared/components/overlay/variations/overlay-host.js.map +1 -1
  56. package/lib/commonjs/shared/components/screen-container/layers/backdrop.js +11 -7
  57. package/lib/commonjs/shared/components/screen-container/layers/backdrop.js.map +1 -1
  58. package/lib/commonjs/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js +31 -0
  59. package/lib/commonjs/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js.map +1 -0
  60. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-completion.js +26 -0
  61. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-completion.js.map +1 -0
  62. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +64 -87
  63. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  64. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js +1 -5
  65. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
  66. package/lib/commonjs/shared/components/screen-lifecycle/index.js +9 -6
  67. package/lib/commonjs/shared/components/screen-lifecycle/index.js.map +1 -1
  68. package/lib/commonjs/shared/hooks/navigation/use-navigation-helpers.js +28 -6
  69. package/lib/commonjs/shared/hooks/navigation/use-navigation-helpers.js.map +1 -1
  70. package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js +1 -2
  71. package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
  72. package/lib/commonjs/shared/providers/screen/animation/animation.provider.js +10 -7
  73. package/lib/commonjs/shared/providers/screen/animation/animation.provider.js.map +1 -1
  74. package/lib/commonjs/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +6 -8
  75. package/lib/commonjs/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
  76. package/lib/commonjs/shared/providers/screen/animation/use-screen-animation.js +8 -2
  77. package/lib/commonjs/shared/providers/screen/animation/use-screen-animation.js.map +1 -1
  78. package/lib/commonjs/shared/providers/screen/gestures/gestures.provider.js +9 -5
  79. package/lib/commonjs/shared/providers/screen/gestures/gestures.provider.js.map +1 -1
  80. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js +10 -5
  81. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  82. package/lib/commonjs/shared/providers/screen/gestures/ownership/{use-walk-up-and-register-shadowing-claims.js → gesture-ownership-bridge.js} +36 -50
  83. package/lib/commonjs/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js.map +1 -0
  84. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js +4 -5
  85. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  86. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js +2 -3
  87. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js.map +1 -1
  88. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +4 -5
  89. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  90. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js +2 -3
  91. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js.map +1 -1
  92. package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js +9 -5
  93. package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js.map +1 -1
  94. package/lib/commonjs/shared/providers/screen/styles/constants.js +1 -0
  95. package/lib/commonjs/shared/providers/screen/styles/constants.js.map +1 -1
  96. package/lib/commonjs/shared/providers/screen/styles/helpers/transition-visual-state.js +20 -1
  97. package/lib/commonjs/shared/providers/screen/styles/helpers/transition-visual-state.js.map +1 -1
  98. package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js +14 -15
  99. package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -1
  100. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +34 -11
  101. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  102. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js +18 -29
  103. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js.map +1 -1
  104. package/lib/commonjs/shared/providers/stack/blank-stack-state/blank-stack-controller.js +5 -1
  105. package/lib/commonjs/shared/providers/stack/blank-stack-state/blank-stack-controller.js.map +1 -1
  106. package/lib/commonjs/shared/providers/stack/blank-stack-state/helpers/resolve-presented-index.js +18 -0
  107. package/lib/commonjs/shared/providers/stack/blank-stack-state/helpers/resolve-presented-index.js.map +1 -0
  108. package/lib/commonjs/shared/providers/stack/blank-stack.provider.js +2 -1
  109. package/lib/commonjs/shared/providers/stack/blank-stack.provider.js.map +1 -1
  110. package/lib/commonjs/shared/stores/bounds/internals/links.js +1 -1
  111. package/lib/commonjs/shared/stores/bounds/internals/links.js.map +1 -1
  112. package/lib/commonjs/shared/stores/system.store.js +1 -2
  113. package/lib/commonjs/shared/stores/system.store.js.map +1 -1
  114. package/lib/commonjs/shared/utils/animation/animate-to-progress.js +0 -22
  115. package/lib/commonjs/shared/utils/animation/animate-to-progress.js.map +1 -1
  116. package/lib/commonjs/shared/utils/create-provider.js +119 -10
  117. package/lib/commonjs/shared/utils/create-provider.js.map +1 -1
  118. package/lib/commonjs/shared/utils/navigation/close-action-replay.js +22 -0
  119. package/lib/commonjs/shared/utils/navigation/close-action-replay.js.map +1 -0
  120. package/lib/module/blank-stack/components/stack-view.js +1 -2
  121. package/lib/module/blank-stack/components/stack-view.js.map +1 -1
  122. package/lib/module/component-stack/components/stack-view.js +1 -2
  123. package/lib/module/component-stack/components/stack-view.js.map +1 -1
  124. package/lib/module/native-stack/views/NativeStackView.native.js +3 -4
  125. package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
  126. package/lib/module/shared/adapters/with-screen-transitions/stack-layout.js +1 -1
  127. package/lib/module/shared/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  128. package/lib/module/shared/components/boundary/components/boundary-lifecycle.js +32 -0
  129. package/lib/module/shared/components/boundary/components/boundary-lifecycle.js.map +1 -0
  130. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +1 -13
  131. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -1
  132. package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js +9 -2
  133. package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
  134. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js +3 -2
  135. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  136. package/lib/module/shared/components/boundary/hooks/use-measurer.js +9 -2
  137. package/lib/module/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  138. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +7 -4
  139. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  140. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/host.js +5 -12
  141. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
  142. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +27 -45
  143. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
  144. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js +8 -0
  145. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js.map +1 -0
  146. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js +8 -32
  147. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -1
  148. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js +15 -20
  149. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js.map +1 -1
  150. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +8 -0
  151. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  152. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js +20 -48
  153. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js.map +1 -1
  154. package/lib/module/shared/components/boundary/portal/components/boundary-portal/index.js.map +1 -1
  155. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js +1 -1
  156. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -1
  157. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js +20 -18
  158. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  159. package/lib/module/shared/components/boundary/utils/refresh-signals.js +19 -5
  160. package/lib/module/shared/components/boundary/utils/refresh-signals.js.map +1 -1
  161. package/lib/module/shared/components/overlay/helpers/create-overlay-interpolator-frame.js +25 -0
  162. package/lib/module/shared/components/overlay/helpers/create-overlay-interpolator-frame.js.map +1 -0
  163. package/lib/module/shared/components/overlay/helpers/get-active-overlay.js +37 -21
  164. package/lib/module/shared/components/overlay/helpers/get-active-overlay.js.map +1 -1
  165. package/lib/module/shared/components/overlay/helpers/retain-ready-overlay-resources.js +17 -0
  166. package/lib/module/shared/components/overlay/helpers/retain-ready-overlay-resources.js.map +1 -0
  167. package/lib/module/shared/components/overlay/helpers/run-overlay-slot-interpolator.js +36 -0
  168. package/lib/module/shared/components/overlay/helpers/run-overlay-slot-interpolator.js.map +1 -0
  169. package/lib/module/shared/components/overlay/hooks/use-overlay-slot.js +80 -0
  170. package/lib/module/shared/components/overlay/hooks/use-overlay-slot.js.map +1 -0
  171. package/lib/module/shared/components/overlay/variations/float-overlay.js +15 -66
  172. package/lib/module/shared/components/overlay/variations/float-overlay.js.map +1 -1
  173. package/lib/module/shared/components/overlay/variations/overlay-host.js +90 -18
  174. package/lib/module/shared/components/overlay/variations/overlay-host.js.map +1 -1
  175. package/lib/module/shared/components/screen-container/layers/backdrop.js +12 -8
  176. package/lib/module/shared/components/screen-container/layers/backdrop.js.map +1 -1
  177. package/lib/module/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js +25 -0
  178. package/lib/module/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js.map +1 -0
  179. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-completion.js +21 -0
  180. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-completion.js.map +1 -0
  181. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +64 -86
  182. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  183. package/lib/module/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js +1 -5
  184. package/lib/module/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
  185. package/lib/module/shared/components/screen-lifecycle/index.js +9 -6
  186. package/lib/module/shared/components/screen-lifecycle/index.js.map +1 -1
  187. package/lib/module/shared/hooks/navigation/use-navigation-helpers.js +29 -7
  188. package/lib/module/shared/hooks/navigation/use-navigation-helpers.js.map +1 -1
  189. package/lib/module/shared/providers/helpers/measured-bounds-writes.js +1 -2
  190. package/lib/module/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
  191. package/lib/module/shared/providers/screen/animation/animation.provider.js +10 -7
  192. package/lib/module/shared/providers/screen/animation/animation.provider.js.map +1 -1
  193. package/lib/module/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +6 -8
  194. package/lib/module/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
  195. package/lib/module/shared/providers/screen/animation/use-screen-animation.js +8 -2
  196. package/lib/module/shared/providers/screen/animation/use-screen-animation.js.map +1 -1
  197. package/lib/module/shared/providers/screen/gestures/gestures.provider.js +10 -6
  198. package/lib/module/shared/providers/screen/gestures/gestures.provider.js.map +1 -1
  199. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js +10 -5
  200. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  201. package/lib/module/shared/providers/screen/gestures/ownership/{use-walk-up-and-register-shadowing-claims.js → gesture-ownership-bridge.js} +35 -49
  202. package/lib/module/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js.map +1 -0
  203. package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js +4 -5
  204. package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  205. package/lib/module/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js +2 -3
  206. package/lib/module/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js.map +1 -1
  207. package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +4 -5
  208. package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  209. package/lib/module/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js +2 -3
  210. package/lib/module/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js.map +1 -1
  211. package/lib/module/shared/providers/screen/gestures/shared/policy.js +9 -5
  212. package/lib/module/shared/providers/screen/gestures/shared/policy.js.map +1 -1
  213. package/lib/module/shared/providers/screen/styles/constants.js +1 -0
  214. package/lib/module/shared/providers/screen/styles/constants.js.map +1 -1
  215. package/lib/module/shared/providers/screen/styles/helpers/transition-visual-state.js +18 -0
  216. package/lib/module/shared/providers/screen/styles/helpers/transition-visual-state.js.map +1 -1
  217. package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js +14 -15
  218. package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -1
  219. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +35 -12
  220. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  221. package/lib/module/shared/providers/screen/styles/slot.provider.js +19 -30
  222. package/lib/module/shared/providers/screen/styles/slot.provider.js.map +1 -1
  223. package/lib/module/shared/providers/stack/blank-stack-state/blank-stack-controller.js +5 -1
  224. package/lib/module/shared/providers/stack/blank-stack-state/blank-stack-controller.js.map +1 -1
  225. package/lib/module/shared/providers/stack/blank-stack-state/helpers/resolve-presented-index.js +14 -0
  226. package/lib/module/shared/providers/stack/blank-stack-state/helpers/resolve-presented-index.js.map +1 -0
  227. package/lib/module/shared/providers/stack/blank-stack.provider.js +2 -1
  228. package/lib/module/shared/providers/stack/blank-stack.provider.js.map +1 -1
  229. package/lib/module/shared/stores/bounds/internals/links.js +1 -1
  230. package/lib/module/shared/stores/bounds/internals/links.js.map +1 -1
  231. package/lib/module/shared/stores/system.store.js +1 -2
  232. package/lib/module/shared/stores/system.store.js.map +1 -1
  233. package/lib/module/shared/types/animation.types.js.map +1 -1
  234. package/lib/module/shared/utils/animation/animate-to-progress.js +0 -22
  235. package/lib/module/shared/utils/animation/animate-to-progress.js.map +1 -1
  236. package/lib/module/shared/utils/create-provider.js +119 -10
  237. package/lib/module/shared/utils/create-provider.js.map +1 -1
  238. package/lib/module/shared/utils/navigation/close-action-replay.js +16 -0
  239. package/lib/module/shared/utils/navigation/close-action-replay.js.map +1 -0
  240. package/lib/typescript/blank-stack/components/stack-view.d.ts.map +1 -1
  241. package/lib/typescript/blank-stack/types.d.ts +1 -1
  242. package/lib/typescript/blank-stack/types.d.ts.map +1 -1
  243. package/lib/typescript/component-stack/components/stack-view.d.ts.map +1 -1
  244. package/lib/typescript/component-stack/types.d.ts +1 -1
  245. package/lib/typescript/component-stack/types.d.ts.map +1 -1
  246. package/lib/typescript/native-stack/types.d.ts +1 -1
  247. package/lib/typescript/native-stack/types.d.ts.map +1 -1
  248. package/lib/typescript/native-stack/views/NativeStackView.native.d.ts.map +1 -1
  249. package/lib/typescript/shared/components/boundary/components/boundary-lifecycle.d.ts +18 -0
  250. package/lib/typescript/shared/components/boundary/components/boundary-lifecycle.d.ts.map +1 -0
  251. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts +1 -2
  252. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts.map +1 -1
  253. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts.map +1 -1
  254. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts +3 -2
  255. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts.map +1 -1
  256. package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts +3 -2
  257. package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts.map +1 -1
  258. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts.map +1 -1
  259. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/host.d.ts.map +1 -1
  260. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.d.ts +5 -1
  261. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.d.ts.map +1 -1
  262. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.d.ts +4 -0
  263. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.d.ts.map +1 -0
  264. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts +4 -17
  265. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts.map +1 -1
  266. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.d.ts +3 -1
  267. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.d.ts.map +1 -1
  268. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -1
  269. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.d.ts +5 -9
  270. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.d.ts.map +1 -1
  271. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts +2 -1
  272. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts.map +1 -1
  273. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts +2 -1
  274. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
  275. package/lib/typescript/shared/components/boundary/types.d.ts +6 -0
  276. package/lib/typescript/shared/components/boundary/types.d.ts.map +1 -1
  277. package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts +1 -0
  278. package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts.map +1 -1
  279. package/lib/typescript/shared/components/overlay/helpers/create-overlay-interpolator-frame.d.ts +7 -0
  280. package/lib/typescript/shared/components/overlay/helpers/create-overlay-interpolator-frame.d.ts.map +1 -0
  281. package/lib/typescript/shared/components/overlay/helpers/get-active-overlay.d.ts +17 -7
  282. package/lib/typescript/shared/components/overlay/helpers/get-active-overlay.d.ts.map +1 -1
  283. package/lib/typescript/shared/components/overlay/helpers/retain-ready-overlay-resources.d.ts +11 -0
  284. package/lib/typescript/shared/components/overlay/helpers/retain-ready-overlay-resources.d.ts.map +1 -0
  285. package/lib/typescript/shared/components/overlay/helpers/run-overlay-slot-interpolator.d.ts +8 -0
  286. package/lib/typescript/shared/components/overlay/helpers/run-overlay-slot-interpolator.d.ts.map +1 -0
  287. package/lib/typescript/shared/components/overlay/hooks/use-overlay-slot.d.ts +15 -0
  288. package/lib/typescript/shared/components/overlay/hooks/use-overlay-slot.d.ts.map +1 -0
  289. package/lib/typescript/shared/components/overlay/variations/float-overlay.d.ts +1 -1
  290. package/lib/typescript/shared/components/overlay/variations/float-overlay.d.ts.map +1 -1
  291. package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts +7 -6
  292. package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts.map +1 -1
  293. package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts.map +1 -1
  294. package/lib/typescript/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.d.ts +27 -0
  295. package/lib/typescript/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.d.ts.map +1 -0
  296. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-completion.d.ts +7 -0
  297. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-completion.d.ts.map +1 -0
  298. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts +2 -7
  299. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts.map +1 -1
  300. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-transition-start-controller.d.ts +1 -3
  301. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-transition-start-controller.d.ts.map +1 -1
  302. package/lib/typescript/shared/components/screen-lifecycle/index.d.ts.map +1 -1
  303. package/lib/typescript/shared/hooks/navigation/use-navigation-helpers.d.ts +1 -0
  304. package/lib/typescript/shared/hooks/navigation/use-navigation-helpers.d.ts.map +1 -1
  305. package/lib/typescript/shared/index.d.ts +12 -12
  306. package/lib/typescript/shared/index.d.ts.map +1 -1
  307. package/lib/typescript/shared/providers/screen/animation/animation.provider.d.ts +4 -0
  308. package/lib/typescript/shared/providers/screen/animation/animation.provider.d.ts.map +1 -1
  309. package/lib/typescript/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts +4 -1
  310. package/lib/typescript/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts.map +1 -1
  311. package/lib/typescript/shared/providers/screen/animation/use-screen-animation.d.ts.map +1 -1
  312. package/lib/typescript/shared/providers/screen/gestures/gestures.provider.d.ts.map +1 -1
  313. package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts +2 -2
  314. package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts.map +1 -1
  315. package/lib/typescript/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.d.ts +3 -0
  316. package/lib/typescript/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.d.ts.map +1 -0
  317. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.d.ts +1 -1
  318. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.d.ts.map +1 -1
  319. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.d.ts.map +1 -1
  320. package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts +1 -1
  321. package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts.map +1 -1
  322. package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.d.ts.map +1 -1
  323. package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts +2 -1
  324. package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts.map +1 -1
  325. package/lib/typescript/shared/providers/screen/gestures/types.d.ts +2 -0
  326. package/lib/typescript/shared/providers/screen/gestures/types.d.ts.map +1 -1
  327. package/lib/typescript/shared/providers/screen/styles/constants.d.ts.map +1 -1
  328. package/lib/typescript/shared/providers/screen/styles/helpers/transition-visual-state.d.ts +7 -0
  329. package/lib/typescript/shared/providers/screen/styles/helpers/transition-visual-state.d.ts.map +1 -1
  330. package/lib/typescript/shared/providers/screen/styles/hooks/slot-resolvers.d.ts.map +1 -1
  331. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts +1 -1
  332. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  333. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts +5 -5
  334. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts.map +1 -1
  335. package/lib/typescript/shared/providers/stack/blank-stack-state/blank-stack-controller.d.ts.map +1 -1
  336. package/lib/typescript/shared/providers/stack/blank-stack-state/helpers/resolve-presented-index.d.ts +3 -0
  337. package/lib/typescript/shared/providers/stack/blank-stack-state/helpers/resolve-presented-index.d.ts.map +1 -0
  338. package/lib/typescript/shared/providers/stack/blank-stack.provider.d.ts.map +1 -1
  339. package/lib/typescript/shared/stores/system.store.d.ts +1 -2
  340. package/lib/typescript/shared/stores/system.store.d.ts.map +1 -1
  341. package/lib/typescript/shared/types/animation.types.d.ts +8 -0
  342. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
  343. package/lib/typescript/shared/types/index.d.ts +1 -1
  344. package/lib/typescript/shared/types/index.d.ts.map +1 -1
  345. package/lib/typescript/shared/types/overlay.types.d.ts +26 -11
  346. package/lib/typescript/shared/types/overlay.types.d.ts.map +1 -1
  347. package/lib/typescript/shared/types/screen.types.d.ts +2 -2
  348. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  349. package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts +2 -3
  350. package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts.map +1 -1
  351. package/lib/typescript/shared/utils/create-provider.d.ts +21 -6
  352. package/lib/typescript/shared/utils/create-provider.d.ts.map +1 -1
  353. package/lib/typescript/shared/utils/navigation/close-action-replay.d.ts +4 -0
  354. package/lib/typescript/shared/utils/navigation/close-action-replay.d.ts.map +1 -0
  355. package/package.json +1 -1
  356. package/src/blank-stack/components/stack-view.tsx +1 -4
  357. package/src/blank-stack/types.ts +8 -2
  358. package/src/component-stack/components/stack-view.tsx +1 -4
  359. package/src/component-stack/types.ts +8 -2
  360. package/src/native-stack/types.ts +8 -2
  361. package/src/native-stack/views/NativeStackView.native.tsx +6 -10
  362. package/src/shared/adapters/with-screen-transitions/stack-layout.tsx +1 -1
  363. package/src/shared/components/boundary/components/boundary-lifecycle.tsx +53 -0
  364. package/src/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.ts +0 -14
  365. package/src/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.ts +13 -2
  366. package/src/shared/components/boundary/hooks/use-boundary-measurement.ts +7 -2
  367. package/src/shared/components/boundary/hooks/use-measurer.ts +11 -1
  368. package/src/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.ts +9 -4
  369. package/src/shared/components/boundary/portal/components/boundary-portal/components/host.tsx +13 -11
  370. package/src/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.tsx +44 -55
  371. package/src/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.ts +10 -0
  372. package/src/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.ts +11 -55
  373. package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.ts +20 -24
  374. package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +11 -0
  375. package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.ts +20 -67
  376. package/src/shared/components/boundary/portal/components/boundary-portal/index.tsx +1 -0
  377. package/src/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.ts +3 -2
  378. package/src/shared/components/boundary/providers/boundary-root.provider.tsx +29 -20
  379. package/src/shared/components/boundary/types.ts +9 -0
  380. package/src/shared/components/boundary/utils/refresh-signals.ts +39 -6
  381. package/src/shared/components/overlay/helpers/create-overlay-interpolator-frame.ts +29 -0
  382. package/src/shared/components/overlay/helpers/get-active-overlay.ts +62 -20
  383. package/src/shared/components/overlay/helpers/retain-ready-overlay-resources.ts +38 -0
  384. package/src/shared/components/overlay/helpers/run-overlay-slot-interpolator.ts +48 -0
  385. package/src/shared/components/overlay/hooks/use-overlay-slot.ts +103 -0
  386. package/src/shared/components/overlay/variations/float-overlay.tsx +22 -64
  387. package/src/shared/components/overlay/variations/overlay-host.tsx +135 -28
  388. package/src/shared/components/screen-container/layers/backdrop.tsx +11 -7
  389. package/src/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.ts +64 -0
  390. package/src/shared/components/screen-lifecycle/hooks/use-close-completion.ts +28 -0
  391. package/src/shared/components/screen-lifecycle/hooks/use-close-transition-intent.ts +72 -109
  392. package/src/shared/components/screen-lifecycle/hooks/use-transition-start-controller.ts +0 -12
  393. package/src/shared/components/screen-lifecycle/index.tsx +8 -4
  394. package/src/shared/hooks/navigation/use-navigation-helpers.ts +39 -7
  395. package/src/shared/index.ts +1 -0
  396. package/src/shared/providers/helpers/measured-bounds-writes.ts +1 -1
  397. package/src/shared/providers/screen/animation/animation.provider.tsx +24 -11
  398. package/src/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.ts +15 -9
  399. package/src/shared/providers/screen/animation/use-screen-animation.tsx +12 -2
  400. package/src/shared/providers/screen/gestures/gestures.provider.tsx +18 -7
  401. package/src/shared/providers/screen/gestures/hooks/use-screen-gesture-config.ts +13 -5
  402. package/src/shared/providers/screen/gestures/ownership/{use-walk-up-and-register-shadowing-claims.ts → gesture-ownership-bridge.tsx} +44 -54
  403. package/src/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.ts +4 -6
  404. package/src/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.ts +1 -3
  405. package/src/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.ts +4 -6
  406. package/src/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.ts +2 -8
  407. package/src/shared/providers/screen/gestures/shared/policy.ts +17 -6
  408. package/src/shared/providers/screen/gestures/types.ts +2 -0
  409. package/src/shared/providers/screen/styles/constants.ts +1 -0
  410. package/src/shared/providers/screen/styles/helpers/transition-visual-state.ts +26 -0
  411. package/src/shared/providers/screen/styles/hooks/slot-resolvers.tsx +17 -5
  412. package/src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +51 -12
  413. package/src/shared/providers/screen/styles/slot.provider.tsx +46 -70
  414. package/src/shared/providers/stack/blank-stack-state/blank-stack-controller.ts +5 -1
  415. package/src/shared/providers/stack/blank-stack-state/helpers/resolve-presented-index.ts +22 -0
  416. package/src/shared/providers/stack/blank-stack.provider.tsx +6 -1
  417. package/src/shared/stores/bounds/internals/links.ts +1 -1
  418. package/src/shared/stores/system.store.ts +1 -2
  419. package/src/shared/types/animation.types.ts +8 -0
  420. package/src/shared/types/index.ts +1 -1
  421. package/src/shared/types/overlay.types.ts +41 -14
  422. package/src/shared/types/screen.types.ts +2 -2
  423. package/src/shared/utils/animation/animate-to-progress.ts +1 -22
  424. package/src/shared/utils/create-provider.tsx +221 -19
  425. package/src/shared/utils/navigation/close-action-replay.ts +25 -0
  426. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.js +0 -30
  427. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.js.map +0 -1
  428. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js +0 -47
  429. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js.map +0 -1
  430. package/lib/commonjs/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js.map +0 -1
  431. package/lib/commonjs/shared/providers/screen/styles/components/floating-overlay-layer.js +0 -28
  432. package/lib/commonjs/shared/providers/screen/styles/components/floating-overlay-layer.js.map +0 -1
  433. package/lib/commonjs/shared/providers/screen/styles/stores/slot-references.store.js +0 -53
  434. package/lib/commonjs/shared/providers/screen/styles/stores/slot-references.store.js.map +0 -1
  435. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.js +0 -25
  436. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.js.map +0 -1
  437. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js +0 -40
  438. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js.map +0 -1
  439. package/lib/module/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js.map +0 -1
  440. package/lib/module/shared/providers/screen/styles/components/floating-overlay-layer.js +0 -24
  441. package/lib/module/shared/providers/screen/styles/components/floating-overlay-layer.js.map +0 -1
  442. package/lib/module/shared/providers/screen/styles/stores/slot-references.store.js +0 -47
  443. package/lib/module/shared/providers/screen/styles/stores/slot-references.store.js.map +0 -1
  444. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.d.ts +0 -9
  445. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.d.ts.map +0 -1
  446. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.d.ts +0 -9
  447. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.d.ts.map +0 -1
  448. package/lib/typescript/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.d.ts +0 -14
  449. package/lib/typescript/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.d.ts.map +0 -1
  450. package/lib/typescript/shared/providers/screen/styles/components/floating-overlay-layer.d.ts +0 -7
  451. package/lib/typescript/shared/providers/screen/styles/components/floating-overlay-layer.d.ts.map +0 -1
  452. package/lib/typescript/shared/providers/screen/styles/stores/slot-references.store.d.ts +0 -6
  453. package/lib/typescript/shared/providers/screen/styles/stores/slot-references.store.d.ts.map +0 -1
  454. package/src/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.ts +0 -36
  455. package/src/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.ts +0 -45
  456. package/src/shared/providers/screen/styles/components/floating-overlay-layer.tsx +0 -29
  457. package/src/shared/providers/screen/styles/stores/slot-references.store.ts +0 -72
@@ -1,23 +1,28 @@
1
- import type { Route } from "@react-navigation/native";
1
+ import type { ParamListBase, ParamListRoute, RouteProp } from "@react-navigation/native";
2
+ import type { ReactNode } from "react";
2
3
  import type { DerivedValue } from "react-native-reanimated";
3
4
  import type { ScreenTransitionConfig } from "./screen.types";
4
5
  /**
5
- * Props passed to overlay components.
6
- * Generic over the navigation type since different stacks have different navigation props.
6
+ * Overlay state without the animated progress value.
7
7
  */
8
+ export type OverlayScreenState<TNavigation = unknown, TParamList extends ParamListBase = ParamListBase, TOwnerRouteName extends keyof TParamList = keyof TParamList> = Omit<OverlayProps<TNavigation, TParamList, TOwnerRouteName>, "progress"> & {
9
+ snapTo: (index: number) => void;
10
+ };
8
11
  /**
9
- * Overlay screen state passed to overlay host for rendering.
10
- * Generic over navigation type — defaults to `unknown` for flexibility.
12
+ * Props passed to a floating overlay component.
13
+ *
14
+ * `route` and `index` identify the screen that owns the overlay. Focused
15
+ * values may describe a later screen while that overlay remains visible.
11
16
  */
12
- export type OverlayScreenState<TNavigation = unknown> = Omit<OverlayProps<TNavigation>, "progress"> & {
17
+ export type OverlayProps<TNavigation = unknown, TParamList extends ParamListBase = ParamListBase, TOwnerRouteName extends keyof TParamList = keyof TParamList> = {
18
+ /** Route that declared this overlay. */
19
+ route: RouteProp<TParamList, TOwnerRouteName>;
20
+ /** Index of the route that declared this overlay. */
13
21
  index: number;
14
- snapTo: (index: number) => void;
15
- };
16
- export type OverlayProps<TNavigation = unknown> = {
17
22
  /**
18
23
  * Route of the currently focused screen in the stack.
19
24
  */
20
- focusedRoute: Route<string>;
25
+ focusedRoute: ParamListRoute<TParamList>;
21
26
  /**
22
27
  * Index of the focused route in the stack.
23
28
  */
@@ -25,7 +30,7 @@ export type OverlayProps<TNavigation = unknown> = {
25
30
  /**
26
31
  * All routes currently in the stack.
27
32
  */
28
- routes: Route<string>[];
33
+ routes: ParamListRoute<TParamList>[];
29
34
  /**
30
35
  * Custom metadata from the focused screen's options.
31
36
  */
@@ -44,4 +49,14 @@ export type OverlayProps<TNavigation = unknown> = {
44
49
  */
45
50
  progress: DerivedValue<number>;
46
51
  };
52
+ /**
53
+ * Component rendered for a floating screen overlay.
54
+ *
55
+ * The callback is bivariant because React Navigation stores overlay components
56
+ * in navigator-wide screen options while applications annotate them for one
57
+ * specific route.
58
+ */
59
+ export type OverlayComponent = {
60
+ bivarianceHack(props: OverlayProps): ReactNode;
61
+ }["bivarianceHack"];
47
62
  //# sourceMappingURL=overlay.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/overlay.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;;GAGG;AACH;;;GAGG;AACH,MAAM,MAAM,kBAAkB,CAAC,WAAW,GAAG,OAAO,IAAI,IAAI,CAC3D,YAAY,CAAC,WAAW,CAAC,EACzB,UAAU,CACV,GAAG;IACH,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,WAAW,GAAG,OAAO,IAAI;IACjD;;OAEG;IACH,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAE5B;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;IAExB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE,WAAW,CAAC;IAExB;;OAEG;IACH,OAAO,EAAE,sBAAsB,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC"}
1
+ {"version":3,"file":"overlay.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/overlay.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EACd,SAAS,EACT,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,kBAAkB,CAC7B,WAAW,GAAG,OAAO,EACrB,UAAU,SAAS,aAAa,GAAG,aAAa,EAChD,eAAe,SAAS,MAAM,UAAU,GAAG,MAAM,UAAU,IACxD,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,EAAE,UAAU,CAAC,GAAG;IAC9E,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAChC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,YAAY,CACvB,WAAW,GAAG,OAAO,EACrB,UAAU,SAAS,aAAa,GAAG,aAAa,EAChD,eAAe,SAAS,MAAM,UAAU,GAAG,MAAM,UAAU,IACxD;IACH,wCAAwC;IACxC,KAAK,EAAE,SAAS,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAE9C,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAEzC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;IAErC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;OAEG;IACH,UAAU,EAAE,WAAW,CAAC;IAExB;;OAEG;IACH,OAAO,EAAE,sBAAsB,CAAC;IAEhC;;;OAGG;IACH,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CAC/B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC9B,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,SAAS,CAAC;CAC/C,CAAC,gBAAgB,CAAC,CAAC"}
@@ -3,7 +3,7 @@ import type { ViewProps } from "react-native";
3
3
  import type { AnimatedProps } from "react-native-reanimated";
4
4
  import type { ScreenStyleInterpolator, TransitionSpec } from "./animation.types";
5
5
  import type { GestureActivationArea, GestureDirectionOption, GestureProgressMode, ScrollMetadataState } from "./gesture.types";
6
- import type { OverlayProps } from "./overlay.types";
6
+ import type { OverlayComponent } from "./overlay.types";
7
7
  export type Layout = {
8
8
  width: number;
9
9
  height: number;
@@ -290,7 +290,7 @@ export type ScreenTransitionConfig = {
290
290
  /**
291
291
  * Function that returns a React Element to display as an overlay.
292
292
  */
293
- overlay?: (props: OverlayProps) => React.ReactNode;
293
+ overlay?: OverlayComponent;
294
294
  /**
295
295
  * Whether to show the overlay. The overlay is shown by default when `overlay` is provided.
296
296
  * Setting this to `false` hides the overlay.
@@ -1 +1 @@
1
- {"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type SharedValue } from "react-native-reanimated";
1
+ import type { SharedValue } from "react-native-reanimated";
2
2
  import { type AnimationStoreMap } from "../../stores/animation.store";
3
3
  import type { TransitionSpec } from "../../types/animation.types";
4
4
  interface AnimateToProgressProps {
@@ -10,7 +10,6 @@ interface AnimateToProgressProps {
10
10
  */
11
11
  target: "open" | "close" | number;
12
12
  spec?: TransitionSpec;
13
- onAnimationFinish?: (finished: boolean) => void;
14
13
  animations: AnimationStoreMap;
15
14
  targetProgress: SharedValue<number>;
16
15
  animationProgress: SharedValue<number>;
@@ -24,6 +23,6 @@ export declare const resolveAnimationProgressRange: (currentProgress: number, ta
24
23
  from: number;
25
24
  to: number;
26
25
  };
27
- export declare const animateToProgress: ({ target, spec, onAnimationFinish, animations, targetProgress, animationProgress, emitWillAnimate, markEntering, initialVelocity, isDragging, }: AnimateToProgressProps) => void;
26
+ export declare const animateToProgress: ({ target, spec, animations, targetProgress, animationProgress, emitWillAnimate, markEntering, initialVelocity, isDragging, }: AnimateToProgressProps) => void;
28
27
  export {};
29
28
  //# sourceMappingURL=animate-to-progress.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"animate-to-progress.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/animation/animate-to-progress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEpE,OAAO,EACN,KAAK,iBAAiB,EAEtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,UAAU,sBAAsB;IAC/B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACjC;AAsBD,eAAO,MAAM,6BAA6B,GACzC,iBAAiB,MAAM,EACvB,gBAAgB,MAAM;;;CAOtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,iJAW/B,sBAAsB,SAoHxB,CAAC"}
1
+ {"version":3,"file":"animate-to-progress.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/animation/animate-to-progress.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EACN,KAAK,iBAAiB,EAEtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,UAAU,sBAAsB;IAC/B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACjC;AAsBD,eAAO,MAAM,6BAA6B,GACzC,iBAAiB,MAAM,EACvB,gBAAgB,MAAM;;;CAOtB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,8HAU/B,sBAAsB,SAiGxB,CAAC"}
@@ -14,6 +14,10 @@
14
14
  * - `children`: passed-through children keep their identity across
15
15
  * provider-local renders. Factories that wrap children should use a
16
16
  * module-level memoized component for the wrapper.
17
+ *
18
+ * Providers created with `global: true` return a `key` from their factory.
19
+ * Their generated store hook accepts that key to subscribe to the original
20
+ * provider store from outside its React context.
17
21
  */
18
22
  import { type ReactNode } from "react";
19
23
  type ProviderSnapshot<ContextValue, Guarded extends boolean> = Guarded extends true ? ContextValue : ContextValue | null;
@@ -22,6 +26,20 @@ type ProviderStoreHook<ContextValue, Guarded extends boolean> = {
22
26
  (): ProviderSnapshot<ContextValue, Guarded>;
23
27
  <Selected>(selector: ProviderSelector<ContextValue, Guarded, Selected>): Selected;
24
28
  };
29
+ type GlobalProviderStoreHook<ContextValue> = {
30
+ (key: string): ContextValue | null;
31
+ <Selected>(key: string, selector: (value: ContextValue) => Selected): Selected | null;
32
+ };
33
+ type ResolvedProviderStoreHook<ContextValue, Guarded extends boolean, Global extends boolean> = ProviderStoreHook<ContextValue, Guarded> & (Global extends true ? GlobalProviderStoreHook<ContextValue> : unknown);
34
+ type ProviderFactoryResult<ContextValue, Global extends boolean> = {
35
+ value?: ContextValue;
36
+ enabled?: boolean;
37
+ children?: ReactNode;
38
+ } & (Global extends true ? {
39
+ key: string;
40
+ } : {
41
+ key?: never;
42
+ });
25
43
  export type ProviderFactoryInternals<ContextValue> = {
26
44
  useParentStore: ProviderStoreHook<ContextValue, false>;
27
45
  };
@@ -29,12 +47,9 @@ export interface ProviderStoreApi<ContextValue> {
29
47
  getSnapshot: () => ContextValue | null;
30
48
  subscribe: (listener: () => void) => () => void;
31
49
  }
32
- export default function createProvider<ProviderName extends string, Guarded extends boolean = true>(name: ProviderName, options?: {
50
+ export default function createProvider<ProviderName extends string, Guarded extends boolean = true, Global extends boolean = false>(name: ProviderName, options?: {
33
51
  guarded?: Guarded;
34
- }): <ProviderProps extends object, ContextValue>(factory: (props: ProviderProps, internals: ProviderFactoryInternals<ContextValue>) => {
35
- value?: ContextValue;
36
- enabled?: boolean;
37
- children?: ReactNode;
38
- }) => { [P in ProviderName as `${P}Provider`]: React.FC<ProviderProps>; } & { [P in ProviderName as `use${P}Store`]: ProviderStoreHook<ContextValue, Guarded>; };
52
+ global?: Global;
53
+ }): <ProviderProps extends object, ContextValue>(factory: (props: ProviderProps, internals: ProviderFactoryInternals<ContextValue>) => ProviderFactoryResult<ContextValue, Global>) => { [P in ProviderName as `${P}Provider`]: React.FC<ProviderProps>; } & { [P in ProviderName as `use${P}Store`]: ResolvedProviderStoreHook<ContextValue, Guarded, Global>; };
39
54
  export {};
40
55
  //# sourceMappingURL=create-provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/create-provider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAEN,KAAK,SAAS,EAMd,MAAM,OAAO,CAAC;AAEf,KAAK,gBAAgB,CACpB,YAAY,EACZ,OAAO,SAAS,OAAO,IACpB,OAAO,SAAS,IAAI,GAAG,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC;AAE9D,KAAK,gBAAgB,CAAC,YAAY,EAAE,OAAO,SAAS,OAAO,EAAE,QAAQ,IAAI,CACxE,KAAK,EAAE,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,KAC1C,QAAQ,CAAC;AAEd,KAAK,iBAAiB,CAAC,YAAY,EAAE,OAAO,SAAS,OAAO,IAAI;IAC/D,IAAI,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,QAAQ,EACR,QAAQ,EAAE,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,GACzD,QAAQ,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,YAAY,IAAI;IACpD,cAAc,EAAE,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,WAAW,gBAAgB,CAAC,YAAY;IAC7C,WAAW,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAChD;AA+ED,MAAM,CAAC,OAAO,UAAU,cAAc,CACrC,YAAY,SAAS,MAAM,EAC3B,OAAO,SAAS,OAAO,GAAG,IAAI,EAC7B,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,IAC5C,aAAa,SAAS,MAAM,EAAE,YAAY,EACjD,SAAS,CACR,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,wBAAwB,CAAC,YAAY,CAAC,KAC7C;IACJ,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB,KAmGI,GACH,CAAC,IAAI,YAAY,IAAI,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAC9D,GAAG,GACF,CAAC,IAAI,YAAY,IAAI,MAAM,CAAC,OAAO,GAAG,iBAAiB,CACvD,YAAY,EACZ,OAAO,CACP,GACD,CAEF"}
1
+ {"version":3,"file":"create-provider.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/create-provider.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAEN,KAAK,SAAS,EAMd,MAAM,OAAO,CAAC;AAEf,KAAK,gBAAgB,CACpB,YAAY,EACZ,OAAO,SAAS,OAAO,IACpB,OAAO,SAAS,IAAI,GAAG,YAAY,GAAG,YAAY,GAAG,IAAI,CAAC;AAE9D,KAAK,gBAAgB,CAAC,YAAY,EAAE,OAAO,SAAS,OAAO,EAAE,QAAQ,IAAI,CACxE,KAAK,EAAE,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,KAC1C,QAAQ,CAAC;AAEd,KAAK,iBAAiB,CAAC,YAAY,EAAE,OAAO,SAAS,OAAO,IAAI;IAC/D,IAAI,gBAAgB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC,QAAQ,EACR,QAAQ,EAAE,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,GACzD,QAAQ,CAAC;CACZ,CAAC;AAEF,KAAK,uBAAuB,CAAC,YAAY,IAAI;IAC5C,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IACnC,CAAC,QAAQ,EACR,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,QAAQ,GACzC,QAAQ,GAAG,IAAI,CAAC;CACnB,CAAC;AAEF,KAAK,yBAAyB,CAC7B,YAAY,EACZ,OAAO,SAAS,OAAO,EACvB,MAAM,SAAS,OAAO,IACnB,iBAAiB,CAAC,YAAY,EAAE,OAAO,CAAC,GAC3C,CAAC,MAAM,SAAS,IAAI,GAAG,uBAAuB,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,CAAC;AAEzE,KAAK,qBAAqB,CAAC,YAAY,EAAE,MAAM,SAAS,OAAO,IAAI;IAClE,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB,GAAG,CAAC,MAAM,SAAS,IAAI,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,GAAG,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,CAAC;AAE9D,MAAM,MAAM,wBAAwB,CAAC,YAAY,IAAI;IACpD,cAAc,EAAE,iBAAiB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;CACvD,CAAC;AAEF,MAAM,WAAW,gBAAgB,CAAC,YAAY;IAC7C,WAAW,EAAE,MAAM,YAAY,GAAG,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,MAAM,IAAI,CAAC;CAChD;AAuJD,MAAM,CAAC,OAAO,UAAU,cAAc,CACrC,YAAY,SAAS,MAAM,EAC3B,OAAO,SAAS,OAAO,GAAG,IAAI,EAC9B,MAAM,SAAS,OAAO,GAAG,KAAK,EAC7B,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,IAC7D,aAAa,SAAS,MAAM,EAAE,YAAY,EACjD,SAAS,CACR,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,wBAAwB,CAAC,YAAY,CAAC,KAC7C,qBAAqB,CAAC,YAAY,EAAE,MAAM,CAAC,KA8M3C,GACH,CAAC,IAAI,YAAY,IAAI,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,GAC9D,GAAG,GACF,CAAC,IAAI,YAAY,IAAI,MAAM,CAAC,OAAO,GAAG,yBAAyB,CAC/D,YAAY,EACZ,OAAO,EACP,MAAM,CACN,GACD,CAEF"}
@@ -0,0 +1,4 @@
1
+ export declare const isCloseActionReplay: (action: unknown) => boolean;
2
+ /** Carries the terminal-removal bypass through React Navigation's action clones. */
3
+ export declare const dispatchCloseAction: <TAction extends object>(action: TAction, dispatch: (action: TAction) => void) => void;
4
+ //# sourceMappingURL=close-action-replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close-action-replay.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/navigation/close-action-replay.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mBAAmB,GAAI,QAAQ,OAAO,KAAG,OAGM,CAAC;AAE7D,oFAAoF;AACpF,eAAO,MAAM,mBAAmB,GAAI,OAAO,SAAS,MAAM,EACzD,QAAQ,OAAO,EACf,UAAU,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,SAUnC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-screen-transitions",
3
- "version": "3.11.2",
3
+ "version": "3.12.0",
4
4
  "description": "Easy screen transitions for React Native and Expo",
5
5
  "author": "Ed",
6
6
  "license": "MIT",
@@ -80,13 +80,10 @@ const StackViewContent = memo(function StackViewContent() {
80
80
  const routeKeys = useBlankStackStore(
81
81
  (store) => store?.routeKeys ?? EMPTY_ROUTE_KEYS,
82
82
  );
83
- const shouldShowFloatOverlay = useBlankStackStore(
84
- (store) => store?.shouldShowFloatOverlay ?? false,
85
- );
86
83
 
87
84
  return (
88
85
  <PortalProvider>
89
- {shouldShowFloatOverlay ? <Overlay.Float /> : null}
86
+ <Overlay.Float />
90
87
 
91
88
  <ActivityContainer>
92
89
  {routeKeys.map((routeKey) => (
@@ -98,8 +98,14 @@ export interface BlankStackFactoryOptions {
98
98
  * Props passed to overlay components in blank-stack.
99
99
  * Uses the shared OverlayProps type with blank-stack's navigation type.
100
100
  */
101
- export type BlankStackOverlayProps = OverlayProps<
102
- BlankStackNavigationProp<ParamListBase>
101
+ export type BlankStackOverlayProps<
102
+ ParamList extends ParamListBase = ParamListBase,
103
+ RouteName extends keyof ParamList = keyof ParamList,
104
+ NavigatorID extends string | undefined = undefined,
105
+ > = OverlayProps<
106
+ BlankStackNavigationProp<ParamList, RouteName, NavigatorID>,
107
+ ParamList,
108
+ RouteName
103
109
  >;
104
110
 
105
111
  export type BlankStackNavigationOptions = ScreenTransitionConfig & {
@@ -54,13 +54,10 @@ const StackViewContent = memo(function StackViewContent() {
54
54
  const routeKeys = useBlankStackStore(
55
55
  (store) => store?.routeKeys ?? EMPTY_ROUTE_KEYS,
56
56
  );
57
- const shouldShowFloatOverlay = useBlankStackStore(
58
- (store) => store?.shouldShowFloatOverlay ?? false,
59
- );
60
57
 
61
58
  return (
62
59
  <Fragment>
63
- {shouldShowFloatOverlay ? <Overlay.Float /> : null}
60
+ <Overlay.Float />
64
61
 
65
62
  {routeKeys.map((routeKey) => (
66
63
  <ComponentSceneRow key={routeKey} routeKey={routeKey} />
@@ -74,8 +74,14 @@ type ComponentStackNavigationConfig = {};
74
74
  *
75
75
  * @deprecated Component stack is deprecated. Use blank stack instead.
76
76
  */
77
- export type ComponentStackOverlayProps = OverlayProps<
78
- ComponentStackNavigationProp<ParamListBase>
77
+ export type ComponentStackOverlayProps<
78
+ ParamList extends ParamListBase = ParamListBase,
79
+ RouteName extends keyof ParamList = keyof ParamList,
80
+ NavigatorID extends string | undefined = undefined,
81
+ > = OverlayProps<
82
+ ComponentStackNavigationProp<ParamList, RouteName, NavigatorID>,
83
+ ParamList,
84
+ RouteName
79
85
  >;
80
86
 
81
87
  type ComponentStackScreenTransitionConfig = ScreenTransitionConfig & {
@@ -154,8 +154,14 @@ export type NativeStackHeaderLeftProps = NativeStackHeaderRightProps & {
154
154
  * Props passed to overlay components in native-stack.
155
155
  * Uses the shared OverlayProps type with native-stack's navigation type.
156
156
  */
157
- export type NativeStackOverlayProps = OverlayProps<
158
- NativeStackNavigationProp<ParamListBase>
157
+ export type NativeStackOverlayProps<
158
+ ParamList extends ParamListBase = ParamListBase,
159
+ RouteName extends keyof ParamList = keyof ParamList,
160
+ NavigatorID extends string | undefined = undefined,
161
+ > = OverlayProps<
162
+ NativeStackNavigationProp<ParamList, RouteName, NavigatorID>,
163
+ ParamList,
164
+ RouteName
159
165
  >;
160
166
 
161
167
  /**
@@ -309,7 +309,9 @@ const SceneView = ({
309
309
  ? // This prop enables handling of system back gestures on Android
310
310
  // Since we handle them in JS side, we disable this
311
311
  false
312
- : nativeGestureEnabled
312
+ : enableTransitions
313
+ ? false
314
+ : nativeGestureEnabled
313
315
  }
314
316
  homeIndicatorHidden={autoHideHomeIndicator}
315
317
  hideKeyboardOnSwipe={keyboardHandlingEnabled}
@@ -480,14 +482,8 @@ const SceneView = ({
480
482
  };
481
483
 
482
484
  function NativeStackViewContent() {
483
- const {
484
- state,
485
- navigation,
486
- descriptors,
487
- scenes,
488
- focusedIndex,
489
- shouldShowFloatOverlay,
490
- } = useDirectStackStore();
485
+ const { state, navigation, descriptors, scenes, focusedIndex } =
486
+ useDirectStackStore();
491
487
  const { setNextDismissedKey } = useDismissedRouteError(state);
492
488
 
493
489
  useInvalidPreventRemoveError(descriptors);
@@ -496,7 +492,7 @@ function NativeStackViewContent() {
496
492
 
497
493
  return (
498
494
  <>
499
- {shouldShowFloatOverlay ? <Overlay.Float /> : null}
495
+ <Overlay.Float />
500
496
  <ScreenStack style={styles.container}>
501
497
  {scenes.map((scene, index) => {
502
498
  const { route, descriptor, isPreloaded } = scene;
@@ -182,7 +182,7 @@ function ScreenTransitionsStackContent({
182
182
  return (
183
183
  <ScreenTransitionsAdapterProvider value={adapterContextValue}>
184
184
  <StackProvider value={stackContextValue}>
185
- {transitionState.shouldShowFloatOverlay ? <Overlay.Float /> : null}
185
+ <Overlay.Float />
186
186
  {children}
187
187
  </StackProvider>
188
188
  </ScreenTransitionsAdapterProvider>
@@ -0,0 +1,53 @@
1
+ import { memo } from "react";
2
+ import type { View } from "react-native";
3
+ import type { AnimatedRef } from "react-native-reanimated";
4
+ import { useDescriptorsStore } from "../../../providers/screen/descriptors";
5
+ import type { BoundTag } from "../../../stores/bounds/types";
6
+ import { useBoundaryMeasurement } from "../hooks/use-boundary-measurement";
7
+ import type {
8
+ BoundaryConfigProps,
9
+ BoundaryLocalMeasurementValue,
10
+ } from "../types";
11
+
12
+ interface BoundaryLifecycleProps {
13
+ boundTag: BoundTag;
14
+ config: BoundaryConfigProps;
15
+ currentScreenKey: string;
16
+ enabled: boolean;
17
+ escapeClipping: boolean;
18
+ handoff: boolean;
19
+ localMeasurement: BoundaryLocalMeasurementValue;
20
+ measuredRef: AnimatedRef<View>;
21
+ style?: unknown;
22
+ }
23
+
24
+ export const BoundaryLifecycle = memo(function BoundaryLifecycle({
25
+ boundTag,
26
+ config,
27
+ currentScreenKey,
28
+ enabled,
29
+ escapeClipping,
30
+ handoff,
31
+ localMeasurement,
32
+ measuredRef,
33
+ style,
34
+ }: BoundaryLifecycleProps) {
35
+ const hasConfiguredInterpolator = useDescriptorsStore(
36
+ (s) => s.derivations.hasConfiguredInterpolator,
37
+ );
38
+
39
+ useBoundaryMeasurement({
40
+ boundTag,
41
+ enabled,
42
+ runtimeEnabled: enabled && hasConfiguredInterpolator,
43
+ currentScreenKey,
44
+ measuredRef,
45
+ style,
46
+ handoff,
47
+ escapeClipping,
48
+ localMeasurement,
49
+ config,
50
+ });
51
+
52
+ return null;
53
+ });
@@ -39,14 +39,12 @@ const MAX_HANDSHAKE_RETRIES = 20;
39
39
  interface UseInitialDestinationMeasurementParams {
40
40
  boundTag: BoundTag;
41
41
  enabled: boolean;
42
- escapeClipping: boolean;
43
42
  measureBoundary: MeasureBoundary;
44
43
  }
45
44
 
46
45
  export const useInitialDestinationMeasurement = ({
47
46
  boundTag,
48
47
  enabled,
49
- escapeClipping,
50
48
  measureBoundary,
51
49
  }: UseInitialDestinationMeasurementParams) => {
52
50
  const { tag, linkKey, group } = boundTag;
@@ -142,18 +140,12 @@ export const useInitialDestinationMeasurement = ({
142
140
  runOnUI(claimLifecycleStartBlock)();
143
141
 
144
142
  return () => {
145
- if (escapeClipping) {
146
- // The portal host owns the release after this boundary hands off.
147
- return;
148
- }
149
-
150
143
  // This is an abandonment fallback, not a second release. Run it on the UI
151
144
  // runtime so it serializes with the handshake's guarded release.
152
145
  runOnUI(releaseLifecycleStartBlock)();
153
146
  };
154
147
  }, [
155
148
  claimLifecycleStartBlock,
156
- escapeClipping,
157
149
  canReceiveDestination,
158
150
  releaseLifecycleStartBlock,
159
151
  ]);
@@ -247,12 +239,6 @@ export const useInitialDestinationMeasurement = ({
247
239
  cancelAnimation(retryToken);
248
240
  handshakeRetries.set(0);
249
241
  hasFinishedInitialMeasurement.set(1);
250
- if (escapeClipping) {
251
- // Screen-level escape has a second readiness phase after destination
252
- // matching: the host must commit before the transition starts, or
253
- // the payload can disappear for a frame.
254
- return;
255
- }
256
242
  releaseLifecycleStartBlock();
257
243
  return;
258
244
  }
@@ -33,14 +33,24 @@ export const useRefreshBoundary = ({
33
33
  refreshScreenKey,
34
34
  "willAnimate",
35
35
  );
36
+ const refreshSettled = AnimationStore.getValue(
37
+ refreshScreenKey,
38
+ "progressSettled",
39
+ );
36
40
  const refreshClosing = AnimationStore.getValue(refreshScreenKey, "closing");
37
41
 
38
42
  useAnimatedReaction(
39
43
  () => {
40
44
  "worklet";
41
45
 
42
- const shouldRefresh = enabled && !!refreshWillAnimate.get();
43
- if (!shouldRefresh) {
46
+ if (!enabled) return null;
47
+
48
+ const shouldRefresh = !!refreshWillAnimate.get();
49
+ const settled = !!refreshSettled.get();
50
+ // A group's active member can change while the transition is settled
51
+ // (for example, paging a destination gallery). Let that member publish
52
+ // fresh bounds even though there is no willAnimate lifecycle pulse yet.
53
+ if (!shouldRefresh && (!group || !settled)) {
44
54
  return null;
45
55
  }
46
56
  const sourcePairKey =
@@ -56,6 +66,7 @@ export const useRefreshBoundary = ({
56
66
  linkId: linkKey,
57
67
  group,
58
68
  shouldRefresh,
69
+ settled,
59
70
  closing: !!refreshClosing.get(),
60
71
  linkState: pairs.get(),
61
72
  });
@@ -3,7 +3,10 @@ import type { View } from "react-native";
3
3
  import type { AnimatedRef } from "react-native-reanimated";
4
4
  import type { BoundTag } from "../../../stores/bounds/types";
5
5
  import { prepareStyleForBounds } from "../../../utils/bounds/helpers/styles/styles";
6
- import type { BoundaryConfigProps } from "../types";
6
+ import type {
7
+ BoundaryConfigProps,
8
+ BoundaryLocalMeasurementValue,
9
+ } from "../types";
7
10
  import { useBoundaryPresence } from "./lifecycles/use-boundary-presence";
8
11
  import { useInitialDestinationMeasurement } from "./lifecycles/use-initial-destination-measurement";
9
12
  import { useInitialSourceMeasurement } from "./lifecycles/use-initial-source-measurement";
@@ -23,6 +26,7 @@ interface UseBoundaryMeasurementParams {
23
26
  style?: unknown;
24
27
  handoff: boolean;
25
28
  escapeClipping: boolean;
29
+ localMeasurement: BoundaryLocalMeasurementValue;
26
30
  config: BoundaryConfigProps;
27
31
  }
28
32
 
@@ -40,6 +44,7 @@ export const useBoundaryMeasurement = ({
40
44
  style,
41
45
  handoff,
42
46
  escapeClipping,
47
+ localMeasurement,
43
48
  config,
44
49
  }: UseBoundaryMeasurementParams) => {
45
50
  const { anchor, scaleMode, target, method } = config;
@@ -58,6 +63,7 @@ export const useBoundaryMeasurement = ({
58
63
  measuredAnimatedRef: measuredRef,
59
64
  handoff,
60
65
  escapeClipping,
66
+ localMeasurement,
61
67
  });
62
68
 
63
69
  // Presence and source capture must not depend on this screen owning an
@@ -81,7 +87,6 @@ export const useBoundaryMeasurement = ({
81
87
  useInitialDestinationMeasurement({
82
88
  boundTag,
83
89
  enabled: runtimeEnabled,
84
- escapeClipping,
85
90
  measureBoundary,
86
91
  });
87
92
 
@@ -8,7 +8,7 @@ import type { BoundTag } from "../../../stores/bounds/types";
8
8
  import { ScrollStore } from "../../../stores/scroll.store";
9
9
  import { SystemStore } from "../../../stores/system.store";
10
10
  import { getVisibilityBlockOffset } from "../../../utils/visibility-block-offset";
11
- import type { MeasureBoundary } from "../types";
11
+ import type { BoundaryLocalMeasurementValue, MeasureBoundary } from "../types";
12
12
  import {
13
13
  attachScrollSnapshotToMeasuredBounds,
14
14
  correctMeasuredBoundsForVisibilityGate,
@@ -24,6 +24,7 @@ interface UseMeasurerParams {
24
24
  measuredAnimatedRef: AnimatedRef<View>;
25
25
  handoff: boolean;
26
26
  escapeClipping: boolean;
27
+ localMeasurement: BoundaryLocalMeasurementValue;
27
28
  }
28
29
 
29
30
  export const useMeasurer = ({
@@ -34,6 +35,7 @@ export const useMeasurer = ({
34
35
  measuredAnimatedRef,
35
36
  handoff,
36
37
  escapeClipping,
38
+ localMeasurement,
37
39
  }: UseMeasurerParams): MeasureBoundary => {
38
40
  const { width: viewportWidth, height: viewportHeight } =
39
41
  useWindowDimensions();
@@ -66,6 +68,13 @@ export const useMeasurer = ({
66
68
  viewportHeight,
67
69
  });
68
70
 
71
+ if (escapeClipping && target.type === "source") {
72
+ localMeasurement.set({
73
+ bounds: measured,
74
+ pairKey: target.pairKey,
75
+ });
76
+ }
77
+
69
78
  /**
70
79
  * - Destination Pass -
71
80
  * Be strict while lifecycle start is blocked for destination capture.
@@ -112,6 +121,7 @@ export const useMeasurer = ({
112
121
  measuredAnimatedRef,
113
122
  handoff,
114
123
  escapeClipping,
124
+ localMeasurement,
115
125
  viewportWidth,
116
126
  viewportHeight,
117
127
  scrollState,
@@ -24,12 +24,17 @@ interface UseBoundaryContentPortalAttachmentParams {
24
24
  export const useBoundaryContentPortalAttachment = ({
25
25
  boundaryId,
26
26
  }: UseBoundaryContentPortalAttachmentParams) => {
27
- const { nextInterpolatorReady, slotsMap } = useScreenSlots();
27
+ const { slotsMap } = useScreenSlots();
28
28
 
29
29
  const currentScreenKey = useDescriptorsStore(
30
30
  (s) => s.derivations.currentScreenKey,
31
31
  );
32
+ const nextScreenKey = useDescriptorsStore((s) => s.derivations.nextScreenKey);
32
33
  const sourcePairKey = useDescriptorsStore((s) => s.derivations.sourcePairKey);
34
+ const destinationSlots = useScreenSlots(nextScreenKey ?? currentScreenKey);
35
+ const unavailableInterpolatorReady = useSharedValue(0);
36
+ const interpolatorReady =
37
+ destinationSlots?.interpolatorReady ?? unavailableInterpolatorReady;
33
38
 
34
39
  const activeReceiverScreenKey = useStack(resolveActiveHandoffReceiver);
35
40
  const previousReceiverScreenKey = useStack(resolvePreviousHandoffReceiver);
@@ -85,7 +90,7 @@ export const useBoundaryContentPortalAttachment = ({
85
90
  ? link.destination.screenKey
86
91
  : null;
87
92
 
88
- const interpolatorReady = nextInterpolatorReady.get();
93
+ const isInterpolatorReady = interpolatorReady.get();
89
94
  const attachedScreenKey = attachedReceiverScreenKey.get();
90
95
 
91
96
  const nextReceiverScreenKey = resolveHandoffAttachmentCandidate({
@@ -93,7 +98,7 @@ export const useBoundaryContentPortalAttachment = ({
93
98
  activeReceiverScreenKey,
94
99
  attachedReceiverScreenKey: attachedScreenKey,
95
100
  hasActiveCloseFinished,
96
- interpolatorReady: !!interpolatorReady,
101
+ interpolatorReady: !!isInterpolatorReady,
97
102
  pairChangedDuringClose,
98
103
  pairDestinationScreenKey: pairDestination,
99
104
  previousReceiverScreenKey,
@@ -110,7 +115,7 @@ export const useBoundaryContentPortalAttachment = ({
110
115
 
111
116
  const activatingPairDestination =
112
117
  !!pairDestination &&
113
- !!interpolatorReady &&
118
+ !!isInterpolatorReady &&
114
119
  nextReceiverScreenKey === pairDestination;
115
120
 
116
121
  const canActivateReceiver =