react-native-screen-transitions 2.4.1 → 2.4.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/lib/commonjs/__configs__/presets.js.map +1 -1
  2. package/lib/commonjs/components/controllers/screen-lifecycle.blank.js +59 -0
  3. package/lib/commonjs/components/controllers/screen-lifecycle.blank.js.map +1 -0
  4. package/lib/commonjs/components/root-transition-aware.js.map +1 -1
  5. package/lib/commonjs/constants.js.map +1 -1
  6. package/lib/commonjs/hooks/animation/use-screen-animation.js +9 -5
  7. package/lib/commonjs/hooks/animation/use-screen-animation.js.map +1 -1
  8. package/lib/commonjs/index.js +7 -0
  9. package/lib/commonjs/index.js.map +1 -1
  10. package/lib/commonjs/integrations/blank-stack/components/Header.js +135 -0
  11. package/lib/commonjs/integrations/blank-stack/components/Header.js.map +1 -0
  12. package/lib/commonjs/integrations/blank-stack/components/Screens.js +64 -0
  13. package/lib/commonjs/integrations/blank-stack/components/Screens.js.map +1 -0
  14. package/lib/commonjs/integrations/blank-stack/components/StackView.js +85 -0
  15. package/lib/commonjs/integrations/blank-stack/components/StackView.js.map +1 -0
  16. package/lib/commonjs/integrations/blank-stack/navigators/createBlankStackNavigator.js +68 -0
  17. package/lib/commonjs/integrations/blank-stack/navigators/createBlankStackNavigator.js.map +1 -0
  18. package/lib/commonjs/integrations/blank-stack/providers/screen-transition-provider.js +10 -0
  19. package/lib/commonjs/integrations/blank-stack/providers/screen-transition-provider.js.map +1 -0
  20. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.js +66 -0
  21. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.js.map +1 -0
  22. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-previous.js +16 -0
  23. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-previous.js.map +1 -0
  24. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.js +208 -0
  25. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.js.map +1 -0
  26. package/lib/commonjs/{types/navigator.js → integrations/blank-stack/utils/with-stack-navigation/_types.js} +1 -1
  27. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_types.js.map +1 -0
  28. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.js +15 -0
  29. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.js.map +1 -0
  30. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.js +23 -0
  31. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.js.map +1 -0
  32. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.js +15 -0
  33. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.js.map +1 -0
  34. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.js +14 -0
  35. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.js.map +1 -0
  36. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.js +13 -0
  37. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.js.map +1 -0
  38. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/index.js +71 -0
  39. package/lib/commonjs/integrations/blank-stack/utils/with-stack-navigation/index.js.map +1 -0
  40. package/lib/commonjs/integrations/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  41. package/lib/commonjs/integrations/native-stack/providers/screen-transition-provider.js +10 -0
  42. package/lib/commonjs/integrations/native-stack/providers/screen-transition-provider.js.map +1 -0
  43. package/lib/commonjs/integrations/native-stack/utils/getModalRoutesKeys.js.map +1 -1
  44. package/lib/commonjs/integrations/native-stack/utils/useInvalidPreventRemoveError.js.map +1 -1
  45. package/lib/commonjs/integrations/native-stack/views/NativeStackView.js.map +1 -1
  46. package/lib/commonjs/integrations/native-stack/views/NativeStackView.native.js +1 -1
  47. package/lib/commonjs/integrations/native-stack/views/NativeStackView.native.js.map +1 -1
  48. package/lib/commonjs/integrations/native-stack/views/useHeaderConfigProps.js.map +1 -1
  49. package/lib/commonjs/providers/create-screen-transition-provider.js +35 -0
  50. package/lib/commonjs/providers/create-screen-transition-provider.js.map +1 -0
  51. package/lib/commonjs/providers/keys.js.map +1 -1
  52. package/lib/commonjs/providers/transition-styles.js +18 -4
  53. package/lib/commonjs/providers/transition-styles.js.map +1 -1
  54. package/lib/commonjs/stores/animations.js.map +1 -1
  55. package/lib/commonjs/stores/bounds/index.js.map +1 -1
  56. package/lib/commonjs/stores/gestures.js.map +1 -1
  57. package/lib/commonjs/stores/utils/reset-stores-for-screen.js.map +1 -1
  58. package/lib/commonjs/types/blank-stack.navigator.js +6 -0
  59. package/lib/{module/types/navigator.js.map → commonjs/types/blank-stack.navigator.js.map} +1 -1
  60. package/lib/commonjs/types/native-stack.navigator.js +6 -0
  61. package/lib/commonjs/types/native-stack.navigator.js.map +1 -0
  62. package/lib/commonjs/utils/animation/derivations.js +1 -14
  63. package/lib/commonjs/utils/animation/derivations.js.map +1 -1
  64. package/lib/commonjs/utils/bounds/constants.js.map +1 -1
  65. package/lib/commonjs/utils/bounds/index.js +23 -90
  66. package/lib/commonjs/utils/bounds/index.js.map +1 -1
  67. package/lib/commonjs/utils/gesture/apply-offset-rules.js.map +1 -1
  68. package/lib/commonjs/utils/gesture/check-gesture-activation.js.map +1 -1
  69. package/lib/module/__configs__/presets.js.map +1 -1
  70. package/lib/module/components/controllers/screen-lifecycle.blank.js +53 -0
  71. package/lib/module/components/controllers/screen-lifecycle.blank.js.map +1 -0
  72. package/lib/module/components/root-transition-aware.js.map +1 -1
  73. package/lib/module/constants.js.map +1 -1
  74. package/lib/module/hooks/animation/use-screen-animation.js +9 -5
  75. package/lib/module/hooks/animation/use-screen-animation.js.map +1 -1
  76. package/lib/module/index.js +1 -0
  77. package/lib/module/index.js.map +1 -1
  78. package/lib/module/integrations/blank-stack/components/Header.js +131 -0
  79. package/lib/module/integrations/blank-stack/components/Header.js.map +1 -0
  80. package/lib/module/integrations/blank-stack/components/Screens.js +58 -0
  81. package/lib/module/integrations/blank-stack/components/Screens.js.map +1 -0
  82. package/lib/module/integrations/blank-stack/components/StackView.js +81 -0
  83. package/lib/module/integrations/blank-stack/components/StackView.js.map +1 -0
  84. package/lib/module/integrations/blank-stack/navigators/createBlankStackNavigator.js +63 -0
  85. package/lib/module/integrations/blank-stack/navigators/createBlankStackNavigator.js.map +1 -0
  86. package/lib/module/integrations/blank-stack/providers/screen-transition-provider.js +6 -0
  87. package/lib/module/integrations/blank-stack/providers/screen-transition-provider.js.map +1 -0
  88. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.js +60 -0
  89. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.js.map +1 -0
  90. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-previous.js +11 -0
  91. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-previous.js.map +1 -0
  92. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.js +202 -0
  93. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.js.map +1 -0
  94. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_types.js +4 -0
  95. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_types.js.map +1 -0
  96. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.js +10 -0
  97. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.js.map +1 -0
  98. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.js +19 -0
  99. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.js.map +1 -0
  100. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.js +10 -0
  101. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.js.map +1 -0
  102. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.js +9 -0
  103. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.js.map +1 -0
  104. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.js +8 -0
  105. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.js.map +1 -0
  106. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/index.js +65 -0
  107. package/lib/module/integrations/blank-stack/utils/with-stack-navigation/index.js.map +1 -0
  108. package/lib/module/integrations/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  109. package/lib/module/integrations/native-stack/providers/screen-transition-provider.js +6 -0
  110. package/lib/module/integrations/native-stack/providers/screen-transition-provider.js.map +1 -0
  111. package/lib/module/integrations/native-stack/utils/getModalRoutesKeys.js.map +1 -1
  112. package/lib/module/integrations/native-stack/utils/useInvalidPreventRemoveError.js.map +1 -1
  113. package/lib/module/integrations/native-stack/views/NativeStackView.js.map +1 -1
  114. package/lib/module/integrations/native-stack/views/NativeStackView.native.js +1 -1
  115. package/lib/module/integrations/native-stack/views/NativeStackView.native.js.map +1 -1
  116. package/lib/module/integrations/native-stack/views/useHeaderConfigProps.js.map +1 -1
  117. package/lib/module/providers/create-screen-transition-provider.js +31 -0
  118. package/lib/module/providers/create-screen-transition-provider.js.map +1 -0
  119. package/lib/module/providers/keys.js.map +1 -1
  120. package/lib/module/providers/transition-styles.js +19 -5
  121. package/lib/module/providers/transition-styles.js.map +1 -1
  122. package/lib/module/stores/animations.js.map +1 -1
  123. package/lib/module/stores/bounds/index.js.map +1 -1
  124. package/lib/module/stores/gestures.js.map +1 -1
  125. package/lib/module/stores/utils/reset-stores-for-screen.js.map +1 -1
  126. package/lib/module/types/blank-stack.navigator.js +4 -0
  127. package/lib/{commonjs/types/navigator.js.map → module/types/blank-stack.navigator.js.map} +1 -1
  128. package/lib/module/types/native-stack.navigator.js +4 -0
  129. package/lib/module/types/native-stack.navigator.js.map +1 -0
  130. package/lib/module/utils/animation/derivations.js +1 -14
  131. package/lib/module/utils/animation/derivations.js.map +1 -1
  132. package/lib/module/utils/bounds/constants.js.map +1 -1
  133. package/lib/module/utils/bounds/index.js +24 -91
  134. package/lib/module/utils/bounds/index.js.map +1 -1
  135. package/lib/module/utils/gesture/apply-offset-rules.js.map +1 -1
  136. package/lib/module/utils/gesture/check-gesture-activation.js.map +1 -1
  137. package/lib/typescript/__configs__/index.d.ts +9 -9
  138. package/lib/typescript/__configs__/index.d.ts.map +1 -1
  139. package/lib/typescript/__configs__/presets.d.ts +1 -1
  140. package/lib/typescript/__configs__/presets.d.ts.map +1 -1
  141. package/lib/typescript/components/controllers/screen-lifecycle.blank.d.ts +7 -0
  142. package/lib/typescript/components/controllers/screen-lifecycle.blank.d.ts.map +1 -0
  143. package/lib/typescript/components/root-transition-aware.d.ts.map +1 -1
  144. package/lib/typescript/constants.d.ts +2 -2
  145. package/lib/typescript/constants.d.ts.map +1 -1
  146. package/lib/typescript/hooks/animation/use-screen-animation.d.ts +1 -1
  147. package/lib/typescript/hooks/animation/use-screen-animation.d.ts.map +1 -1
  148. package/lib/typescript/index.d.ts +20 -18
  149. package/lib/typescript/index.d.ts.map +1 -1
  150. package/lib/typescript/integrations/blank-stack/components/Header.d.ts +5 -0
  151. package/lib/typescript/integrations/blank-stack/components/Header.d.ts.map +1 -0
  152. package/lib/typescript/integrations/blank-stack/components/Screens.d.ts +15 -0
  153. package/lib/typescript/integrations/blank-stack/components/Screens.d.ts.map +1 -0
  154. package/lib/typescript/integrations/blank-stack/components/StackView.d.ts +2 -0
  155. package/lib/typescript/integrations/blank-stack/components/StackView.d.ts.map +1 -0
  156. package/lib/typescript/integrations/blank-stack/navigators/createBlankStackNavigator.d.ts +16 -0
  157. package/lib/typescript/integrations/blank-stack/navigators/createBlankStackNavigator.d.ts.map +1 -0
  158. package/lib/typescript/integrations/blank-stack/providers/screen-transition-provider.d.ts +8 -0
  159. package/lib/typescript/integrations/blank-stack/providers/screen-transition-provider.d.ts.map +1 -0
  160. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.d.ts +8 -0
  161. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.d.ts.map +1 -0
  162. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-previous.d.ts +2 -0
  163. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-previous.d.ts.map +1 -0
  164. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.d.ts +20 -0
  165. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.d.ts.map +1 -0
  166. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_types.d.ts +23 -0
  167. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_types.d.ts.map +1 -0
  168. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.d.ts +3 -0
  169. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.d.ts.map +1 -0
  170. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.d.ts +4 -0
  171. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.d.ts.map +1 -0
  172. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.d.ts +4 -0
  173. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.d.ts.map +1 -0
  174. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.d.ts +3 -0
  175. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.d.ts.map +1 -0
  176. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.d.ts +3 -0
  177. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.d.ts.map +1 -0
  178. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/index.d.ts +6 -0
  179. package/lib/typescript/integrations/blank-stack/utils/with-stack-navigation/index.d.ts.map +1 -0
  180. package/lib/typescript/integrations/native-stack/navigators/createNativeStackNavigator.d.ts +1 -1
  181. package/lib/typescript/integrations/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -1
  182. package/lib/typescript/integrations/native-stack/providers/screen-transition-provider.d.ts +8 -0
  183. package/lib/typescript/integrations/native-stack/providers/screen-transition-provider.d.ts.map +1 -0
  184. package/lib/typescript/integrations/native-stack/utils/getModalRoutesKeys.d.ts +1 -1
  185. package/lib/typescript/integrations/native-stack/utils/getModalRoutesKeys.d.ts.map +1 -1
  186. package/lib/typescript/integrations/native-stack/utils/useInvalidPreventRemoveError.d.ts +1 -1
  187. package/lib/typescript/integrations/native-stack/utils/useInvalidPreventRemoveError.d.ts.map +1 -1
  188. package/lib/typescript/integrations/native-stack/views/NativeStackView.d.ts +1 -1
  189. package/lib/typescript/integrations/native-stack/views/NativeStackView.d.ts.map +1 -1
  190. package/lib/typescript/integrations/native-stack/views/NativeStackView.native.d.ts +1 -1
  191. package/lib/typescript/integrations/native-stack/views/NativeStackView.native.d.ts.map +1 -1
  192. package/lib/typescript/integrations/native-stack/views/useHeaderConfigProps.d.ts +1 -1
  193. package/lib/typescript/integrations/native-stack/views/useHeaderConfigProps.d.ts.map +1 -1
  194. package/lib/typescript/providers/create-screen-transition-provider.d.ts +15 -0
  195. package/lib/typescript/providers/create-screen-transition-provider.d.ts.map +1 -0
  196. package/lib/typescript/providers/keys.d.ts +15 -13
  197. package/lib/typescript/providers/keys.d.ts.map +1 -1
  198. package/lib/typescript/providers/transition-styles.d.ts.map +1 -1
  199. package/lib/typescript/stores/animations.d.ts +1 -1
  200. package/lib/typescript/stores/animations.d.ts.map +1 -1
  201. package/lib/typescript/stores/bounds/index.d.ts +1 -1
  202. package/lib/typescript/stores/bounds/index.d.ts.map +1 -1
  203. package/lib/typescript/stores/gestures.d.ts +1 -1
  204. package/lib/typescript/stores/gestures.d.ts.map +1 -1
  205. package/lib/typescript/stores/utils/reset-stores-for-screen.d.ts +1 -1
  206. package/lib/typescript/stores/utils/reset-stores-for-screen.d.ts.map +1 -1
  207. package/lib/typescript/types/animation.d.ts +2 -4
  208. package/lib/typescript/types/animation.d.ts.map +1 -1
  209. package/lib/typescript/types/blank-stack.navigator.d.ts +214 -0
  210. package/lib/typescript/types/blank-stack.navigator.d.ts.map +1 -0
  211. package/lib/typescript/types/bounds.d.ts +0 -57
  212. package/lib/typescript/types/bounds.d.ts.map +1 -1
  213. package/lib/typescript/types/{navigator.d.ts → native-stack.navigator.d.ts} +5 -1
  214. package/lib/typescript/types/native-stack.navigator.d.ts.map +1 -0
  215. package/lib/typescript/utils/animation/derivations.d.ts +1 -4
  216. package/lib/typescript/utils/animation/derivations.d.ts.map +1 -1
  217. package/lib/typescript/utils/bounds/_types/builder.d.ts +2 -2
  218. package/lib/typescript/utils/bounds/_types/builder.d.ts.map +1 -1
  219. package/lib/typescript/utils/bounds/_utils/geometry.d.ts +2 -2
  220. package/lib/typescript/utils/bounds/_utils/geometry.d.ts.map +1 -1
  221. package/lib/typescript/utils/bounds/constants.d.ts +2 -2
  222. package/lib/typescript/utils/bounds/constants.d.ts.map +1 -1
  223. package/lib/typescript/utils/bounds/index.d.ts +4 -4
  224. package/lib/typescript/utils/bounds/index.d.ts.map +1 -1
  225. package/lib/typescript/utils/gesture/apply-offset-rules.d.ts +2 -2
  226. package/lib/typescript/utils/gesture/apply-offset-rules.d.ts.map +1 -1
  227. package/lib/typescript/utils/gesture/check-gesture-activation.d.ts +2 -2
  228. package/lib/typescript/utils/gesture/check-gesture-activation.d.ts.map +1 -1
  229. package/package.json +1 -1
  230. package/src/__configs__/presets.ts +590 -590
  231. package/src/components/controllers/screen-lifecycle.blank.ts +62 -0
  232. package/src/components/root-transition-aware.tsx +27 -27
  233. package/src/constants.ts +47 -47
  234. package/src/hooks/animation/use-screen-animation.tsx +52 -47
  235. package/src/index.ts +33 -22
  236. package/src/integrations/blank-stack/components/Header.tsx +141 -0
  237. package/src/integrations/blank-stack/components/Screens.tsx +96 -0
  238. package/src/integrations/blank-stack/components/StackView.tsx +100 -0
  239. package/src/integrations/blank-stack/navigators/createBlankStackNavigator.tsx +111 -0
  240. package/src/integrations/blank-stack/providers/screen-transition-provider.tsx +8 -0
  241. package/src/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.tsx +62 -0
  242. package/src/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-previous.tsx +11 -0
  243. package/src/integrations/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.tsx +280 -0
  244. package/src/integrations/blank-stack/utils/with-stack-navigation/_types.ts +36 -0
  245. package/src/integrations/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.ts +15 -0
  246. package/src/integrations/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.ts +29 -0
  247. package/src/integrations/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.ts +17 -0
  248. package/src/integrations/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.ts +12 -0
  249. package/src/integrations/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.ts +11 -0
  250. package/src/integrations/blank-stack/utils/with-stack-navigation/index.tsx +93 -0
  251. package/src/integrations/native-stack/navigators/createNativeStackNavigator.tsx +95 -95
  252. package/src/integrations/native-stack/providers/screen-transition-provider.tsx +8 -0
  253. package/src/integrations/native-stack/utils/getModalRoutesKeys.ts +14 -14
  254. package/src/integrations/native-stack/utils/useInvalidPreventRemoveError.tsx +23 -23
  255. package/src/integrations/native-stack/views/NativeStackView.native.tsx +609 -609
  256. package/src/integrations/native-stack/views/NativeStackView.tsx +188 -188
  257. package/src/integrations/native-stack/views/useHeaderConfigProps.tsx +260 -260
  258. package/src/providers/create-screen-transition-provider.tsx +46 -0
  259. package/src/providers/keys.tsx +46 -34
  260. package/src/providers/transition-styles.tsx +24 -11
  261. package/src/stores/animations.ts +23 -23
  262. package/src/stores/bounds/index.ts +82 -82
  263. package/src/stores/gestures.ts +36 -36
  264. package/src/stores/utils/reset-stores-for-screen.ts +4 -4
  265. package/src/types/animation.ts +2 -4
  266. package/src/types/blank-stack.navigator.ts +266 -0
  267. package/src/types/bounds.ts +0 -64
  268. package/src/types/{navigator.ts → native-stack.navigator.ts} +5 -0
  269. package/src/utils/animation/derivations.ts +3 -20
  270. package/src/utils/bounds/_types/builder.ts +111 -111
  271. package/src/utils/bounds/_utils/geometry.ts +2 -2
  272. package/src/utils/bounds/constants.ts +29 -29
  273. package/src/utils/bounds/index.ts +35 -105
  274. package/src/utils/gesture/apply-offset-rules.ts +271 -271
  275. package/src/utils/gesture/check-gesture-activation.ts +260 -260
  276. package/lib/commonjs/providers/screen-transition-provider.js +0 -34
  277. package/lib/commonjs/providers/screen-transition-provider.js.map +0 -1
  278. package/lib/module/providers/screen-transition-provider.js +0 -30
  279. package/lib/module/providers/screen-transition-provider.js.map +0 -1
  280. package/lib/module/types/navigator.js +0 -4
  281. package/lib/typescript/providers/screen-transition-provider.d.ts +0 -11
  282. package/lib/typescript/providers/screen-transition-provider.d.ts.map +0 -1
  283. package/lib/typescript/types/navigator.d.ts.map +0 -1
  284. package/src/providers/screen-transition-provider.tsx +0 -33
