react-native-screen-transitions 4.0.0-alpha.8 → 4.0.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 (308) hide show
  1. package/README.md +6 -11
  2. package/lib/commonjs/components/boundary/create-boundary-component.js +5 -1
  3. package/lib/commonjs/components/boundary/create-boundary-component.js.map +1 -1
  4. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js +53 -1
  5. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js.map +1 -1
  6. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +43 -8
  7. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  8. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +2 -3
  9. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  10. package/lib/commonjs/components/boundary/portal/teleport.js +1 -13
  11. package/lib/commonjs/components/boundary/portal/teleport.js.map +1 -1
  12. package/lib/commonjs/components/boundary/utils/source-signals.js +6 -4
  13. package/lib/commonjs/components/boundary/utils/source-signals.js.map +1 -1
  14. package/lib/commonjs/components/overlay/helpers/get-active-overlay.js +3 -24
  15. package/lib/commonjs/components/overlay/helpers/get-active-overlay.js.map +1 -1
  16. package/lib/commonjs/components/overlay/helpers/retain-ready-overlay-resources.js +4 -3
  17. package/lib/commonjs/components/overlay/helpers/retain-ready-overlay-resources.js.map +1 -1
  18. package/lib/commonjs/components/overlay/hooks/use-overlay-slot.js +1 -2
  19. package/lib/commonjs/components/overlay/hooks/use-overlay-slot.js.map +1 -1
  20. package/lib/commonjs/components/overlay/variations/float-overlay.js +0 -2
  21. package/lib/commonjs/components/overlay/variations/float-overlay.js.map +1 -1
  22. package/lib/commonjs/components/overlay/variations/overlay-host.js +18 -15
  23. package/lib/commonjs/components/overlay/variations/overlay-host.js.map +1 -1
  24. package/lib/commonjs/components/screen-container/layers/content.js +10 -5
  25. package/lib/commonjs/components/screen-container/layers/content.js.map +1 -1
  26. package/lib/commonjs/components/screen-container/layers/surface.js +50 -0
  27. package/lib/commonjs/components/screen-container/layers/surface.js.map +1 -0
  28. package/lib/commonjs/components/stack-view.js +7 -29
  29. package/lib/commonjs/components/stack-view.js.map +1 -1
  30. package/lib/commonjs/configs/index.js +1 -4
  31. package/lib/commonjs/configs/index.js.map +1 -1
  32. package/lib/commonjs/configs/presets.js +1 -384
  33. package/lib/commonjs/configs/presets.js.map +1 -1
  34. package/lib/commonjs/constants.js +2 -1
  35. package/lib/commonjs/constants.js.map +1 -1
  36. package/lib/commonjs/navigators/create-blank-stack-navigator.js +7 -67
  37. package/lib/commonjs/navigators/create-blank-stack-navigator.js.map +1 -1
  38. package/lib/commonjs/navigators/expo-router/index.js +1 -18
  39. package/lib/commonjs/navigators/expo-router/index.js.map +1 -1
  40. package/lib/commonjs/navigators/react-navigation/index.js +1 -3
  41. package/lib/commonjs/navigators/react-navigation/index.js.map +1 -1
  42. package/lib/commonjs/providers/screen/animation/animation.provider.js +6 -1
  43. package/lib/commonjs/providers/screen/animation/animation.provider.js.map +1 -1
  44. package/lib/commonjs/providers/screen/animation/helpers/build-screen-transition-options.js +1 -0
  45. package/lib/commonjs/providers/screen/animation/helpers/build-screen-transition-options.js.map +1 -1
  46. package/lib/commonjs/providers/screen/animation/helpers/hydrate-transition-state/gesture-progress.js +20 -5
  47. package/lib/commonjs/providers/screen/animation/helpers/hydrate-transition-state/gesture-progress.js.map +1 -1
  48. package/lib/commonjs/providers/screen/animation/helpers/hydrate-transition-state/index.js +16 -1
  49. package/lib/commonjs/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  50. package/lib/commonjs/providers/screen/animation/helpers/selected-interpolator-options.js +1 -1
  51. package/lib/commonjs/providers/screen/animation/helpers/selected-interpolator-options.js.map +1 -1
  52. package/lib/commonjs/providers/screen/animation/use-screen-animation.js +1 -8
  53. package/lib/commonjs/providers/screen/animation/use-screen-animation.js.map +1 -1
  54. package/lib/commonjs/providers/screen/gestures/pan/behavior/pan-release.js +28 -6
  55. package/lib/commonjs/providers/screen/gestures/pan/behavior/pan-release.js.map +1 -1
  56. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-release.js +26 -6
  57. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-release.js.map +1 -1
  58. package/lib/commonjs/providers/screen/gestures/shared/policy.js +1 -0
  59. package/lib/commonjs/providers/screen/gestures/shared/policy.js.map +1 -1
  60. package/lib/commonjs/providers/screen/gestures/shared/snap-points.js +71 -1
  61. package/lib/commonjs/providers/screen/gestures/shared/snap-points.js.map +1 -1
  62. package/lib/commonjs/providers/screen/options/helpers.js +8 -1
  63. package/lib/commonjs/providers/screen/options/helpers.js.map +1 -1
  64. package/lib/commonjs/providers/screen/styles/constants.js +4 -1
  65. package/lib/commonjs/providers/screen/styles/constants.js.map +1 -1
  66. package/lib/commonjs/providers/screen/styles/hooks/slot-resolvers.js +1 -9
  67. package/lib/commonjs/providers/screen/styles/hooks/slot-resolvers.js.map +1 -1
  68. package/lib/commonjs/providers/screen/styles/slot.provider.js +3 -1
  69. package/lib/commonjs/providers/screen/styles/slot.provider.js.map +1 -1
  70. package/lib/commonjs/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js +10 -4
  71. package/lib/commonjs/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js.map +1 -1
  72. package/lib/commonjs/providers/stack/blank-stack-state/helpers/derive-blank-stack-state.js +4 -3
  73. package/lib/commonjs/providers/stack/blank-stack-state/helpers/derive-blank-stack-state.js.map +1 -1
  74. package/lib/commonjs/providers/stack/blank-stack-state/helpers/reconcile-blank-stack-routes.js.map +1 -1
  75. package/lib/commonjs/providers/stack/blank-stack-state/helpers/state-equality.js +9 -2
  76. package/lib/commonjs/providers/stack/blank-stack-state/helpers/state-equality.js.map +1 -1
  77. package/lib/commonjs/utils/create-provider.js +14 -3
  78. package/lib/commonjs/utils/create-provider.js.map +1 -1
  79. package/lib/module/components/boundary/create-boundary-component.js +6 -2
  80. package/lib/module/components/boundary/create-boundary-component.js.map +1 -1
  81. package/lib/module/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js +50 -0
  82. package/lib/module/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js.map +1 -1
  83. package/lib/module/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +44 -9
  84. package/lib/module/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  85. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +2 -3
  86. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  87. package/lib/module/components/boundary/portal/teleport.js +1 -14
  88. package/lib/module/components/boundary/portal/teleport.js.map +1 -1
  89. package/lib/module/components/boundary/utils/source-signals.js +6 -4
  90. package/lib/module/components/boundary/utils/source-signals.js.map +1 -1
  91. package/lib/module/components/overlay/helpers/get-active-overlay.js +3 -24
  92. package/lib/module/components/overlay/helpers/get-active-overlay.js.map +1 -1
  93. package/lib/module/components/overlay/helpers/retain-ready-overlay-resources.js +4 -3
  94. package/lib/module/components/overlay/helpers/retain-ready-overlay-resources.js.map +1 -1
  95. package/lib/module/components/overlay/hooks/use-overlay-slot.js +1 -2
  96. package/lib/module/components/overlay/hooks/use-overlay-slot.js.map +1 -1
  97. package/lib/module/components/overlay/variations/float-overlay.js +0 -2
  98. package/lib/module/components/overlay/variations/float-overlay.js.map +1 -1
  99. package/lib/module/components/overlay/variations/overlay-host.js +19 -16
  100. package/lib/module/components/overlay/variations/overlay-host.js.map +1 -1
  101. package/lib/module/components/screen-container/layers/content.js +10 -5
  102. package/lib/module/components/screen-container/layers/content.js.map +1 -1
  103. package/lib/module/components/screen-container/layers/surface.js +45 -0
  104. package/lib/module/components/screen-container/layers/surface.js.map +1 -0
  105. package/lib/module/components/stack-view.js +7 -29
  106. package/lib/module/components/stack-view.js.map +1 -1
  107. package/lib/module/configs/index.js +2 -5
  108. package/lib/module/configs/index.js.map +1 -1
  109. package/lib/module/configs/presets.js +0 -380
  110. package/lib/module/configs/presets.js.map +1 -1
  111. package/lib/module/constants.js +1 -0
  112. package/lib/module/constants.js.map +1 -1
  113. package/lib/module/navigators/create-blank-stack-navigator.js +7 -66
  114. package/lib/module/navigators/create-blank-stack-navigator.js.map +1 -1
  115. package/lib/module/navigators/expo-router/index.js +1 -18
  116. package/lib/module/navigators/expo-router/index.js.map +1 -1
  117. package/lib/module/navigators/react-navigation/index.js +1 -3
  118. package/lib/module/navigators/react-navigation/index.js.map +1 -1
  119. package/lib/module/providers/screen/animation/animation.provider.js +4 -0
  120. package/lib/module/providers/screen/animation/animation.provider.js.map +1 -1
  121. package/lib/module/providers/screen/animation/helpers/build-screen-transition-options.js +1 -0
  122. package/lib/module/providers/screen/animation/helpers/build-screen-transition-options.js.map +1 -1
  123. package/lib/module/providers/screen/animation/helpers/hydrate-transition-state/gesture-progress.js +20 -5
  124. package/lib/module/providers/screen/animation/helpers/hydrate-transition-state/gesture-progress.js.map +1 -1
  125. package/lib/module/providers/screen/animation/helpers/hydrate-transition-state/index.js +16 -1
  126. package/lib/module/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  127. package/lib/module/providers/screen/animation/helpers/selected-interpolator-options.js +1 -1
  128. package/lib/module/providers/screen/animation/helpers/selected-interpolator-options.js.map +1 -1
  129. package/lib/module/providers/screen/animation/use-screen-animation.js +2 -9
  130. package/lib/module/providers/screen/animation/use-screen-animation.js.map +1 -1
  131. package/lib/module/providers/screen/gestures/pan/behavior/pan-release.js +29 -7
  132. package/lib/module/providers/screen/gestures/pan/behavior/pan-release.js.map +1 -1
  133. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-release.js +27 -7
  134. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-release.js.map +1 -1
  135. package/lib/module/providers/screen/gestures/shared/policy.js +2 -1
  136. package/lib/module/providers/screen/gestures/shared/policy.js.map +1 -1
  137. package/lib/module/providers/screen/gestures/shared/snap-points.js +66 -0
  138. package/lib/module/providers/screen/gestures/shared/snap-points.js.map +1 -1
  139. package/lib/module/providers/screen/options/helpers.js +9 -2
  140. package/lib/module/providers/screen/options/helpers.js.map +1 -1
  141. package/lib/module/providers/screen/styles/constants.js +4 -1
  142. package/lib/module/providers/screen/styles/constants.js.map +1 -1
  143. package/lib/module/providers/screen/styles/hooks/slot-resolvers.js +2 -10
  144. package/lib/module/providers/screen/styles/hooks/slot-resolvers.js.map +1 -1
  145. package/lib/module/providers/screen/styles/slot.provider.js +1 -0
  146. package/lib/module/providers/screen/styles/slot.provider.js.map +1 -1
  147. package/lib/module/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js +11 -5
  148. package/lib/module/providers/stack/blank-stack-state/helpers/build-blank-stack-state.js.map +1 -1
  149. package/lib/module/providers/stack/blank-stack-state/helpers/derive-blank-stack-state.js +5 -4
  150. package/lib/module/providers/stack/blank-stack-state/helpers/derive-blank-stack-state.js.map +1 -1
  151. package/lib/module/providers/stack/blank-stack-state/helpers/reconcile-blank-stack-routes.js.map +1 -1
  152. package/lib/module/providers/stack/blank-stack-state/helpers/state-equality.js +7 -1
  153. package/lib/module/providers/stack/blank-stack-state/helpers/state-equality.js.map +1 -1
  154. package/lib/module/types/animation.types.js +10 -0
  155. package/lib/module/types/animation.types.js.map +1 -1
  156. package/lib/module/utils/create-provider.js +14 -3
  157. package/lib/module/utils/create-provider.js.map +1 -1
  158. package/lib/typescript/components/boundary/create-boundary-component.d.ts.map +1 -1
  159. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.d.ts +20 -1
  160. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.d.ts.map +1 -1
  161. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts.map +1 -1
  162. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -1
  163. package/lib/typescript/components/boundary/portal/teleport.d.ts +1 -1
  164. package/lib/typescript/components/boundary/portal/teleport.d.ts.map +1 -1
  165. package/lib/typescript/components/boundary/utils/source-signals.d.ts.map +1 -1
  166. package/lib/typescript/components/overlay/helpers/get-active-overlay.d.ts +2 -8
  167. package/lib/typescript/components/overlay/helpers/get-active-overlay.d.ts.map +1 -1
  168. package/lib/typescript/components/overlay/helpers/retain-ready-overlay-resources.d.ts +2 -1
  169. package/lib/typescript/components/overlay/helpers/retain-ready-overlay-resources.d.ts.map +1 -1
  170. package/lib/typescript/components/overlay/hooks/use-overlay-slot.d.ts.map +1 -1
  171. package/lib/typescript/components/overlay/variations/float-overlay.d.ts.map +1 -1
  172. package/lib/typescript/components/overlay/variations/overlay-host.d.ts +2 -3
  173. package/lib/typescript/components/overlay/variations/overlay-host.d.ts.map +1 -1
  174. package/lib/typescript/components/screen-container/layers/content.d.ts.map +1 -1
  175. package/lib/typescript/components/screen-container/layers/surface.d.ts +7 -0
  176. package/lib/typescript/components/screen-container/layers/surface.d.ts.map +1 -0
  177. package/lib/typescript/components/stack-view.d.ts +1 -1
  178. package/lib/typescript/components/stack-view.d.ts.map +1 -1
  179. package/lib/typescript/configs/index.d.ts +0 -9
  180. package/lib/typescript/configs/index.d.ts.map +1 -1
  181. package/lib/typescript/configs/presets.d.ts +0 -9
  182. package/lib/typescript/configs/presets.d.ts.map +1 -1
  183. package/lib/typescript/constants.d.ts +2 -1
  184. package/lib/typescript/constants.d.ts.map +1 -1
  185. package/lib/typescript/index.d.ts +1 -10
  186. package/lib/typescript/index.d.ts.map +1 -1
  187. package/lib/typescript/navigators/create-blank-stack-navigator.d.ts +2 -4
  188. package/lib/typescript/navigators/create-blank-stack-navigator.d.ts.map +1 -1
  189. package/lib/typescript/navigators/expo-router/index.d.ts +3 -3
  190. package/lib/typescript/navigators/expo-router/index.d.ts.map +1 -1
  191. package/lib/typescript/navigators/react-navigation/index.d.ts +1 -1
  192. package/lib/typescript/navigators/react-navigation/index.d.ts.map +1 -1
  193. package/lib/typescript/providers/screen/animation/animation.provider.d.ts +10 -1
  194. package/lib/typescript/providers/screen/animation/animation.provider.d.ts.map +1 -1
  195. package/lib/typescript/providers/screen/animation/helpers/build-screen-transition-options.d.ts.map +1 -1
  196. package/lib/typescript/providers/screen/animation/helpers/hydrate-transition-state/gesture-progress.d.ts +2 -1
  197. package/lib/typescript/providers/screen/animation/helpers/hydrate-transition-state/gesture-progress.d.ts.map +1 -1
  198. package/lib/typescript/providers/screen/animation/helpers/hydrate-transition-state/index.d.ts.map +1 -1
  199. package/lib/typescript/providers/screen/animation/helpers/selected-interpolator-options.d.ts.map +1 -1
  200. package/lib/typescript/providers/screen/animation/use-screen-animation.d.ts.map +1 -1
  201. package/lib/typescript/providers/screen/gestures/pan/behavior/pan-release.d.ts.map +1 -1
  202. package/lib/typescript/providers/screen/gestures/pinch/behavior/pinch-release.d.ts.map +1 -1
  203. package/lib/typescript/providers/screen/gestures/shared/policy.d.ts +2 -1
  204. package/lib/typescript/providers/screen/gestures/shared/policy.d.ts.map +1 -1
  205. package/lib/typescript/providers/screen/gestures/shared/snap-points.d.ts +11 -0
  206. package/lib/typescript/providers/screen/gestures/shared/snap-points.d.ts.map +1 -1
  207. package/lib/typescript/providers/screen/gestures/types.d.ts +2 -0
  208. package/lib/typescript/providers/screen/gestures/types.d.ts.map +1 -1
  209. package/lib/typescript/providers/screen/options/helpers.d.ts.map +1 -1
  210. package/lib/typescript/providers/screen/options/types.d.ts +1 -0
  211. package/lib/typescript/providers/screen/options/types.d.ts.map +1 -1
  212. package/lib/typescript/providers/screen/styles/constants.d.ts.map +1 -1
  213. package/lib/typescript/providers/screen/styles/hooks/slot-resolvers.d.ts.map +1 -1
  214. package/lib/typescript/providers/screen/styles/slot.provider.d.ts +11 -2
  215. package/lib/typescript/providers/screen/styles/slot.provider.d.ts.map +1 -1
  216. package/lib/typescript/providers/stack/blank-stack-state/helpers/build-blank-stack-state.d.ts +3 -3
  217. package/lib/typescript/providers/stack/blank-stack-state/helpers/build-blank-stack-state.d.ts.map +1 -1
  218. package/lib/typescript/providers/stack/blank-stack-state/helpers/derive-blank-stack-state.d.ts.map +1 -1
  219. package/lib/typescript/providers/stack/blank-stack-state/helpers/reconcile-blank-stack-routes.d.ts +3 -2
  220. package/lib/typescript/providers/stack/blank-stack-state/helpers/reconcile-blank-stack-routes.d.ts.map +1 -1
  221. package/lib/typescript/providers/stack/blank-stack-state/helpers/state-equality.d.ts +4 -4
  222. package/lib/typescript/providers/stack/blank-stack-state/helpers/state-equality.d.ts.map +1 -1
  223. package/lib/typescript/providers/stack/blank-stack-state/helpers/types.d.ts +6 -5
  224. package/lib/typescript/providers/stack/blank-stack-state/helpers/types.d.ts.map +1 -1
  225. package/lib/typescript/providers/stack/blank-stack.provider.d.ts +3 -1
  226. package/lib/typescript/providers/stack/blank-stack.provider.d.ts.map +1 -1
  227. package/lib/typescript/types/animation.types.d.ts +16 -12
  228. package/lib/typescript/types/animation.types.d.ts.map +1 -1
  229. package/lib/typescript/types/blank-stack.types.d.ts +2 -23
  230. package/lib/typescript/types/blank-stack.types.d.ts.map +1 -1
  231. package/lib/typescript/types/index.d.ts +2 -2
  232. package/lib/typescript/types/index.d.ts.map +1 -1
  233. package/lib/typescript/types/providers/blank-stack-provider.types.d.ts +8 -6
  234. package/lib/typescript/types/providers/blank-stack-provider.types.d.ts.map +1 -1
  235. package/lib/typescript/types/screen.types.d.ts +50 -0
  236. package/lib/typescript/types/screen.types.d.ts.map +1 -1
  237. package/lib/typescript/utils/create-provider.d.ts +4 -1
  238. package/lib/typescript/utils/create-provider.d.ts.map +1 -1
  239. package/package.json +3 -8
  240. package/src/components/boundary/create-boundary-component.tsx +10 -2
  241. package/src/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.ts +89 -0
  242. package/src/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.ts +97 -14
  243. package/src/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +2 -6
  244. package/src/components/boundary/portal/teleport.ts +2 -23
  245. package/src/components/boundary/utils/source-signals.ts +6 -4
  246. package/src/components/overlay/helpers/get-active-overlay.ts +4 -36
  247. package/src/components/overlay/helpers/retain-ready-overlay-resources.ts +10 -1
  248. package/src/components/overlay/hooks/use-overlay-slot.ts +1 -5
  249. package/src/components/overlay/variations/float-overlay.tsx +9 -12
  250. package/src/components/overlay/variations/overlay-host.tsx +24 -22
  251. package/src/components/screen-container/layers/content.tsx +12 -7
  252. package/src/components/screen-container/layers/surface.tsx +65 -0
  253. package/src/components/stack-view.tsx +8 -39
  254. package/src/configs/index.ts +0 -6
  255. package/src/configs/presets.ts +0 -447
  256. package/src/constants.ts +2 -0
  257. package/src/index.ts +4 -1
  258. package/src/navigators/create-blank-stack-navigator.tsx +16 -124
  259. package/src/navigators/expo-router/index.tsx +0 -23
  260. package/src/navigators/react-navigation/index.tsx +0 -3
  261. package/src/providers/screen/animation/animation.provider.tsx +60 -54
  262. package/src/providers/screen/animation/helpers/build-screen-transition-options.ts +1 -0
  263. package/src/providers/screen/animation/helpers/hydrate-transition-state/gesture-progress.ts +26 -0
  264. package/src/providers/screen/animation/helpers/hydrate-transition-state/index.ts +20 -0
  265. package/src/providers/screen/animation/helpers/selected-interpolator-options.ts +1 -0
  266. package/src/providers/screen/animation/use-screen-animation.tsx +2 -14
  267. package/src/providers/screen/gestures/pan/behavior/pan-release.ts +46 -7
  268. package/src/providers/screen/gestures/pinch/behavior/pinch-release.ts +45 -4
  269. package/src/providers/screen/gestures/shared/policy.ts +4 -0
  270. package/src/providers/screen/gestures/shared/snap-points.ts +87 -0
  271. package/src/providers/screen/gestures/types.ts +2 -0
  272. package/src/providers/screen/options/helpers.ts +18 -0
  273. package/src/providers/screen/options/types.ts +1 -0
  274. package/src/providers/screen/styles/constants.ts +2 -1
  275. package/src/providers/screen/styles/hooks/slot-resolvers.tsx +2 -17
  276. package/src/providers/screen/styles/slot.provider.tsx +2 -1
  277. package/src/providers/stack/blank-stack-state/helpers/build-blank-stack-state.ts +30 -12
  278. package/src/providers/stack/blank-stack-state/helpers/derive-blank-stack-state.ts +11 -3
  279. package/src/providers/stack/blank-stack-state/helpers/reconcile-blank-stack-routes.ts +2 -2
  280. package/src/providers/stack/blank-stack-state/helpers/state-equality.ts +27 -16
  281. package/src/providers/stack/blank-stack-state/helpers/types.ts +9 -4
  282. package/src/types/animation.types.ts +16 -13
  283. package/src/types/blank-stack.types.ts +1 -29
  284. package/src/types/index.ts +4 -1
  285. package/src/types/providers/blank-stack-provider.types.ts +14 -11
  286. package/src/types/screen.types.ts +57 -0
  287. package/src/utils/create-provider.tsx +22 -4
  288. package/lib/commonjs/components/boundary/portal/utils/teleport-control.js +0 -16
  289. package/lib/commonjs/components/boundary/portal/utils/teleport-control.js.map +0 -1
  290. package/lib/commonjs/providers/navigation/navigation-host.provider.js +0 -56
  291. package/lib/commonjs/providers/navigation/navigation-host.provider.js.map +0 -1
  292. package/lib/commonjs/providers/navigation/react-navigation-host.js +0 -23
  293. package/lib/commonjs/providers/navigation/react-navigation-host.js.map +0 -1
  294. package/lib/module/components/boundary/portal/utils/teleport-control.js +0 -11
  295. package/lib/module/components/boundary/portal/utils/teleport-control.js.map +0 -1
  296. package/lib/module/providers/navigation/navigation-host.provider.js +0 -50
  297. package/lib/module/providers/navigation/navigation-host.provider.js.map +0 -1
  298. package/lib/module/providers/navigation/react-navigation-host.js +0 -19
  299. package/lib/module/providers/navigation/react-navigation-host.js.map +0 -1
  300. package/lib/typescript/components/boundary/portal/utils/teleport-control.d.ts +0 -3
  301. package/lib/typescript/components/boundary/portal/utils/teleport-control.d.ts.map +0 -1
  302. package/lib/typescript/providers/navigation/navigation-host.provider.d.ts +0 -21
  303. package/lib/typescript/providers/navigation/navigation-host.provider.d.ts.map +0 -1
  304. package/lib/typescript/providers/navigation/react-navigation-host.d.ts +0 -3
  305. package/lib/typescript/providers/navigation/react-navigation-host.d.ts.map +0 -1
  306. package/src/components/boundary/portal/utils/teleport-control.ts +0 -13
  307. package/src/providers/navigation/navigation-host.provider.tsx +0 -75
  308. package/src/providers/navigation/react-navigation-host.tsx +0 -24