@@ -2,294 +2,294 @@ import { getHeaderTitle, HeaderTitle } from "@react-navigation/elements";
2
2
  import { type Route, useLocale, useTheme } from "@react-navigation/native";
3
3
  import { Platform, StyleSheet, type TextStyle, View } from "react-native";
4
4
  import {
5
- isSearchBarAvailableForCurrentPlatform,
6
- ScreenStackHeaderBackButtonImage,
7
- ScreenStackHeaderCenterView,
8
- ScreenStackHeaderLeftView,
9
- ScreenStackHeaderRightView,
10
- ScreenStackHeaderSearchBarView,
11
- SearchBar,
5
+ isSearchBarAvailableForCurrentPlatform,
6
+ ScreenStackHeaderBackButtonImage,
7
+ ScreenStackHeaderCenterView,
8
+ ScreenStackHeaderLeftView,
9
+ ScreenStackHeaderRightView,
10
+ ScreenStackHeaderSearchBarView,
11
+ SearchBar,
12
12
  } from "react-native-screens";
13
13
 
14
- import type { NativeStackNavigationOptions } from "../../../types/navigator";
14
+ import type { NativeStackNavigationOptions } from "../../../types/native-stack.navigator";
15
15
  import { processFonts } from "./FontProcessor";
16
16
 
17
17
  type Props = NativeStackNavigationOptions & {
18
- headerTopInsetEnabled: boolean;
19
- headerHeight: number;
20
- headerBack: { title?: string | undefined; href: undefined } | undefined;
21
- route: Route<string>;
18
+ headerTopInsetEnabled: boolean;
19
+ headerHeight: number;
20
+ headerBack: { title?: string | undefined; href: undefined } | undefined;
21
+ route: Route<string>;
22
22
  };
23
23
 
24
24
  export function useHeaderConfigProps({
25
- headerBackImageSource,
26
- headerBackButtonDisplayMode,
27
- headerBackButtonMenuEnabled,
28
- headerBackTitle,
29
- headerBackTitleStyle,
30
- headerBackVisible,
31
- headerShadowVisible,
32
- headerLargeStyle,
33
- headerLargeTitle,
34
- headerLargeTitleShadowVisible,
35
- headerLargeTitleStyle,
36
- headerBackground,
37
- headerLeft,
38
- headerRight,
39
- headerShown,
40
- headerStyle,
41
- headerBlurEffect,
42
- headerTintColor,
43
- headerTitle,
44
- headerTitleAlign,
45
- headerTitleStyle,
46
- headerTransparent,
47
- headerSearchBarOptions,
48
- headerTopInsetEnabled,
49
- headerBack,
50
- route,
51
- title,
25
+ headerBackImageSource,
26
+ headerBackButtonDisplayMode,
27
+ headerBackButtonMenuEnabled,
28
+ headerBackTitle,
29
+ headerBackTitleStyle,
30
+ headerBackVisible,
31
+ headerShadowVisible,
32
+ headerLargeStyle,
33
+ headerLargeTitle,
34
+ headerLargeTitleShadowVisible,
35
+ headerLargeTitleStyle,
36
+ headerBackground,
37
+ headerLeft,
38
+ headerRight,
39
+ headerShown,
40
+ headerStyle,
41
+ headerBlurEffect,
42
+ headerTintColor,
43
+ headerTitle,
44
+ headerTitleAlign,
45
+ headerTitleStyle,
46
+ headerTransparent,
47
+ headerSearchBarOptions,
48
+ headerTopInsetEnabled,
49
+ headerBack,
50
+ route,
51
+ title,
52
52
  }: Props) {
53
- const { direction } = useLocale();
54
- const { colors, fonts } = useTheme();
55
- const tintColor =
56
- headerTintColor ?? (Platform.OS === "ios" ? colors.primary : colors.text);
53
+ const { direction } = useLocale();
54
+ const { colors, fonts } = useTheme();
55
+ const tintColor =
56
+ headerTintColor ?? (Platform.OS === "ios" ? colors.primary : colors.text);
57
57
 
58
- const headerBackTitleStyleFlattened =
59
- StyleSheet.flatten([fonts.regular, headerBackTitleStyle]) || {};
60
- const headerLargeTitleStyleFlattened =
61
- StyleSheet.flatten([
62
- Platform.select({ ios: fonts.heavy, default: fonts.medium }),
63
- headerLargeTitleStyle,
64
- ]) || {};
65
- const headerTitleStyleFlattened =
66
- StyleSheet.flatten([
67
- Platform.select({ ios: fonts.bold, default: fonts.medium }),
68
- headerTitleStyle,
69
- ]) || {};
70
- const headerStyleFlattened = StyleSheet.flatten(headerStyle) || {};
71
- const headerLargeStyleFlattened = StyleSheet.flatten(headerLargeStyle) || {};
58
+ const headerBackTitleStyleFlattened =
59
+ StyleSheet.flatten([fonts.regular, headerBackTitleStyle]) || {};
60
+ const headerLargeTitleStyleFlattened =
61
+ StyleSheet.flatten([
62
+ Platform.select({ ios: fonts.heavy, default: fonts.medium }),
63
+ headerLargeTitleStyle,
64
+ ]) || {};
65
+ const headerTitleStyleFlattened =
66
+ StyleSheet.flatten([
67
+ Platform.select({ ios: fonts.bold, default: fonts.medium }),
68
+ headerTitleStyle,
69
+ ]) || {};
70
+ const headerStyleFlattened = StyleSheet.flatten(headerStyle) || {};
71
+ const headerLargeStyleFlattened = StyleSheet.flatten(headerLargeStyle) || {};
72
72
 
73
- const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] =
74
- processFonts([
75
- headerBackTitleStyleFlattened.fontFamily,
76
- headerLargeTitleStyleFlattened.fontFamily,
77
- headerTitleStyleFlattened.fontFamily,
78
- ]);
73
+ const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] =
74
+ processFonts([
75
+ headerBackTitleStyleFlattened.fontFamily,
76
+ headerLargeTitleStyleFlattened.fontFamily,
77
+ headerTitleStyleFlattened.fontFamily,
78
+ ]);
79
79
 