@@ -4,6 +4,7 @@ import type { FloatOverlayEntry } from "./get-active-overlay";
4
4
 
5
5
  export type ReadyOverlayResources = {
6
6
  overlayAnimationStore: ScreenAnimationContextValue;
7
+ overlaySlots: ScreenSlotContextValue;
7
8
  driverScene: FloatOverlayEntry["scene"];
8
9
  driverAnimationStore: ScreenAnimationContextValue;
9
10
  driverSlots: ScreenSlotContextValue;
@@ -12,16 +13,23 @@ export type ReadyOverlayResources = {
12
13
  export function retainReadyOverlayResources(
13
14
  previous: ReadyOverlayResources | null,
14
15
  overlayAnimationStore: ScreenAnimationContextValue | null,
16
+ overlaySlots: ScreenSlotContextValue | null,
15
17
  driverScene: FloatOverlayEntry["scene"],
16
18
  driverAnimationStore: ScreenAnimationContextValue | null,
17
19
  driverSlots: ScreenSlotContextValue | null,
18
20
  ): ReadyOverlayResources | null {
19
- if (!overlayAnimationStore || !driverAnimationStore || !driverSlots) {
21
+ if (
22
+ !overlayAnimationStore ||
23
+ !overlaySlots ||
24
+ !driverAnimationStore ||
25
+ !driverSlots
26
+ ) {
20
27
  return previous;
21
28
  }
22
29
 
23
30
  if (
24
31
  previous?.overlayAnimationStore === overlayAnimationStore &&
32
+ previous.overlaySlots === overlaySlots &&
25
33
  previous.driverScene === driverScene &&
26
34
  previous.driverAnimationStore === driverAnimationStore &&
27
35
  previous.driverSlots === driverSlots
@@ -31,6 +39,7 @@ export function retainReadyOverlayResources(
31
39
 
32
40
  return {
33
41
  overlayAnimationStore,
42
+ overlaySlots,
34
43
  driverScene,
35
44
  driverAnimationStore,
36
45
  driverSlots,
@@ -108,11 +108,7 @@ export const useOverlaySlot = ({
108
108
  return NO_PROPS;
109
109
  }
110
110
 
111
- const {
112
- pointerEvents: _pointerEvents,
113
- teleport: _teleport,
114
- ...props
115
- } = slotProps;
111
+ const { handoffTarget: _handoffTarget, ...props } = slotProps;
116
112
 
117
113
  return props;
118
114
  });
@@ -24,16 +24,13 @@ export function FloatOverlay() {
24
24
 
25
25
  const overlayTransitions = getFloatOverlayTransitions(overlayStack, scenes);
26
26
 
27
- return overlayTransitions.map(
28
- ({ scene, activity, driverScene }, layerIndex) => (
29
- <OverlayHost
30
- key={scene.route.key}
31
- scene={scene}
32
- driverScene={driverScene}
33
- previousOverlayScene={overlayTransitions[layerIndex - 1]?.scene}
34
- activity={activity}
35
- layerIndex={layerIndex}
36
- />
37
- ),
38
- );
27
+ return overlayTransitions.map(({ scene, driverScene }, layerIndex) => (
28
+ <OverlayHost
29
+ key={scene.route.key}
30
+ scene={scene}
31
+ driverScene={driverScene}
32
+ previousOverlayScene={overlayTransitions[layerIndex - 1]?.scene}
33
+ layerIndex={layerIndex}
34
+ />
35
+ ));
39
36
  }
@@ -2,19 +2,19 @@ import { memo, useMemo, useRef } from "react";
2
2
  import { StyleSheet, View } from "react-native";
3
3
  import Animated, { useDerivedValue } from "react-native-reanimated";
4
4
  import { snapDescriptorToIndex } from "../../../animation/snap-to";
5
- import { NavigationScreenProvider } from "../../../providers/navigation/navigation-host.provider";
6
5
  import { useOptionalScreenAnimationStore } from "../../../providers/screen/animation";
7
- import type { ScreenAnimationContextValue } from "../../../providers/screen/animation/animation.provider";
6
+ import {
7
+ type ScreenAnimationContextValue,
8
+ ScreenAnimationStoreProvider,
9
+ } from "../../../providers/screen/animation/animation.provider";
8
10
  import {
9
11
  type ScreenSlotContextValue,
12
+ ScreenSlotStoreProvider,
10
13
  useOptionalScreenSlotStore,
11
14
  } from "../../../providers/screen/styles/slot.provider";
12
15
  import { useBlankStackStore } from "../../../providers/stack/blank-stack.provider";
13
16
  import type { OverlayProps } from "../../../types/overlay.types";
14
- import type {
15
- FloatOverlayActivity,
16
- FloatOverlayEntry,
17
- } from "../helpers/get-active-overlay";
17
+ import type { FloatOverlayEntry } from "../helpers/get-active-overlay";
18
18
  import {
19
19
  type ReadyOverlayResources,
20
20
  retainReadyOverlayResources,
@@ -25,7 +25,6 @@ type OverlayHostProps = {
25
25
  scene: FloatOverlayEntry["scene"];
26
26
  driverScene: FloatOverlayEntry["scene"];
27
27
  previousOverlayScene?: FloatOverlayEntry["scene"];
28
- activity: FloatOverlayActivity;
29
28
  layerIndex: number;
30
29
  };
31
30
 
@@ -33,7 +32,6 @@ export const OverlayHost = memo(function OverlayHost({
33
32
  scene,
34
33
  driverScene,
35
34
  previousOverlayScene,
36
- activity,
37
35
  layerIndex,
38
36
  }: OverlayHostProps) {
39
37
  const overlayAnimationStore = useOptionalScreenAnimationStore(
@@ -45,6 +43,7 @@ export const OverlayHost = memo(function OverlayHost({
45
43
  const previousOverlayAnimationStore = useOptionalScreenAnimationStore(
46
44
  previousOverlayScene?.route.key ?? scene.route.key,
47
45
  );
46
+ const overlaySlots = useOptionalScreenSlotStore(scene.route.key);
48
47
  const driverSlots = useOptionalScreenSlotStore(driverScene.route.key);
49
48
  const overlayComponentRef = useRef(scene.descriptor.options.overlay);
50
49
  const OverlayComponent = overlayComponentRef.current;
@@ -52,6 +51,7 @@ export const OverlayHost = memo(function OverlayHost({
52
51
  readyResourcesRef.current = retainReadyOverlayResources(
53
52
  readyResourcesRef.current,
54
53
  overlayAnimationStore,
54
+ overlaySlots,
55
55
  driverScene,
56
56
  driverAnimationStore,
57
57
  driverSlots,
@@ -66,9 +66,9 @@ export const OverlayHost = memo(function OverlayHost({
66
66
  <ReadyOverlayHost
67
67
  scene={scene}
68
68
  driverScene={readyResources.driverScene}
69
- activity={activity}
70
69
  layerIndex={layerIndex}
71
70
  overlayAnimationStore={readyResources.overlayAnimationStore}
71
+ overlaySlots={readyResources.overlaySlots}
72
72
  driverAnimationStore={readyResources.driverAnimationStore}
73
73
  previousOverlayAnimationStore={
74
74
  previousOverlayScene ? previousOverlayAnimationStore : undefined
@@ -81,6 +81,7 @@ export const OverlayHost = memo(function OverlayHost({
81
81
 
82
82
  type ReadyOverlayHostProps = OverlayHostProps & {
83
83
  overlayAnimationStore: ScreenAnimationContextValue;
84
+ overlaySlots: ScreenSlotContextValue;
84
85
  driverAnimationStore: ScreenAnimationContextValue;
85
86
  previousOverlayAnimationStore?: ScreenAnimationContextValue | null;
86
87
  driverSlots: ScreenSlotContextValue;
@@ -92,16 +93,15 @@ type ReadyOverlayHostProps = OverlayHostProps & {
92
93
  function ReadyOverlayHost({
93
94
  scene,
94
95
  driverScene,
95
- activity,
96
96
  layerIndex,
97
97
  overlayAnimationStore,
98
+ overlaySlots,
98
99
  driverAnimationStore,
99
100
  previousOverlayAnimationStore,
100
101
  driverSlots,
101
102
  OverlayComponent,
102
103
  }: ReadyOverlayHostProps) {
103
104
  const { scenes, focusedIndex, routeKeys, routes } = useBlankStackStore();
104
- const descriptor = scene.descriptor;
105
105
  const focusedScene = scenes[focusedIndex] ?? scenes[scenes.length - 1];
106
106
  const focusedDescriptor = focusedScene?.descriptor;
107
107
  const { animatedProps, animatedStyle } = useOverlaySlot({
@@ -147,7 +147,7 @@ function ReadyOverlayHost({
147
147
  return (
148
148
  <Animated.View
149
149
  animatedProps={animatedProps}
150
- pointerEvents={activity === "active" ? "box-none" : "none"}
150
+ pointerEvents="box-none"
151
151
  style={[
152
152
  styles.container,
153
153
  styles.floating,
@@ -156,17 +156,19 @@ function ReadyOverlayHost({
156
156
  animatedStyle,
157
157
  ]}
158
158
  >
159
- <NavigationScreenProvider
160
- navigation={descriptor.navigation}
161
- route={descriptor.route}
159
+ <ScreenAnimationStoreProvider
160
+ registerGlobally={false}
161
+ value={overlayAnimationStore}
162
162
  >
163
- <View
164
- pointerEvents="box-none"
165
- style={[StyleSheet.absoluteFill, styles.overlay]}
166
- >
167
- <OverlayComponent {...overlayProps} />
168
- </View>
169
- </NavigationScreenProvider>
163
+ <ScreenSlotStoreProvider registerGlobally={false} value={overlaySlots}>
164
+ <View
165
+ pointerEvents="box-none"
166
+ style={[StyleSheet.absoluteFill, styles.overlay]}
167
+ >
168
+ <OverlayComponent {...overlayProps} />
169
+ </View>
170
+ </ScreenSlotStoreProvider>
171
+ </ScreenAnimationStoreProvider>
170
172
  </Animated.View>
171
173
  );
172
174
  }
@@ -10,6 +10,7 @@ import { ScreenFallbackHost } from "../../boundary/portal/components/boundary-po
10
10
  import { useContentLayout } from "../hooks/use-content-layout";
11
11
  import { MaybeMaskedNavigationContainer } from "./maybe-masked-navigation-container";
12
12
  import { usesLayerRenderProps } from "./render-component";
13
+ import { SurfaceLayer } from "./surface";
13
14
 
14
15
  type Props = {
15
16
  children: React.ReactNode;
@@ -50,18 +51,22 @@ export const ContentLayer = memo(
50
51
  const contentProps =
51
52
  animatedContentProps as ScreenContentComponentProps["props"];
52
53
 
54
+ const screenChildren = hasAutoSnapPoint ? (
55
+ <View collapsable={false} onLayout={handleContentLayout}>
56
+ {children}
57
+ </View>
58
+ ) : (
59
+ children
60
+ );
61
+
53
62
  const contentChildren = (
54
63
  <MaybeMaskedNavigationContainer
55
64
  pointerEvents={contentPointerEvents}
56
65
  enabled={isNavigationMaskEnabled}
57
66
  >
58
- {hasAutoSnapPoint ? (
59
- <View collapsable={false} onLayout={handleContentLayout}>
60
- {children}
61
- </View>
62
- ) : (
63
- children
64
- )}
67
+ <SurfaceLayer pointerEvents={contentPointerEvents}>
68
+ {screenChildren}
69
+ </SurfaceLayer>
65
70
  <ScreenFallbackHost />
66
71
  </MaybeMaskedNavigationContainer>
67
72
  );
@@ -0,0 +1,65 @@
1
+ import { type ComponentType, memo, useMemo } from "react";
2
+ import { StyleSheet } from "react-native";
3
+ import Animated from "react-native-reanimated";
4
+ import { useDescriptorsStore } from "../../../providers/screen/descriptors";
5
+ import { useSlotProps, useSlotStyles } from "../../../providers/screen/styles";
6
+ import type { ScreenSurfaceComponentProps } from "../../../types";
7
+ import { usesLayerRenderProps } from "./render-component";
8
+
9
+ type Props = {
10
+ children: React.ReactNode;
11
+ pointerEvents: "box-none" | undefined;
12
+ };
13
+
14
+ export const SurfaceLayer = memo(({ children, pointerEvents }: Props) => {
15
+ const SurfaceComponent = useDescriptorsStore(
16
+ (store) => store.options.surfaceComponent,
17
+ );
18
+
19
+ const AnimatedSurfaceComponent = useMemo(() => {
20
+ return SurfaceComponent && !usesLayerRenderProps(SurfaceComponent)
21
+ ? Animated.createAnimatedComponent(SurfaceComponent as ComponentType<any>)
22
+ : null;
23
+ }, [SurfaceComponent]);
24
+
25
+ const animatedSurfaceStyle = useSlotStyles("surface");
26
+ const animatedSurfaceProps = useSlotProps("surface");
27
+ const surfaceStyles = [
28
+ styles.surface,
29
+ animatedSurfaceStyle,
30
+ ] as ScreenSurfaceComponentProps["styles"];
31
+ const surfaceProps =
32
+ animatedSurfaceProps as ScreenSurfaceComponentProps["props"];
33
+
34
+ if (!SurfaceComponent) {
35
+ return children;
36
+ }
37
+
38
+ if (AnimatedSurfaceComponent) {
39
+ return (
40
+ <AnimatedSurfaceComponent
41
+ style={surfaceStyles}
42
+ animatedProps={animatedSurfaceProps}
43
+ pointerEvents={pointerEvents}
44
+ >
45
+ {children}
46
+ </AnimatedSurfaceComponent>
47
+ );
48
+ }
49
+
50
+ return (
51
+ <SurfaceComponent
52
+ styles={surfaceStyles}
53
+ props={surfaceProps}
54
+ pointerEvents={pointerEvents}
55
+ >
56
+ {children}
57
+ </SurfaceComponent>
58
+ );
59
+ });
60
+
61
+ const styles = StyleSheet.create({
62
+ surface: {
63
+ flex: 1,
64
+ },
65
+ });
@@ -1,5 +1,4 @@
1
- import { memo, type ReactNode } from "react";
2
- import { NavigationScreenProvider } from "../providers/navigation/navigation-host.provider";
1
+ import { memo } from "react";
3
2
  import { ScreenComposer } from "../providers/screen/screen-composer";
4
3
  import {
5
4
  BlankStackProvider,
@@ -18,28 +17,6 @@ interface RouteKeyProps {
18
17
  routeKey: string;
19
18
  }
20
19
 
21
- const BlankNavigationProvider = memo(function BlankNavigationProvider({
22
- children,
23
- routeKey,
24
- }: RouteKeyProps & { children: ReactNode }) {
25
- const navigation = useBlankStackStore(
26
- (store) => store.scenesByKey[routeKey]?.descriptor.navigation,
27
- );
28
- const route = useBlankStackStore(
29
- (store) => store.scenesByKey[routeKey]?.route,
30
- );
31
-
32
- if (!navigation || !route) {
33
- throw new Error(`Blank stack scene "${routeKey}" was not found.`);
34
- }
35
-
36
- return (
37
- <NavigationScreenProvider navigation={navigation} route={route}>
38
- {children}
39
- </NavigationScreenProvider>
40
- );
41
- });
42
-
43
20
  const BlankSceneContent = memo(function BlankSceneContent({
44
21
  routeKey,
45
22
  }: RouteKeyProps) {
@@ -47,27 +24,21 @@ const BlankSceneContent = memo(function BlankSceneContent({
47
24
  (store) => store?.scenesByKey[routeKey]?.descriptor.render,
48
25
  );
49
26
 
50
- return render?.() ?? null;
27
+ return render?.();
51
28
  });
52
29
 
53
30
  const BlankSceneRow = memo(function BlankSceneRow({ routeKey }: RouteKeyProps) {
54
31
  return (
55
- <BlankNavigationProvider routeKey={routeKey}>
56
- <ActivityScreen routeKey={routeKey}>
57
- <ScreenComposer routeKey={routeKey}>
58
- <BlankSceneContent routeKey={routeKey} />
59
- </ScreenComposer>
60
- </ActivityScreen>
61
- </BlankNavigationProvider>
32
+ <ActivityScreen routeKey={routeKey}>
33
+ <ScreenComposer routeKey={routeKey}>
34
+ <BlankSceneContent routeKey={routeKey} />
35
+ </ScreenComposer>
36
+ </ActivityScreen>
62
37
  );
63
38
  });
64
39
 
65
- const EMPTY_ROUTE_KEYS: string[] = [];
66
-
67
40
  const StackViewContent = memo(function StackViewContent() {
68
- const routeKeys = useBlankStackStore(
69
- (store) => store?.routeKeys ?? EMPTY_ROUTE_KEYS,
70
- );
41
+ const routeKeys = useBlankStackStore((store) => store?.routeKeys);
71
42
 
72
43
  return (
73
44
  <PortalProvider>
@@ -89,7 +60,6 @@ export const StackView = memo(function StackView({
89
60
  state,
90
61
  navigation,
91
62
  descriptors,
92
- describe,
93
63
  }: StackViewProps) {
94
64
  return (
95
65
  <StackCoreProvider
@@ -101,7 +71,6 @@ export const StackView = memo(function StackView({
101
71
  state={state}
102
72
  navigation={navigation}
103
73
  descriptors={descriptors}
104
- describe={describe}
105
74
  >
106
75
  <StackViewContent />
107
76
  </BlankStackProvider>
@@ -1,9 +1,6 @@
1
1
  import {
2
2
  DraggableCard,
3
3
  ElasticCard,
4
- SharedAppleMusic,
5
- SharedIGImage,
6
- SharedXImage,
7
4
  SlideFromBottom,
8
5
  SlideFromTop,
9
6
  ZoomIn,
@@ -23,7 +20,4 @@ export const Presets = {
23
20
  SlideFromBottom,
24
21
  DraggableCard,
25
22
  ElasticCard,
26
- SharedIGImage,
27
- SharedAppleMusic,
28
- SharedXImage,
29
23
  };