80
- const backTitleFontSize =
81
- "fontSize" in headerBackTitleStyleFlattened
82
- ? headerBackTitleStyleFlattened.fontSize
83
- : undefined;
80
+ const backTitleFontSize =
81
+ "fontSize" in headerBackTitleStyleFlattened
82
+ ? headerBackTitleStyleFlattened.fontSize
83
+ : undefined;
84
84
 
85
- const titleText = getHeaderTitle({ title, headerTitle }, route.name);
86
- const titleColor =
87
- "color" in headerTitleStyleFlattened
88
- ? headerTitleStyleFlattened.color
89
- : (headerTintColor ?? colors.text);
90
- const titleFontSize =
91
- "fontSize" in headerTitleStyleFlattened
92
- ? headerTitleStyleFlattened.fontSize
93
- : undefined;
94
- const titleFontWeight = headerTitleStyleFlattened.fontWeight;
85
+ const titleText = getHeaderTitle({ title, headerTitle }, route.name);
86
+ const titleColor =
87
+ "color" in headerTitleStyleFlattened
88
+ ? headerTitleStyleFlattened.color
89
+ : headerTintColor ?? colors.text;
90
+ const titleFontSize =
91
+ "fontSize" in headerTitleStyleFlattened
92
+ ? headerTitleStyleFlattened.fontSize
93
+ : undefined;
94
+ const titleFontWeight = headerTitleStyleFlattened.fontWeight;
95
95
 
96
- const largeTitleBackgroundColor = headerLargeStyleFlattened.backgroundColor;
97
- const largeTitleColor =
98
- "color" in headerLargeTitleStyleFlattened
99
- ? headerLargeTitleStyleFlattened.color
100
- : undefined;
101
- const largeTitleFontSize =
102
- "fontSize" in headerLargeTitleStyleFlattened
103
- ? headerLargeTitleStyleFlattened.fontSize
104
- : undefined;
105
- const largeTitleFontWeight = headerLargeTitleStyleFlattened.fontWeight;
96
+ const largeTitleBackgroundColor = headerLargeStyleFlattened.backgroundColor;
97
+ const largeTitleColor =
98
+ "color" in headerLargeTitleStyleFlattened
99
+ ? headerLargeTitleStyleFlattened.color
100
+ : undefined;
101
+ const largeTitleFontSize =
102
+ "fontSize" in headerLargeTitleStyleFlattened
103
+ ? headerLargeTitleStyleFlattened.fontSize
104
+ : undefined;
105
+ const largeTitleFontWeight = headerLargeTitleStyleFlattened.fontWeight;
106
106
 
107
- const headerTitleStyleSupported: TextStyle = { color: titleColor };
107
+ const headerTitleStyleSupported: TextStyle = { color: titleColor };
108
108
 
109
- if (headerTitleStyleFlattened.fontFamily != null) {
110
- headerTitleStyleSupported.fontFamily = headerTitleStyleFlattened.fontFamily;
111
- }
109
+ if (headerTitleStyleFlattened.fontFamily != null) {
110
+ headerTitleStyleSupported.fontFamily = headerTitleStyleFlattened.fontFamily;
111
+ }
112
112
 
113
- if (titleFontSize != null) {
114
- headerTitleStyleSupported.fontSize = titleFontSize;
115
- }
113
+ if (titleFontSize != null) {
114
+ headerTitleStyleSupported.fontSize = titleFontSize;
115
+ }
116
116
 
117
- if (titleFontWeight != null) {
118
- headerTitleStyleSupported.fontWeight = titleFontWeight;
119
- }
117
+ if (titleFontWeight != null) {
118
+ headerTitleStyleSupported.fontWeight = titleFontWeight;
119
+ }
120
120
 
121
- const headerBackgroundColor =
122
- headerStyleFlattened.backgroundColor ??
123
- (headerBackground != null || headerTransparent
124
- ? "transparent"
125
- : colors.card);
121
+ const headerBackgroundColor =
122
+ headerStyleFlattened.backgroundColor ??
123
+ (headerBackground != null || headerTransparent
124
+ ? "transparent"
125
+ : colors.card);
126
126
 
127
- const canGoBack = headerBack != null;
127
+ const canGoBack = headerBack != null;
128
128
 
129
- const headerLeftElement = headerLeft?.({
130
- tintColor,
131
- canGoBack,
132
- label: headerBackTitle ?? headerBack?.title,
133
- // `href` is only applicable to web
134
- href: undefined,
135
- });
129
+ const headerLeftElement = headerLeft?.({
130
+ tintColor,
131
+ canGoBack,
132
+ label: headerBackTitle ?? headerBack?.title,
133
+ // `href` is only applicable to web
134
+ href: undefined,
135
+ });
136
136
 
137
- const headerRightElement = headerRight?.({
138
- tintColor,
139
- canGoBack,
140
- });
137
+ const headerRightElement = headerRight?.({
138
+ tintColor,
139
+ canGoBack,
140
+ });
141
141
 
142
- const headerTitleElement =
143
- typeof headerTitle === "function"
144
- ? headerTitle({
145
- tintColor,
146
- children: titleText,
147
- })
148
- : null;
142
+ const headerTitleElement =
143
+ typeof headerTitle === "function"
144
+ ? headerTitle({
145
+ tintColor,
146
+ children: titleText,
147
+ })
148
+ : null;
149
149
 
150
- const hasHeaderSearchBar =
151
- isSearchBarAvailableForCurrentPlatform && headerSearchBarOptions != null;
150
+ const hasHeaderSearchBar =
151
+ isSearchBarAvailableForCurrentPlatform && headerSearchBarOptions != null;
152
152
 
153
- /**
154
- * We need to set this in if:
155
- * - Back button should stay visible when `headerLeft` is specified
156
- * - If `headerTitle` for Android is specified, so we only need to remove the title and keep the back button
157
- */
158
- const backButtonInCustomView =
159
- headerBackVisible ||
160
- (Platform.OS === "android" &&
161
- headerTitleElement != null &&
162
- headerLeftElement == null);
153
+ /**
154
+ * We need to set this in if:
155
+ * - Back button should stay visible when `headerLeft` is specified
156
+ * - If `headerTitle` for Android is specified, so we only need to remove the title and keep the back button
157
+ */
158
+ const backButtonInCustomView =
159
+ headerBackVisible ||
160
+ (Platform.OS === "android" &&
161
+ headerTitleElement != null &&
162
+ headerLeftElement == null);
163
163
 
164
- const translucent =
165
- headerBackground != null ||
166
- headerTransparent ||
167
- // When using a SearchBar or large title, the header needs to be translucent for it to work on iOS
168
- ((hasHeaderSearchBar || headerLargeTitle) &&
169
- Platform.OS === "ios" &&
170
- headerTransparent !== false);
164
+ const translucent =
165
+ headerBackground != null ||
166
+ headerTransparent ||
167
+ // When using a SearchBar or large title, the header needs to be translucent for it to work on iOS
168
+ ((hasHeaderSearchBar || headerLargeTitle) &&
169
+ Platform.OS === "ios" &&
170
+ headerTransparent !== false);
171
171
 
172
- const isBackButtonDisplayModeAvailable =
173
- // On iOS 14+
174
- Platform.OS === "ios" &&
175
- parseInt(Platform.Version, 10) >= 14 &&
176
- // Doesn't have custom styling, by default System, see: https://github.com/software-mansion/react-native-screens/pull/2105#discussion_r1565222738
177
- (backTitleFontFamily == null || backTitleFontFamily === "System") &&
178
- backTitleFontSize == null &&
179
- // Back button menu is not disabled
180
- headerBackButtonMenuEnabled !== false;
172
+ const isBackButtonDisplayModeAvailable =
173
+ // On iOS 14+
174
+ Platform.OS === "ios" &&
175
+ parseInt(Platform.Version, 10) >= 14 &&
176
+ // Doesn't have custom styling, by default System, see: https://github.com/software-mansion/react-native-screens/pull/2105#discussion_r1565222738
177
+ (backTitleFontFamily == null || backTitleFontFamily === "System") &&
178
+ backTitleFontSize == null &&
179
+ // Back button menu is not disabled
180
+ headerBackButtonMenuEnabled !== false;
181
181
 
182
- const isCenterViewRenderedAndroid = headerTitleAlign === "center";
182
+ const isCenterViewRenderedAndroid = headerTitleAlign === "center";
183
183
 
184
- const children = (
185
- <>
186
- {Platform.OS === "ios" ? (
187
- <>
188
- {headerLeftElement != null ? (
189
- <ScreenStackHeaderLeftView>
190
- {headerLeftElement}
191
- </ScreenStackHeaderLeftView>
192
- ) : null}
193
- {headerTitleElement != null ? (
194
- <ScreenStackHeaderCenterView>
195
- {headerTitleElement}
196
- </ScreenStackHeaderCenterView>
197
- ) : null}
198
- </>
199
- ) : (
200
- <>
201
- {headerLeftElement != null || typeof headerTitle === "function" ? (
202
- // The style passed to header left, together with title element being wrapped
203
- // in flex view is reqruied for proper header layout, in particular,
204
- // for the text truncation to work.
205
- <ScreenStackHeaderLeftView
206
- style={!isCenterViewRenderedAndroid ? { flex: 1 } : null}
207
- >
208
- {headerLeftElement}
209
- {headerTitleAlign !== "center" ? (
210
- typeof headerTitle === "function" ? (
211
- <View style={{ flex: 1 }}>{headerTitleElement}</View>
212
- ) : (
213
- <View style={{ flex: 1 }}>
214
- <HeaderTitle
215
- tintColor={tintColor}
216
- style={headerTitleStyleSupported}
217
- >
218
- {titleText}
219
- </HeaderTitle>
220
- </View>
221
- )
222
- ) : null}
223
- </ScreenStackHeaderLeftView>
224
- ) : null}
225
- {isCenterViewRenderedAndroid ? (
226
- <ScreenStackHeaderCenterView>
227
- {typeof headerTitle === "function" ? (
228
- headerTitleElement
229
- ) : (
230
- <HeaderTitle
231
- tintColor={tintColor}
232
- style={headerTitleStyleSupported}
233
- >
234
- {titleText}
235
- </HeaderTitle>
236
- )}
237
- </ScreenStackHeaderCenterView>
238
- ) : null}
239
- </>
240
- )}
241
- {headerBackImageSource !== undefined ? (
242
- <ScreenStackHeaderBackButtonImage source={headerBackImageSource} />
243
- ) : null}
244
- {headerRightElement != null ? (
245
- <ScreenStackHeaderRightView>
246
- {headerRightElement}
247
- </ScreenStackHeaderRightView>
248
- ) : null}
249
- {hasHeaderSearchBar ? (
250
- <ScreenStackHeaderSearchBarView>
251
- <SearchBar {...headerSearchBarOptions} />
252
- </ScreenStackHeaderSearchBarView>
253
- ) : null}
254
- </>
255
- );
184
+ const children = (
185
+ <>
186
+ {Platform.OS === "ios" ? (
187
+ <>
188
+ {headerLeftElement != null ? (
189
+ <ScreenStackHeaderLeftView>
190
+ {headerLeftElement}
191
+ </ScreenStackHeaderLeftView>
192
+ ) : null}
193
+ {headerTitleElement != null ? (
194
+ <ScreenStackHeaderCenterView>
195
+ {headerTitleElement}
196
+ </ScreenStackHeaderCenterView>
197
+ ) : null}
198
+ </>
199
+ ) : (
200
+ <>
201
+ {headerLeftElement != null || typeof headerTitle === "function" ? (
202
+ // The style passed to header left, together with title element being wrapped
203
+ // in flex view is reqruied for proper header layout, in particular,
204
+ // for the text truncation to work.
205
+ <ScreenStackHeaderLeftView
206
+ style={!isCenterViewRenderedAndroid ? { flex: 1 } : null}
207
+ >
208
+ {headerLeftElement}
209
+ {headerTitleAlign !== "center" ? (
210
+ typeof headerTitle === "function" ? (
211
+ <View style={{ flex: 1 }}>{headerTitleElement}</View>
212
+ ) : (
213
+ <View style={{ flex: 1 }}>
214
+ <HeaderTitle
215
+ tintColor={tintColor}
216
+ style={headerTitleStyleSupported}
217
+ >
218
+ {titleText}
219
+ </HeaderTitle>
220
+ </View>
221
+ )
222
+ ) : null}
223
+ </ScreenStackHeaderLeftView>
224
+ ) : null}
225
+ {isCenterViewRenderedAndroid ? (
226
+ <ScreenStackHeaderCenterView>
227
+ {typeof headerTitle === "function" ? (
228
+ headerTitleElement
229
+ ) : (
230
+ <HeaderTitle
231
+ tintColor={tintColor}
232
+ style={headerTitleStyleSupported}
233
+ >
234
+ {titleText}
235
+ </HeaderTitle>
236
+ )}
237
+ </ScreenStackHeaderCenterView>
238
+ ) : null}
239
+ </>
240
+ )}
241
+ {headerBackImageSource !== undefined ? (
242
+ <ScreenStackHeaderBackButtonImage source={headerBackImageSource} />
243
+ ) : null}
244
+ {headerRightElement != null ? (
245
+ <ScreenStackHeaderRightView>
246
+ {headerRightElement}
247
+ </ScreenStackHeaderRightView>
248
+ ) : null}
249
+ {hasHeaderSearchBar ? (
250
+ <ScreenStackHeaderSearchBarView>
251
+ <SearchBar {...headerSearchBarOptions} />
252
+ </ScreenStackHeaderSearchBarView>
253
+ ) : null}
254
+ </>
255
+ );
256
256
 
257
- return {
258
- backButtonInCustomView,
259
- backgroundColor: headerBackgroundColor,
260
- backTitle: headerBackTitle,
261
- backTitleVisible: isBackButtonDisplayModeAvailable
262
- ? undefined
263
- : headerBackButtonDisplayMode !== "minimal",
264
- backButtonDisplayMode: isBackButtonDisplayModeAvailable
265
- ? headerBackButtonDisplayMode
266
- : undefined,
267
- backTitleFontFamily,
268
- backTitleFontSize,
269
- blurEffect: headerBlurEffect,
270
- color: tintColor,
271
- direction,
272
- disableBackButtonMenu: headerBackButtonMenuEnabled === false,
273
- hidden: headerShown === false,
274
- hideBackButton: headerBackVisible === false,
275
- hideShadow:
276
- headerShadowVisible === false ||
277
- headerBackground != null ||
278
- (headerTransparent && headerShadowVisible !== true),
279
- largeTitle: headerLargeTitle,
280
- largeTitleBackgroundColor,
281
- largeTitleColor,
282
- largeTitleFontFamily,
283
- largeTitleFontSize,
284
- largeTitleFontWeight,
285
- largeTitleHideShadow: headerLargeTitleShadowVisible === false,
286
- title: titleText,
287
- titleColor,
288
- titleFontFamily,
289
- titleFontSize,
290
- titleFontWeight: String(titleFontWeight),
291
- topInsetEnabled: headerTopInsetEnabled,
292
- translucent: translucent === true,
293
- children,
294
- } as const;
257
+ return {
258
+ backButtonInCustomView,
259
+ backgroundColor: headerBackgroundColor,
260
+ backTitle: headerBackTitle,
261
+ backTitleVisible: isBackButtonDisplayModeAvailable
262
+ ? undefined
263
+ : headerBackButtonDisplayMode !== "minimal",
264
+ backButtonDisplayMode: isBackButtonDisplayModeAvailable
265
+ ? headerBackButtonDisplayMode
266
+ : undefined,
267
+ backTitleFontFamily,
268
+ backTitleFontSize,
269
+ blurEffect: headerBlurEffect,
270
+ color: tintColor,
271
+ direction,
272
+ disableBackButtonMenu: headerBackButtonMenuEnabled === false,
273
+ hidden: headerShown === false,
274
+ hideBackButton: headerBackVisible === false,
275
+ hideShadow:
276
+ headerShadowVisible === false ||
277
+ headerBackground != null ||
278
+ (headerTransparent && headerShadowVisible !== true),
279
+ largeTitle: headerLargeTitle,
280
+ largeTitleBackgroundColor,
281
+ largeTitleColor,
282
+ largeTitleFontFamily,
283
+ largeTitleFontSize,
284
+ largeTitleFontWeight,
285
+ largeTitleHideShadow: headerLargeTitleShadowVisible === false,
286
+ title: titleText,
287
+ titleColor,
288
+ titleFontFamily,
289
+ titleFontSize,
290
+ titleFontWeight: String(titleFontWeight),
291
+ topInsetEnabled: headerTopInsetEnabled,
292
+ translucent: translucent === true,
293
+ children,
294
+ } as const;
295
295
  }
@@ -0,0 +1,46 @@
1
+ import type React from "react";
2
+ import type { Descriptor } from "@react-navigation/native";
3
+ import { RootTransitionAware } from "../components/root-transition-aware";
4
+ import { ScreenGestureProvider } from "./gestures";
5
+ import { KeysProvider } from "./keys";
6
+ import { TransitionStylesProvider } from "./transition-styles";
7
+
8
+ type AnyDescriptor = Descriptor<any, any, any>;
9
+
10
+ type ScreenLifecycleComponent = React.ComponentType<{
11
+ children: React.ReactNode;
12
+ }>;
13
+
14
+ type ScreenTransitionProviderProps<DescriptorType extends AnyDescriptor> = {
15
+ previous?: DescriptorType;
16
+ current: DescriptorType;
17
+ next?: DescriptorType;
18
+ children: React.ReactNode;
19
+ };
20
+
21
+ export function createScreenTransitionProvider<
22
+ DescriptorType extends AnyDescriptor,
23
+ >(ScreenLifecycleComponent: ScreenLifecycleComponent) {
24
+ return function ScreenTransitionProvider({
25
+ previous,
26
+ current,
27
+ next,
28
+ children,
29
+ }: ScreenTransitionProviderProps<DescriptorType>) {
30
+ return (
31
+ <KeysProvider<DescriptorType>
32
+ previous={previous}
33
+ current={current}
34
+ next={next}
35
+ >
36
+ <ScreenGestureProvider>
37
+ <ScreenLifecycleComponent>
38
+ <TransitionStylesProvider>
39
+ <RootTransitionAware>{children}</RootTransitionAware>
40
+ </TransitionStylesProvider>
41
+ </ScreenLifecycleComponent>
42
+ </ScreenGestureProvider>
43
+ </KeysProvider>
44
+ );
45
+ };
46
+ }