react-native-screen-transitions 1.2.0 → 2.0.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 (344) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +211 -156
  3. package/lib/commonjs/__tests__ /geometry.test.js +178 -0
  4. package/lib/commonjs/__tests__ /geometry.test.js.map +1 -0
  5. package/lib/commonjs/components/bounds-activator.js +33 -0
  6. package/lib/commonjs/components/bounds-activator.js.map +1 -0
  7. package/lib/commonjs/components/controllers/screen-lifecycle.js +66 -0
  8. package/lib/commonjs/components/controllers/screen-lifecycle.js.map +1 -0
  9. package/lib/commonjs/components/create-transition-aware-component.js +96 -0
  10. package/lib/commonjs/components/create-transition-aware-component.js.map +1 -0
  11. package/lib/commonjs/components/root-transition-aware.js +56 -0
  12. package/lib/commonjs/components/root-transition-aware.js.map +1 -0
  13. package/lib/commonjs/configs/index.js +12 -0
  14. package/lib/commonjs/configs/index.js.map +1 -0
  15. package/lib/commonjs/configs/presets.js +206 -0
  16. package/lib/commonjs/configs/presets.js.map +1 -0
  17. package/lib/commonjs/configs/specs.js +14 -0
  18. package/lib/commonjs/configs/specs.js.map +1 -0
  19. package/lib/commonjs/hooks/animation/use-associated-style.js +36 -0
  20. package/lib/commonjs/hooks/animation/use-associated-style.js.map +1 -0
  21. package/lib/commonjs/hooks/animation/use-screen-animation.js +120 -0
  22. package/lib/commonjs/hooks/animation/use-screen-animation.js.map +1 -0
  23. package/lib/commonjs/hooks/bounds/use-bound-measurer.js +52 -0
  24. package/lib/commonjs/hooks/bounds/use-bound-measurer.js.map +1 -0
  25. package/lib/commonjs/hooks/gestures/use-build-gestures.js +239 -0
  26. package/lib/commonjs/hooks/gestures/use-build-gestures.js.map +1 -0
  27. package/lib/commonjs/hooks/gestures/use-scroll-progress.js +57 -0
  28. package/lib/commonjs/hooks/gestures/use-scroll-progress.js.map +1 -0
  29. package/lib/commonjs/hooks/use-stable-callback.js +17 -0
  30. package/lib/commonjs/hooks/use-stable-callback.js.map +1 -0
  31. package/lib/commonjs/index.js +37 -0
  32. package/lib/commonjs/index.js.map +1 -0
  33. package/lib/commonjs/integrations/native-stack/navigators/createNativeStackNavigator.js +68 -0
  34. package/lib/commonjs/integrations/native-stack/navigators/createNativeStackNavigator.js.map +1 -0
  35. package/lib/commonjs/integrations/native-stack/utils/debounce.js +16 -0
  36. package/lib/commonjs/integrations/native-stack/utils/debounce.js.map +1 -0
  37. package/lib/commonjs/integrations/native-stack/utils/getModalRoutesKeys.js +17 -0
  38. package/lib/commonjs/integrations/native-stack/utils/getModalRoutesKeys.js.map +1 -0
  39. package/lib/commonjs/integrations/native-stack/utils/useAnimatedHeaderHeight.js +18 -0
  40. package/lib/commonjs/integrations/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
  41. package/lib/commonjs/integrations/native-stack/utils/useDismissedRouteError.js +22 -0
  42. package/lib/commonjs/integrations/native-stack/utils/useDismissedRouteError.js.map +1 -0
  43. package/lib/commonjs/integrations/native-stack/utils/useInvalidPreventRemoveError.js +25 -0
  44. package/lib/commonjs/integrations/native-stack/utils/useInvalidPreventRemoveError.js.map +1 -0
  45. package/lib/commonjs/integrations/native-stack/views/FontProcessor.js +10 -0
  46. package/lib/commonjs/integrations/native-stack/views/FontProcessor.js.map +1 -0
  47. package/lib/commonjs/integrations/native-stack/views/FontProcessor.native.js +18 -0
  48. package/lib/commonjs/integrations/native-stack/views/FontProcessor.native.js.map +1 -0
  49. package/lib/commonjs/integrations/native-stack/views/FooterComponent.js +17 -0
  50. package/lib/commonjs/integrations/native-stack/views/FooterComponent.js.map +1 -0
  51. package/lib/commonjs/integrations/native-stack/views/NativeStackView.js +138 -0
  52. package/lib/commonjs/integrations/native-stack/views/NativeStackView.js.map +1 -0
  53. package/lib/commonjs/integrations/native-stack/views/NativeStackView.native.js +497 -0
  54. package/lib/commonjs/integrations/native-stack/views/NativeStackView.native.js.map +1 -0
  55. package/lib/commonjs/integrations/native-stack/views/useHeaderConfigProps.js +203 -0
  56. package/lib/commonjs/integrations/native-stack/views/useHeaderConfigProps.js.map +1 -0
  57. package/lib/commonjs/package.json +1 -0
  58. package/lib/commonjs/providers/gestures.js +64 -0
  59. package/lib/commonjs/providers/gestures.js.map +1 -0
  60. package/lib/commonjs/providers/keys.js +35 -0
  61. package/lib/commonjs/providers/keys.js.map +1 -0
  62. package/lib/commonjs/stores/animations.js +39 -0
  63. package/lib/commonjs/stores/animations.js.map +1 -0
  64. package/lib/commonjs/stores/bounds.js +64 -0
  65. package/lib/commonjs/stores/bounds.js.map +1 -0
  66. package/lib/commonjs/stores/gestures.js +38 -0
  67. package/lib/commonjs/stores/gestures.js.map +1 -0
  68. package/lib/commonjs/stores/navigator-dismiss-state.js +23 -0
  69. package/lib/commonjs/stores/navigator-dismiss-state.js.map +1 -0
  70. package/lib/commonjs/stores/utils/reset-stores-for-screen.js +20 -0
  71. package/lib/commonjs/stores/utils/reset-stores-for-screen.js.map +1 -0
  72. package/lib/commonjs/types/animation.js +6 -0
  73. package/lib/commonjs/types/animation.js.map +1 -0
  74. package/lib/commonjs/types/bounds.js +6 -0
  75. package/lib/commonjs/types/bounds.js.map +1 -0
  76. package/lib/commonjs/types/core.js +6 -0
  77. package/lib/commonjs/types/core.js.map +1 -0
  78. package/lib/commonjs/types/gesture.js +2 -0
  79. package/lib/commonjs/types/gesture.js.map +1 -0
  80. package/lib/commonjs/types/navigator.js +6 -0
  81. package/lib/commonjs/types/navigator.js.map +1 -0
  82. package/lib/commonjs/types/utils.js +2 -0
  83. package/lib/commonjs/types/utils.js.map +1 -0
  84. package/lib/commonjs/utils/animation/animate.js +18 -0
  85. package/lib/commonjs/utils/animation/animate.js.map +1 -0
  86. package/lib/commonjs/utils/animation/run-transition.js +48 -0
  87. package/lib/commonjs/utils/animation/run-transition.js.map +1 -0
  88. package/lib/commonjs/utils/bounds/_types/builder.js +6 -0
  89. package/lib/commonjs/utils/bounds/_types/builder.js.map +1 -0
  90. package/lib/commonjs/utils/bounds/_types/geometry.js +2 -0
  91. package/lib/commonjs/utils/bounds/_types/geometry.js.map +1 -0
  92. package/lib/commonjs/utils/bounds/_types/get-bounds.js +6 -0
  93. package/lib/commonjs/utils/bounds/_types/get-bounds.js.map +1 -0
  94. package/lib/commonjs/utils/bounds/build-bound-styles.js +145 -0
  95. package/lib/commonjs/utils/bounds/build-bound-styles.js.map +1 -0
  96. package/lib/commonjs/utils/bounds/constants.js +31 -0
  97. package/lib/commonjs/utils/bounds/constants.js.map +1 -0
  98. package/lib/commonjs/utils/bounds/flatten-styles.js +27 -0
  99. package/lib/commonjs/utils/bounds/flatten-styles.js.map +1 -0
  100. package/lib/commonjs/utils/bounds/geometry.js +94 -0
  101. package/lib/commonjs/utils/bounds/geometry.js.map +1 -0
  102. package/lib/commonjs/utils/bounds/get-bounds.js +51 -0
  103. package/lib/commonjs/utils/bounds/get-bounds.js.map +1 -0
  104. package/lib/commonjs/utils/bounds/index.js +38 -0
  105. package/lib/commonjs/utils/bounds/index.js.map +1 -0
  106. package/lib/commonjs/utils/bounds/style-composers.js +199 -0
  107. package/lib/commonjs/utils/bounds/style-composers.js.map +1 -0
  108. package/lib/commonjs/utils/gesture/apply-gesture-activation-criteria.js +81 -0
  109. package/lib/commonjs/utils/gesture/apply-gesture-activation-criteria.js.map +1 -0
  110. package/lib/commonjs/utils/gesture/map-gesture-to-progress.js +17 -0
  111. package/lib/commonjs/utils/gesture/map-gesture-to-progress.js.map +1 -0
  112. package/lib/commonjs/utils/gesture/normalize-gesture-translation.js +21 -0
  113. package/lib/commonjs/utils/gesture/normalize-gesture-translation.js.map +1 -0
  114. package/lib/commonjs/utils/index.js +17 -0
  115. package/lib/commonjs/utils/index.js.map +1 -0
  116. package/lib/module/__tests__ /geometry.test.js +178 -0
  117. package/lib/module/__tests__ /geometry.test.js.map +1 -0
  118. package/lib/module/components/bounds-activator.js +28 -0
  119. package/lib/module/components/bounds-activator.js.map +1 -0
  120. package/lib/module/components/controllers/screen-lifecycle.js +60 -0
  121. package/lib/module/components/controllers/screen-lifecycle.js.map +1 -0
  122. package/lib/module/components/create-transition-aware-component.js +91 -0
  123. package/lib/module/components/create-transition-aware-component.js.map +1 -0
  124. package/lib/module/components/root-transition-aware.js +51 -0
  125. package/lib/module/components/root-transition-aware.js.map +1 -0
  126. package/lib/module/configs/index.js +5 -0
  127. package/lib/module/configs/index.js.map +1 -0
  128. package/lib/module/configs/presets.js +197 -0
  129. package/lib/module/configs/presets.js.map +1 -0
  130. package/lib/module/configs/specs.js +10 -0
  131. package/lib/module/configs/specs.js.map +1 -0
  132. package/lib/module/hooks/animation/use-associated-style.js +32 -0
  133. package/lib/module/hooks/animation/use-associated-style.js.map +1 -0
  134. package/lib/module/hooks/animation/use-screen-animation.js +115 -0
  135. package/lib/module/hooks/animation/use-screen-animation.js.map +1 -0
  136. package/lib/module/hooks/bounds/use-bound-measurer.js +47 -0
  137. package/lib/module/hooks/bounds/use-bound-measurer.js.map +1 -0
  138. package/lib/module/hooks/gestures/use-build-gestures.js +234 -0
  139. package/lib/module/hooks/gestures/use-build-gestures.js.map +1 -0
  140. package/lib/module/hooks/gestures/use-scroll-progress.js +52 -0
  141. package/lib/module/hooks/gestures/use-scroll-progress.js.map +1 -0
  142. package/lib/module/hooks/use-stable-callback.js +13 -0
  143. package/lib/module/hooks/use-stable-callback.js.map +1 -0
  144. package/lib/module/index.js +21 -0
  145. package/lib/module/index.js.map +1 -0
  146. package/lib/module/integrations/native-stack/navigators/createNativeStackNavigator.js +63 -0
  147. package/lib/module/integrations/native-stack/navigators/createNativeStackNavigator.js.map +1 -0
  148. package/lib/module/integrations/native-stack/utils/debounce.js +12 -0
  149. package/lib/module/integrations/native-stack/utils/debounce.js.map +1 -0
  150. package/lib/module/integrations/native-stack/utils/getModalRoutesKeys.js +12 -0
  151. package/lib/module/integrations/native-stack/utils/getModalRoutesKeys.js.map +1 -0
  152. package/lib/module/integrations/native-stack/utils/useAnimatedHeaderHeight.js +12 -0
  153. package/lib/module/integrations/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
  154. package/lib/module/integrations/native-stack/utils/useDismissedRouteError.js +17 -0
  155. package/lib/module/integrations/native-stack/utils/useDismissedRouteError.js.map +1 -0
  156. package/lib/module/integrations/native-stack/utils/useInvalidPreventRemoveError.js +20 -0
  157. package/lib/module/integrations/native-stack/utils/useInvalidPreventRemoveError.js.map +1 -0
  158. package/lib/module/integrations/native-stack/views/FontProcessor.js +6 -0
  159. package/lib/module/integrations/native-stack/views/FontProcessor.js.map +1 -0
  160. package/lib/module/integrations/native-stack/views/FontProcessor.native.js +12 -0
  161. package/lib/module/integrations/native-stack/views/FontProcessor.native.js.map +1 -0
  162. package/lib/module/integrations/native-stack/views/FooterComponent.js +13 -0
  163. package/lib/module/integrations/native-stack/views/FooterComponent.js.map +1 -0
  164. package/lib/module/integrations/native-stack/views/NativeStackView.js +133 -0
  165. package/lib/module/integrations/native-stack/views/NativeStackView.js.map +1 -0
  166. package/lib/module/integrations/native-stack/views/NativeStackView.native.js +492 -0
  167. package/lib/module/integrations/native-stack/views/NativeStackView.native.js.map +1 -0
  168. package/lib/module/integrations/native-stack/views/useHeaderConfigProps.js +199 -0
  169. package/lib/module/integrations/native-stack/views/useHeaderConfigProps.js.map +1 -0
  170. package/lib/module/providers/gestures.js +58 -0
  171. package/lib/module/providers/gestures.js.map +1 -0
  172. package/lib/module/providers/keys.js +29 -0
  173. package/lib/module/providers/keys.js.map +1 -0
  174. package/lib/module/stores/animations.js +33 -0
  175. package/lib/module/stores/animations.js.map +1 -0
  176. package/lib/module/stores/bounds.js +60 -0
  177. package/lib/module/stores/bounds.js.map +1 -0
  178. package/lib/module/stores/gestures.js +34 -0
  179. package/lib/module/stores/gestures.js.map +1 -0
  180. package/lib/module/stores/navigator-dismiss-state.js +19 -0
  181. package/lib/module/stores/navigator-dismiss-state.js.map +1 -0
  182. package/lib/module/stores/utils/reset-stores-for-screen.js +16 -0
  183. package/lib/module/stores/utils/reset-stores-for-screen.js.map +1 -0
  184. package/lib/module/types/animation.js +4 -0
  185. package/lib/module/types/animation.js.map +1 -0
  186. package/lib/module/types/bounds.js +4 -0
  187. package/lib/module/types/bounds.js.map +1 -0
  188. package/lib/module/types/core.js +4 -0
  189. package/lib/module/types/core.js.map +1 -0
  190. package/lib/module/types/gesture.js +2 -0
  191. package/lib/module/types/gesture.js.map +1 -0
  192. package/lib/module/types/navigator.js +4 -0
  193. package/lib/module/types/navigator.js.map +1 -0
  194. package/lib/module/types/utils.js +2 -0
  195. package/lib/module/types/utils.js.map +1 -0
  196. package/lib/module/utils/animation/animate.js +13 -0
  197. package/lib/module/utils/animation/animate.js.map +1 -0
  198. package/lib/module/utils/animation/run-transition.js +43 -0
  199. package/lib/module/utils/animation/run-transition.js.map +1 -0
  200. package/lib/module/utils/bounds/_types/builder.js +4 -0
  201. package/lib/module/utils/bounds/_types/builder.js.map +1 -0
  202. package/lib/module/utils/bounds/_types/geometry.js +2 -0
  203. package/lib/module/utils/bounds/_types/geometry.js.map +1 -0
  204. package/lib/module/utils/bounds/_types/get-bounds.js +4 -0
  205. package/lib/module/utils/bounds/_types/get-bounds.js.map +1 -0
  206. package/lib/module/utils/bounds/build-bound-styles.js +141 -0
  207. package/lib/module/utils/bounds/build-bound-styles.js.map +1 -0
  208. package/lib/module/utils/bounds/constants.js +26 -0
  209. package/lib/module/utils/bounds/constants.js.map +1 -0
  210. package/lib/module/utils/bounds/flatten-styles.js +23 -0
  211. package/lib/module/utils/bounds/flatten-styles.js.map +1 -0
  212. package/lib/module/utils/bounds/geometry.js +89 -0
  213. package/lib/module/utils/bounds/geometry.js.map +1 -0
  214. package/lib/module/utils/bounds/get-bounds.js +46 -0
  215. package/lib/module/utils/bounds/get-bounds.js.map +1 -0
  216. package/lib/module/utils/bounds/index.js +33 -0
  217. package/lib/module/utils/bounds/index.js.map +1 -0
  218. package/lib/module/utils/bounds/style-composers.js +191 -0
  219. package/lib/module/utils/bounds/style-composers.js.map +1 -0
  220. package/lib/module/utils/gesture/apply-gesture-activation-criteria.js +76 -0
  221. package/lib/module/utils/gesture/apply-gesture-activation-criteria.js.map +1 -0
  222. package/lib/module/utils/gesture/map-gesture-to-progress.js +12 -0
  223. package/lib/module/utils/gesture/map-gesture-to-progress.js.map +1 -0
  224. package/lib/module/utils/gesture/normalize-gesture-translation.js +16 -0
  225. package/lib/module/utils/gesture/normalize-gesture-translation.js.map +1 -0
  226. package/lib/module/utils/index.js +4 -0
  227. package/lib/module/utils/index.js.map +1 -0
  228. package/lib/typescript/components/bounds-activator.d.ts +8 -0
  229. package/lib/typescript/components/bounds-activator.d.ts.map +1 -0
  230. package/lib/typescript/components/controllers/screen-lifecycle.d.ts +6 -0
  231. package/lib/typescript/components/controllers/screen-lifecycle.d.ts.map +1 -0
  232. package/lib/typescript/components/create-transition-aware-component.d.ts +9 -0
  233. package/lib/typescript/components/create-transition-aware-component.d.ts.map +1 -0
  234. package/lib/typescript/components/root-transition-aware.d.ts +6 -0
  235. package/lib/typescript/components/root-transition-aware.d.ts.map +1 -0
  236. package/lib/typescript/configs/index.d.ts +3 -0
  237. package/lib/typescript/configs/index.d.ts.map +1 -0
  238. package/lib/typescript/configs/presets.d.ts +9 -0
  239. package/lib/typescript/configs/presets.d.ts.map +1 -0
  240. package/lib/typescript/configs/specs.d.ts +3 -0
  241. package/lib/typescript/configs/specs.d.ts.map +1 -0
  242. package/lib/typescript/hooks/animation/use-associated-style.d.ts +11 -0
  243. package/lib/typescript/hooks/animation/use-associated-style.d.ts.map +1 -0
  244. package/lib/typescript/hooks/animation/use-screen-animation.d.ts +7 -0
  245. package/lib/typescript/hooks/animation/use-screen-animation.d.ts.map +1 -0
  246. package/lib/typescript/hooks/bounds/use-bound-measurer.d.ts +18 -0
  247. package/lib/typescript/hooks/bounds/use-bound-measurer.d.ts.map +1 -0
  248. package/lib/typescript/hooks/gestures/use-build-gestures.d.ts +11 -0
  249. package/lib/typescript/hooks/gestures/use-build-gestures.d.ts.map +1 -0
  250. package/lib/typescript/hooks/gestures/use-scroll-progress.d.ts +14 -0
  251. package/lib/typescript/hooks/gestures/use-scroll-progress.d.ts.map +1 -0
  252. package/lib/typescript/hooks/use-stable-callback.d.ts +2 -0
  253. package/lib/typescript/hooks/use-stable-callback.d.ts.map +1 -0
  254. package/lib/typescript/index.d.ts +1275 -0
  255. package/lib/typescript/index.d.ts.map +1 -0
  256. package/lib/typescript/integrations/native-stack/navigators/createNativeStackNavigator.d.ts +16 -0
  257. package/lib/typescript/integrations/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -0
  258. package/lib/typescript/integrations/native-stack/utils/debounce.d.ts +2 -0
  259. package/lib/typescript/integrations/native-stack/utils/debounce.d.ts.map +1 -0
  260. package/lib/typescript/integrations/native-stack/utils/getModalRoutesKeys.d.ts +4 -0
  261. package/lib/typescript/integrations/native-stack/utils/getModalRoutesKeys.d.ts.map +1 -0
  262. package/lib/typescript/integrations/native-stack/utils/useAnimatedHeaderHeight.d.ts +5 -0
  263. package/lib/typescript/integrations/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -0
  264. package/lib/typescript/integrations/native-stack/utils/useDismissedRouteError.d.ts +6 -0
  265. package/lib/typescript/integrations/native-stack/utils/useDismissedRouteError.d.ts.map +1 -0
  266. package/lib/typescript/integrations/native-stack/utils/useInvalidPreventRemoveError.d.ts +3 -0
  267. package/lib/typescript/integrations/native-stack/utils/useInvalidPreventRemoveError.d.ts.map +1 -0
  268. package/lib/typescript/integrations/native-stack/views/FontProcessor.d.ts +2 -0
  269. package/lib/typescript/integrations/native-stack/views/FontProcessor.d.ts.map +1 -0
  270. package/lib/typescript/integrations/native-stack/views/FontProcessor.native.d.ts +2 -0
  271. package/lib/typescript/integrations/native-stack/views/FontProcessor.native.d.ts.map +1 -0
  272. package/lib/typescript/integrations/native-stack/views/FooterComponent.d.ts +7 -0
  273. package/lib/typescript/integrations/native-stack/views/FooterComponent.d.ts.map +1 -0
  274. package/lib/typescript/integrations/native-stack/views/NativeStackView.d.ts +11 -0
  275. package/lib/typescript/integrations/native-stack/views/NativeStackView.d.ts.map +1 -0
  276. package/lib/typescript/integrations/native-stack/views/NativeStackView.native.d.ts +11 -0
  277. package/lib/typescript/integrations/native-stack/views/NativeStackView.native.d.ts.map +1 -0
  278. package/lib/typescript/integrations/native-stack/views/useHeaderConfigProps.d.ts +44 -0
  279. package/lib/typescript/integrations/native-stack/views/useHeaderConfigProps.d.ts.map +1 -0
  280. package/lib/typescript/providers/gestures.d.ts +22 -0
  281. package/lib/typescript/providers/gestures.d.ts.map +1 -0
  282. package/lib/typescript/providers/keys.d.ts +16 -0
  283. package/lib/typescript/providers/keys.d.ts.map +1 -0
  284. package/lib/typescript/stores/animations.d.ts +17 -0
  285. package/lib/typescript/stores/animations.d.ts.map +1 -0
  286. package/lib/typescript/stores/bounds.d.ts +21 -0
  287. package/lib/typescript/stores/bounds.d.ts.map +1 -0
  288. package/lib/typescript/stores/gestures.d.ts +21 -0
  289. package/lib/typescript/stores/gestures.d.ts.map +1 -0
  290. package/lib/typescript/stores/navigator-dismiss-state.d.ts +7 -0
  291. package/lib/typescript/stores/navigator-dismiss-state.d.ts.map +1 -0
  292. package/lib/typescript/stores/utils/reset-stores-for-screen.d.ts +6 -0
  293. package/lib/typescript/stores/utils/reset-stores-for-screen.d.ts.map +1 -0
  294. package/lib/typescript/types/animation.d.ts +65 -0
  295. package/lib/typescript/types/animation.d.ts.map +1 -0
  296. package/lib/typescript/types/bounds.d.ts +73 -0
  297. package/lib/typescript/types/bounds.d.ts.map +1 -0
  298. package/lib/typescript/types/core.d.ts +47 -0
  299. package/lib/typescript/types/core.d.ts.map +1 -0
  300. package/lib/typescript/types/gesture.d.ts +28 -0
  301. package/lib/typescript/types/gesture.d.ts.map +1 -0
  302. package/lib/typescript/types/navigator.d.ts +683 -0
  303. package/lib/typescript/types/navigator.d.ts.map +1 -0
  304. package/lib/typescript/types/utils.d.ts +5 -0
  305. package/lib/typescript/types/utils.d.ts.map +1 -0
  306. package/lib/typescript/utils/animation/animate.d.ts +4 -0
  307. package/lib/typescript/utils/animation/animate.d.ts.map +1 -0
  308. package/lib/typescript/utils/animation/run-transition.d.ts +11 -0
  309. package/lib/typescript/utils/animation/run-transition.d.ts.map +1 -0
  310. package/lib/typescript/utils/bounds/_types/builder.d.ts +36 -0
  311. package/lib/typescript/utils/bounds/_types/builder.d.ts.map +1 -0
  312. package/lib/typescript/utils/bounds/_types/geometry.d.ts +16 -0
  313. package/lib/typescript/utils/bounds/_types/geometry.d.ts.map +1 -0
  314. package/lib/typescript/utils/bounds/_types/get-bounds.d.ts +10 -0
  315. package/lib/typescript/utils/bounds/_types/get-bounds.d.ts.map +1 -0
  316. package/lib/typescript/utils/bounds/build-bound-styles.d.ts +4 -0
  317. package/lib/typescript/utils/bounds/build-bound-styles.d.ts.map +1 -0
  318. package/lib/typescript/utils/bounds/constants.d.ts +7 -0
  319. package/lib/typescript/utils/bounds/constants.d.ts.map +1 -0
  320. package/lib/typescript/utils/bounds/flatten-styles.d.ts +2 -0
  321. package/lib/typescript/utils/bounds/flatten-styles.d.ts.map +1 -0
  322. package/lib/typescript/utils/bounds/geometry.d.ts +24 -0
  323. package/lib/typescript/utils/bounds/geometry.d.ts.map +1 -0
  324. package/lib/typescript/utils/bounds/get-bounds.d.ts +4 -0
  325. package/lib/typescript/utils/bounds/get-bounds.d.ts.map +1 -0
  326. package/lib/typescript/utils/bounds/index.d.ts +15 -0
  327. package/lib/typescript/utils/bounds/index.d.ts.map +1 -0
  328. package/lib/typescript/utils/bounds/style-composers.d.ts +40 -0
  329. package/lib/typescript/utils/bounds/style-composers.d.ts.map +1 -0
  330. package/lib/typescript/utils/gesture/apply-gesture-activation-criteria.d.ts +17 -0
  331. package/lib/typescript/utils/gesture/apply-gesture-activation-criteria.d.ts.map +1 -0
  332. package/lib/typescript/utils/gesture/map-gesture-to-progress.d.ts +5 -0
  333. package/lib/typescript/utils/gesture/map-gesture-to-progress.d.ts.map +1 -0
  334. package/lib/typescript/utils/gesture/normalize-gesture-translation.d.ts +6 -0
  335. package/lib/typescript/utils/gesture/normalize-gesture-translation.d.ts.map +1 -0
  336. package/lib/typescript/utils/index.d.ts +2 -0
  337. package/lib/typescript/utils/index.d.ts.map +1 -0
  338. package/package.json +67 -54
  339. package/dist/index.d.mts +0 -1513
  340. package/dist/index.d.ts +0 -1513
  341. package/dist/index.js +0 -1283
  342. package/dist/index.js.map +0 -1
  343. package/dist/index.mjs +0 -1279
  344. package/dist/index.mjs.map +0 -1
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/components/create-transition-aware-component.tsx","../src/components/transition-gesture-handler-provider.tsx","../src/contexts/gesture.ts","../src/hooks/use-build-gestures.tsx","../src/configs/specs.ts","../src/animation-engine.ts","../src/store/utils/create-vanilla-store.ts","../src/store/utils/handle-screen-dismiss.tsx","../src/store/utils/remove-screen.tsx","../src/store/utils/should-skip-prevent-default.tsx","../src/store/utils/update-screen.tsx","../src/store/index.ts","../src/utils/animate.ts","../src/utils/create-config.ts","../src/utils/default-screen-options.ts","../src/utils/noop-interpolator.ts","../src/utils/gesture/apply-gesture-activation-criteria.ts","../src/utils/gesture/map-gesture-to-progress.ts","../src/hooks/use-key.tsx","../src/hooks/use-screen-animation.tsx","../src/hooks/use-skip-first-frame.tsx","../src/components/create-transition-aware-scrollable.tsx","../src/hooks/use-scroll-progress.tsx","../src/configs/presets.ts","../src/navigator/create-transitionable-stack-navigator.tsx"],"sourcesContent":["import { FlatList, Pressable, ScrollView, View } from \"react-native\";\nimport { createTransitionAwareComponent } from \"./components/create-transition-aware-component\";\nimport { createTransitionAwareScrollable } from \"./components/create-transition-aware-scrollable\";\nimport { presets, specs } from \"./configs\";\nimport { useScreenAnimation } from \"./hooks/use-screen-animation\";\nimport { createTransitionableStackNavigator } from \"./navigator/create-transitionable-stack-navigator\";\nimport { createConfig, createScreenConfig } from \"./utils/create-config\";\nimport { defaultScreenOptions } from \"./utils/default-screen-options\";\n\nexport default {\n\tView: createTransitionAwareComponent(View),\n\tPressable: createTransitionAwareComponent(Pressable),\n\tScrollView: createTransitionAwareScrollable(ScrollView),\n\tFlatList: createTransitionAwareScrollable(FlatList),\n\n\tdefaultScreenOptions,\n\tpresets,\n\tspecs,\n\t/**\n\t * Create a transition aware component\n\t */\n\tcreateTransitionAwareComponent,\n\t/**\n\t * Create a transition aware scrollable component\n\t */\n\tcreateTransitionAwareScrollable,\n\t/**\n\t * Create a transitionable native stack navigator.\n\t *\n\t */\n\tcreateTransitionableStackNavigator,\n\t/**\n\t * @deprecated Use {@link createTransitionableStackNavigator} instead.\n\t */\n\tcreateConfig,\n\t/**\n\t * @deprecated Use {@link createTransitionableStackNavigator} instead.\n\t */\n\tcreateScreenConfig,\n\t/**\n\t * @deprecated Use {@link createTransitionableStackNavigator} instead.\n\t */\n};\nexport { useScreenAnimation };\n\n// Navigator type\nexport type { TransitionStackNavigatorTypeBag } from \"./navigator/create-transitionable-stack-navigator\";\n\n/**\n * Configuration type for screen transitions. Use this to build custom presets.\n */\nexport type { TransitionConfig } from \"./types\";\n","import type React from \"react\";\nimport { type ComponentType, forwardRef, memo } from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport Animated, {\n type AnimatedProps,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\nimport { TransitionGestureHandlerProvider } from \"@/components/transition-gesture-handler-provider\";\nimport { _useScreenAnimation } from \"../hooks/use-screen-animation\";\nimport { useSkipFirstFrame } from \"../hooks/use-skip-first-frame\";\nimport type { Any } from \"../types\";\n\nexport function createTransitionAwareComponent<P extends object>(\n\tWrapped: ComponentType<P>,\n) {\n\tconst AnimatedComponent = Animated.createAnimatedComponent(Wrapped);\n\n\ttype Props = AnimatedProps<P>;\n\n\tconst Inner = forwardRef<React.ComponentRef<typeof AnimatedComponent>, Props>(\n\t\t(props, ref) => {\n\t\t\tconst { children, style, ...rest } = props as Any;\n\n\t\t\tconst { screenStyleInterpolator, ...screenInterpolationProps } =\n\t\t\t\t_useScreenAnimation();\n\n\t\t\tconst screenContainerStyle = useAnimatedStyle(() => {\n\t\t\t\t\"worklet\";\n\t\t\t\treturn (\n\t\t\t\t\tscreenStyleInterpolator(screenInterpolationProps).contentStyle || {}\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tconst overlayStyle = useAnimatedStyle(() => {\n\t\t\t\t\"worklet\";\n\t\t\t\treturn (\n\t\t\t\t\tscreenStyleInterpolator(screenInterpolationProps).overlayStyle || {}\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tconst { style: flickerFixStyle } = useSkipFirstFrame();\n\n\t\t\treturn (\n\t\t\t\t<TransitionGestureHandlerProvider>\n\t\t\t\t\t<Animated.View style={[{ flex: 1 }, flickerFixStyle]}>\n\t\t\t\t\t\t<Animated.View\n\t\t\t\t\t\t\tstyle={[StyleSheet.absoluteFillObject, overlayStyle]}\n\t\t\t\t\t\t\tpointerEvents=\"none\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AnimatedComponent\n\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t{ flex: 1, position: \"relative\" },\n\t\t\t\t\t\t\t\tscreenContainerStyle,\n\t\t\t\t\t\t\t\tstyle,\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</AnimatedComponent>\n\t\t\t\t\t</Animated.View>\n\t\t\t\t</TransitionGestureHandlerProvider>\n\t\t\t);\n\t\t},\n\t);\n\n\tInner.displayName = `Transition(${Wrapped.displayName || Wrapped.name || \"Component\"})`;\n\n\treturn memo(Inner) as React.MemoExoticComponent<\n\t\tReact.ForwardRefExoticComponent<\n\t\t\tAnimatedProps<P> & React.RefAttributes<React.ComponentRef<typeof Wrapped>>\n\t\t>\n\t>;\n}\n","import { useMemo } from \"react\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSharedValue } from \"react-native-reanimated\";\nimport {\n\tGestureContext,\n\ttype GestureContextType,\n\ttype ScrollProgress,\n} from \"../contexts/gesture\";\nimport { useBuildGestures } from \"../hooks/use-build-gestures\";\n\ntype TransitionGestureHandlerProviderProps = {\n\tchildren: React.ReactNode;\n};\n\nexport const TransitionGestureHandlerProvider = ({\n\tchildren,\n}: TransitionGestureHandlerProviderProps) => {\n\tconst scrollProgress = useSharedValue<ScrollProgress>({\n\t\tx: 0,\n\t\ty: 0,\n\t\tcontentHeight: 0,\n\t\tcontentWidth: 0,\n\t\tlayoutHeight: 0,\n\t\tlayoutWidth: 0,\n\t});\n\tconst { panGesture, nativeGesture } = useBuildGestures({\n\t\tscrollProgress,\n\t});\n\tconst value = useMemo(() => {\n\t\treturn {\n\t\t\tpanGesture,\n\t\t\tscrollProgress,\n\t\t\tnativeGesture,\n\t\t};\n\t}, [panGesture, scrollProgress, nativeGesture]) satisfies GestureContextType;\n\n\treturn (\n\t\t<GestureContext.Provider value={value}>\n\t\t\t<GestureDetector gesture={panGesture}>{children}</GestureDetector>\n\t\t</GestureContext.Provider>\n\t);\n};\n","import { createContext, useContext } from \"react\";\nimport { Gesture, type GestureType } from \"react-native-gesture-handler\";\nimport { type SharedValue, useSharedValue } from \"react-native-reanimated\";\n\nexport type ScrollProgress = {\n\tx: number;\n\ty: number;\n\tcontentHeight: number;\n\tcontentWidth: number;\n\tlayoutHeight: number;\n\tlayoutWidth: number;\n};\n\nexport interface GestureContextType {\n\tpanGesture: GestureType;\n\tnativeGesture: GestureType;\n\tscrollProgress: SharedValue<ScrollProgress>;\n\tisPlaceholder?: boolean;\n}\n\nexport const GestureContext = createContext<GestureContextType | undefined>(\n\tundefined,\n);\n\nexport const useGestureContext = () => {\n\tconst context = useContext(GestureContext);\n\tconst scrollProgressFallback = useSharedValue<ScrollProgress>({\n\t\tx: 0,\n\t\ty: 0,\n\t\tcontentHeight: 0,\n\t\tcontentWidth: 0,\n\t\tlayoutHeight: 0,\n\t\tlayoutWidth: 0,\n\t});\n\n\tif (!context) {\n\t\treturn {\n\t\t\tpanGesture: Gesture.Pan(),\n\t\t\tnativeGesture: Gesture.Native(),\n\t\t\tscrollProgress: scrollProgressFallback,\n\t\t\tisPlaceholder: true,\n\t\t};\n\t}\n\n\treturn context;\n};\n","import { useNavigation } from \"@react-navigation/native\";\nimport { useCallback, useMemo } from \"react\";\nimport { useWindowDimensions } from \"react-native\";\nimport {\n\tGesture,\n\ttype GestureStateChangeEvent,\n\ttype GestureTouchEvent,\n\ttype GestureUpdateEvent,\n\ttype PanGestureHandlerEventPayload,\n} from \"react-native-gesture-handler\";\nimport type { GestureStateManagerType } from \"react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager\";\nimport {\n\tinterpolate,\n\trunOnJS,\n\ttype SharedValue,\n\tuseSharedValue,\n} from \"react-native-reanimated\";\nimport { DefaultSpec } from \"@/configs/specs\";\nimport type { ScrollProgress } from \"@/contexts/gesture\";\nimport { animationValues } from \"../animation-engine\";\nimport { ScreenStore } from \"../store\";\nimport { animate } from \"../utils\";\nimport { applyGestureActivationCriteria } from \"../utils/gesture/apply-gesture-activation-criteria\";\nimport { mapGestureToProgress } from \"../utils/gesture/map-gesture-to-progress\";\nimport { useKey } from \"./use-key\";\n\nconst GESTURE_VELOCITY_IMPACT = 0.3;\nconst DEFAULT_GESTURE_RESPONSE_DISTANCE = 50;\nconst DEFAULT_GESTURE_DIRECTION = \"horizontal\";\nconst DEFAULT_GESTURE_ENABLED = false;\n\ninterface BuildGesturesHookProps {\n\tscrollProgress: SharedValue<ScrollProgress>;\n}\n\nexport const useBuildGestures = ({\n\tscrollProgress,\n}: BuildGesturesHookProps) => {\n\tconst key = useKey();\n\tconst dimensions = useWindowDimensions();\n\tconst navigation = useNavigation();\n\tconst currentScreen = ScreenStore.use(\n\t\tuseCallback((state) => state.screens[key], [key]),\n\t);\n\tconst handleDismiss = useCallback(\n\t\t(screenBeingDismissed: string) => {\n\t\t\tScreenStore.handleScreenDismiss(screenBeingDismissed, navigation);\n\t\t},\n\t\t[navigation],\n\t);\n\tconst initialTouch = useSharedValue({\n\t\tx: 0,\n\t\ty: 0,\n\t});\n\n\tconst translateX = animationValues.gestureX[key];\n\tconst translateY = animationValues.gestureY[key];\n\tconst normalizedGestureX = animationValues.normalizedGestureX[key];\n\tconst normalizedGestureY = animationValues.normalizedGestureY[key];\n\tconst isDragging = animationValues.gestureDragging[key];\n\tconst isDismissing = animationValues.isDismissing[key];\n\tconst progress = animationValues.screenProgress[key] || 0;\n\n\tconst {\n\t\tgestureDirection = DEFAULT_GESTURE_DIRECTION,\n\t\tgestureEnabled = DEFAULT_GESTURE_ENABLED,\n\t\ttransitionSpec = {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\tgestureVelocityImpact = GESTURE_VELOCITY_IMPACT,\n\t\tgestureResponseDistance = DEFAULT_GESTURE_RESPONSE_DISTANCE,\n\t} = currentScreen ?? {};\n\n\tconst directions = Array.isArray(gestureDirection)\n\t\t? gestureDirection\n\t\t: [gestureDirection];\n\n\tconst nativeGesture = Gesture.Native();\n\n\tconst onTouchesDown = useCallback(\n\t\t(e: GestureTouchEvent) => {\n\t\t\t\"worklet\";\n\t\t\tconst firstTouch = e.changedTouches[0];\n\t\t\tinitialTouch.value = { x: firstTouch.x, y: firstTouch.y };\n\t\t},\n\t\t[initialTouch],\n\t);\n\n\tconst onTouchesMove = useCallback(\n\t\t(e: GestureTouchEvent, manager: GestureStateManagerType) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst touch = e.changedTouches[0];\n\t\t\tconst deltaX = touch.x - initialTouch.value.x;\n\t\t\tconst deltaY = touch.y - initialTouch.value.y;\n\n\t\t\tconst isVerticalSwipe = Math.abs(deltaY) > Math.abs(deltaX);\n\t\t\tconst isHorizontalSwipe = Math.abs(deltaX) > Math.abs(deltaY);\n\n\t\t\tconst isSwipingDown = isVerticalSwipe && deltaY > 0;\n\t\t\tconst isSwipingUp = isVerticalSwipe && deltaY < 0;\n\t\t\tconst isSwipingRight = isHorizontalSwipe && deltaX > 0;\n\t\t\tconst isSwipingLeft = isHorizontalSwipe && deltaX < 0;\n\n\t\t\tconst minMovement = 5;\n\t\t\tconst hasEnoughMovement =\n\t\t\t\tMath.abs(deltaX) > minMovement || Math.abs(deltaY) > minMovement;\n\n\t\t\tif (!hasEnoughMovement) return;\n\n\t\t\tif (isDragging.value) {\n\t\t\t\tmanager.activate();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet shouldActivate = false;\n\n\t\t\tfor (const direction of directions) {\n\t\t\t\tswitch (direction) {\n\t\t\t\t\tcase \"vertical\":\n\t\t\t\t\t\tif (isSwipingDown) {\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.y <= 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"vertical-inverted\":\n\t\t\t\t\t\tif (isSwipingUp) {\n\t\t\t\t\t\t\tconst maxScrollableY =\n\t\t\t\t\t\t\t\tscrollProgress.value.contentHeight -\n\t\t\t\t\t\t\t\tscrollProgress.value.layoutHeight;\n\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.y >= maxScrollableY;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"horizontal\":\n\t\t\t\t\t\tif (isSwipingRight) {\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.x <= 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"horizontal-inverted\":\n\t\t\t\t\t\tif (isSwipingLeft) {\n\t\t\t\t\t\t\tconst maxProgress =\n\t\t\t\t\t\t\t\tscrollProgress.value.contentWidth -\n\t\t\t\t\t\t\t\tscrollProgress.value.layoutWidth;\n\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.x >= maxProgress;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bidirectional\":\n\t\t\t\t\t\tif (isSwipingDown) {\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.y <= 0;\n\t\t\t\t\t\t} else if (isSwipingUp) {\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.y <= 0;\n\t\t\t\t\t\t} else if (isSwipingRight || isSwipingLeft) {\n\t\t\t\t\t\t\tshouldActivate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (shouldActivate) break;\n\t\t\t}\n\n\t\t\tif ((shouldActivate || isDragging.value) && !isDismissing.value) {\n\t\t\t\tmanager.activate();\n\t\t\t} else {\n\t\t\t\tmanager.fail();\n\t\t\t}\n\t\t},\n\t\t[initialTouch, directions, scrollProgress, isDragging, isDismissing],\n\t);\n\n\tconst onStart = useCallback(() => {\n\t\t\"worklet\";\n\t\tisDragging.value = 1;\n\t\tisDismissing.value = 0;\n\t}, [isDragging, isDismissing]);\n\n\tconst onUpdate = useCallback(\n\t\t(event: GestureUpdateEvent<PanGestureHandlerEventPayload>) => {\n\t\t\t\"worklet\";\n\n\t\t\tlet gestureProgress = 0;\n\n\t\t\ttranslateX.value = event.translationX;\n\t\t\ttranslateY.value = event.translationY;\n\t\t\tnormalizedGestureX.value = interpolate(\n\t\t\t\tevent.translationX,\n\t\t\t\t[-dimensions.width, dimensions.width],\n\t\t\t\t[-1, 1],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\t\t\tnormalizedGestureY.value = interpolate(\n\t\t\t\tevent.translationY,\n\t\t\t\t[-dimensions.height, dimensions.height],\n\t\t\t\t[-1, 1],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\tif (directions.includes(\"bidirectional\")) {\n\t\t\t\tconst distance = Math.sqrt(\n\t\t\t\t\tevent.translationX ** 2 + event.translationY ** 2,\n\t\t\t\t);\n\t\t\t\tgestureProgress = mapGestureToProgress(distance, dimensions.width);\n\t\t\t} else {\n\t\t\t\tlet maxProgress = 0;\n\n\t\t\t\tconst allowedDown = directions.includes(\"vertical\");\n\t\t\t\tconst allowedUp = directions.includes(\"vertical-inverted\");\n\t\t\t\tconst allowedRight = directions.includes(\"horizontal\");\n\t\t\t\tconst allowedLeft = directions.includes(\"horizontal-inverted\");\n\n\t\t\t\tif (allowedRight && event.translationX > 0) {\n\t\t\t\t\tconst currentProgress = mapGestureToProgress(\n\t\t\t\t\t\tevent.translationX,\n\t\t\t\t\t\tdimensions.width,\n\t\t\t\t\t);\n\t\t\t\t\tmaxProgress = Math.max(maxProgress, currentProgress);\n\t\t\t\t}\n\n\t\t\t\tif (allowedLeft && event.translationX < 0) {\n\t\t\t\t\tconst currentProgress = mapGestureToProgress(\n\t\t\t\t\t\t-event.translationX,\n\t\t\t\t\t\tdimensions.width,\n\t\t\t\t\t);\n\t\t\t\t\tmaxProgress = Math.max(maxProgress, currentProgress);\n\t\t\t\t}\n\n\t\t\t\tif (allowedDown && event.translationY > 0) {\n\t\t\t\t\tconst currentProgress = mapGestureToProgress(\n\t\t\t\t\t\tevent.translationY,\n\t\t\t\t\t\tdimensions.height,\n\t\t\t\t\t);\n\t\t\t\t\tmaxProgress = Math.max(maxProgress, currentProgress);\n\t\t\t\t}\n\n\t\t\t\tif (allowedUp && event.translationY < 0) {\n\t\t\t\t\tconst currentProgress = mapGestureToProgress(\n\t\t\t\t\t\t-event.translationY,\n\t\t\t\t\t\tdimensions.height,\n\t\t\t\t\t);\n\t\t\t\t\tmaxProgress = Math.max(maxProgress, currentProgress);\n\t\t\t\t}\n\n\t\t\t\tgestureProgress = maxProgress;\n\t\t\t}\n\n\t\t\tprogress.value = 1 - gestureProgress;\n\t\t},\n\t\t[\n\t\t\tdimensions,\n\t\t\tdirections,\n\t\t\ttranslateX,\n\t\t\ttranslateY,\n\t\t\tnormalizedGestureX,\n\t\t\tnormalizedGestureY,\n\t\t\tprogress,\n\t\t],\n\t);\n\n\tconst onEnd = useCallback(\n\t\t(event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst { translationX, translationY, velocityX, velocityY } = event;\n\n\t\t\tconst dismissThreshold = 0.5;\n\n\t\t\tif (directions.includes(\"bidirectional\")) {\n\t\t\t\tconst finalX = Math.abs(\n\t\t\t\t\ttranslationX + velocityX * gestureVelocityImpact,\n\t\t\t\t);\n\t\t\t\tconst finalY = Math.abs(\n\t\t\t\t\ttranslationY + velocityY * gestureVelocityImpact,\n\t\t\t\t);\n\t\t\t\tconst finalDistance = Math.sqrt(finalX ** 2 + finalY ** 2);\n\t\t\t\tisDismissing.value = Number(\n\t\t\t\t\tfinalDistance > dimensions.width * dismissThreshold,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst allowedDown = directions.includes(\"vertical\");\n\t\t\t\tconst allowedUp = directions.includes(\"vertical-inverted\");\n\t\t\t\tconst allowedRight = directions.includes(\"horizontal\");\n\t\t\t\tconst allowedLeft = directions.includes(\"horizontal-inverted\");\n\n\t\t\t\tif (\n\t\t\t\t\tallowedRight &&\n\t\t\t\t\ttranslationX + velocityX * gestureVelocityImpact >\n\t\t\t\t\t\tdimensions.width * dismissThreshold\n\t\t\t\t) {\n\t\t\t\t\tisDismissing.value = 1;\n\t\t\t\t} else if (\n\t\t\t\t\tallowedLeft &&\n\t\t\t\t\t-translationX - velocityX * gestureVelocityImpact >\n\t\t\t\t\t\tdimensions.width * dismissThreshold\n\t\t\t\t) {\n\t\t\t\t\tisDismissing.value = 1;\n\t\t\t\t} else if (\n\t\t\t\t\tallowedDown &&\n\t\t\t\t\ttranslationY + velocityY * gestureVelocityImpact >\n\t\t\t\t\t\tdimensions.height * dismissThreshold\n\t\t\t\t) {\n\t\t\t\t\tisDismissing.value = 1;\n\t\t\t\t} else if (\n\t\t\t\t\tallowedUp &&\n\t\t\t\t\t-translationY - velocityY * gestureVelocityImpact >\n\t\t\t\t\t\tdimensions.height * dismissThreshold\n\t\t\t\t) {\n\t\t\t\t\tisDismissing.value = 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst finalProgress = isDismissing.value ? 0 : 1;\n\t\t\tconst spec = isDismissing.value\n\t\t\t\t? transitionSpec?.close\n\t\t\t\t: transitionSpec?.open;\n\n\t\t\tconst onFinish = isDismissing.value\n\t\t\t\t? (isFinished?: boolean) => {\n\t\t\t\t\t\t\"worklet\";\n\t\t\t\t\t\tif (isFinished) runOnJS(handleDismiss)(currentScreen?.id);\n\t\t\t\t\t}\n\t\t\t\t: undefined;\n\n\t\t\tprogress.value = animate(finalProgress, spec, onFinish);\n\t\t\ttranslateX.value = animate(0, spec);\n\t\t\ttranslateY.value = animate(0, spec);\n\t\t\tnormalizedGestureX.value = animate(0, spec);\n\t\t\tnormalizedGestureY.value = animate(0, spec);\n\t\t\tisDragging.value = 0;\n\t\t},\n\t\t[\n\t\t\tdimensions,\n\t\t\tdirections,\n\t\t\ttranslateX,\n\t\t\ttranslateY,\n\t\t\tnormalizedGestureX,\n\t\t\tnormalizedGestureY,\n\t\t\tprogress,\n\t\t\thandleDismiss,\n\t\t\tcurrentScreen?.id,\n\t\t\ttransitionSpec?.close,\n\t\t\ttransitionSpec?.open,\n\t\t\tgestureVelocityImpact,\n\t\t\tisDragging,\n\t\t\tisDismissing,\n\t\t],\n\t);\n\n\tconst panGesture = useMemo(\n\t\t() =>\n\t\t\tGesture.Pan()\n\t\t\t\t.enabled(gestureEnabled)\n\t\t\t\t.manualActivation(true)\n\t\t\t\t.onTouchesDown(onTouchesDown)\n\t\t\t\t.onTouchesMove(onTouchesMove)\n\t\t\t\t.onStart(onStart)\n\t\t\t\t.onUpdate(onUpdate)\n\t\t\t\t.onEnd(onEnd)\n\t\t\t\t.blocksExternalGesture(nativeGesture),\n\t\t[\n\t\t\tgestureEnabled,\n\t\t\tnativeGesture,\n\t\t\tonTouchesDown,\n\t\t\tonTouchesMove,\n\t\t\tonStart,\n\t\t\tonUpdate,\n\t\t\tonEnd,\n\t\t],\n\t);\n\n\tapplyGestureActivationCriteria({\n\t\tgestureDirection,\n\t\tgestureResponseDistance,\n\t\tpanGesture,\n\t});\n\n\treturn { panGesture, nativeGesture };\n};\n","import type { WithSpringConfig } from \"react-native-reanimated\";\n\nexport const DefaultSpec: WithSpringConfig = {\n\tstiffness: 1000,\n\tdamping: 500,\n\tmass: 3,\n\tovershootClamping: true,\n\trestSpeedThreshold: 0.01,\n};\n","import {\n\tcancelAnimation,\n\tmakeMutable,\n\trunOnJS,\n\ttype SharedValue,\n} from \"react-native-reanimated\";\n\nimport { ScreenStore } from \"./store/index\";\nimport type { ScreenState } from \"./types\";\nimport { animate } from \"./utils/animate\";\n\ntype ScreenKey = string;\n\nexport const animationValues: Record<\n\tstring,\n\tRecord<ScreenKey, SharedValue<number>>\n> = {\n\tscreenProgress: {},\n\tgestureX: {},\n\tgestureY: {},\n\tnormalizedGestureX: {},\n\tnormalizedGestureY: {},\n\tgestureDragging: {},\n\tisDismissing: {},\n};\n\nconst triggerAnimation = (screen: ScreenState) => {\n\t\"worklet\";\n\tconst { id, closing, status, transitionSpec, onAnimationFinish } = screen;\n\n\tconst progressValue = animationValues.screenProgress[id];\n\n\tif (!progressValue && __DEV__) {\n\t\tconsole.warn(`Animation values not found for screen: ${id}`);\n\t\treturn;\n\t}\n\n\tconst animationConfig = closing\n\t\t? transitionSpec?.close\n\t\t: transitionSpec?.open;\n\n\tconst targetValue = status || 0;\n\n\tprogressValue.value = animate(targetValue, animationConfig, (finished) => {\n\t\t\"worklet\";\n\t\tif (finished && onAnimationFinish) {\n\t\t\trunOnJS(onAnimationFinish)(true);\n\t\t}\n\t});\n};\n\nScreenStore.use.subscribeWithSelector(\n\t(state) => state.screens,\n\t(currScreens, prevScreens) => {\n\t\tconst currKeys = Object.keys(currScreens);\n\t\tconst prevKeys = Object.keys(prevScreens);\n\n\t\tconst incomingKeys = currKeys.filter((k) => !prevKeys.includes(k));\n\t\tconst removedKeys = prevKeys.filter((k) => !currKeys.includes(k));\n\t\tconst changedKeys = currKeys.filter(\n\t\t\t(k) => currScreens[k] !== prevScreens[k],\n\t\t);\n\n\t\tconst animatableValues = Object.values(animationValues);\n\n\t\tfor (const incomingKey of incomingKeys) {\n\t\t\tfor (const value of animatableValues) {\n\t\t\t\tvalue[incomingKey] = makeMutable(0);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Remove mutable values for removed screens\n\t\t * @see {@link https://docs.swmansion.com/react-native-reanimated/docs/advanced/makeMutable/}\n\t\t */\n\t\tfor (const removedKey of removedKeys) {\n\t\t\tfor (const value of animatableValues) {\n\t\t\t\tcancelAnimation(value[removedKey]);\n\t\t\t\tdelete value[removedKey];\n\t\t\t}\n\t\t}\n\n\t\tfor (const changedKey of changedKeys) {\n\t\t\tconst currentScreen = currScreens[changedKey];\n\t\t\tif (currentScreen) {\n\t\t\t\ttriggerAnimation(currentScreen);\n\t\t\t}\n\t\t}\n\t},\n);\n","import { type Draft, produce } from \"immer\";\nimport { useSyncExternalStore } from \"react\";\n\ntype Listener = () => void;\ntype StateUpdater<T> = (draft: Draft<T>) => void;\n\ntype StoreListener<_, TSelectorOutput> = (\n\tselectedState: TSelectorOutput,\n\tpreviousSelectedState: TSelectorOutput,\n) => void;\n\nexport interface StoreApi<T> {\n\tsetState: (updater: StateUpdater<T>) => void;\n\tgetState: () => T;\n\tsubscribe: (listener: Listener) => () => void;\n\tsubscribeWithSelector: <TSelectorOutput>(\n\t\tselector: (state: T) => TSelectorOutput,\n\t\tlistener: StoreListener<T, TSelectorOutput>,\n\t) => () => void;\n}\n\nexport function createVanillaStore<TState>(initialState: TState) {\n\tlet state: TState = initialState;\n\tconst listeners = new Set<Listener>();\n\n\tconst getState = (): TState => state;\n\n\tconst setState = (updater: StateUpdater<TState>) => {\n\t\tconst nextState = produce(state, updater);\n\n\t\tif (nextState !== state) {\n\t\t\tstate = nextState;\n\t\t\tlisteners.forEach((listener) => listener());\n\t\t}\n\t};\n\n\tconst subscribe = (listener: Listener): (() => void) => {\n\t\tlisteners.add(listener);\n\t\treturn () => listeners.delete(listener);\n\t};\n\n\tconst subscribeWithSelector = <TSelectorOutput>(\n\t\tselector: (state: TState) => TSelectorOutput,\n\t\tlistener: StoreListener<TState, TSelectorOutput>,\n\t) => {\n\t\tlet previousSelectedState = selector(state);\n\n\t\tconst internalListener = () => {\n\t\t\tconst currentSelectedState = selector(getState());\n\n\t\t\tif (!Object.is(previousSelectedState, currentSelectedState)) {\n\t\t\t\tlistener(currentSelectedState, previousSelectedState);\n\t\t\t\tpreviousSelectedState = currentSelectedState;\n\t\t\t}\n\t\t};\n\n\t\tconst unsubscribe = subscribe(internalListener);\n\n\t\tlistener(previousSelectedState, previousSelectedState);\n\n\t\treturn unsubscribe;\n\t};\n\n\tfunction useStore<TSelectorOutput>(\n\t\tselector: (state: TState) => TSelectorOutput,\n\t): TSelectorOutput {\n\t\treturn useSyncExternalStore(subscribe, () => selector(getState()));\n\t}\n\n\tObject.assign(useStore, {\n\t\tsetState,\n\t\tgetState,\n\t\tsubscribe,\n\t\tsubscribeWithSelector,\n\t});\n\n\treturn useStore as typeof useStore & StoreApi<TState>;\n}\n","import { StackActions } from \"@react-navigation/native\";\nimport type { UseNavigation } from \"../../types\";\nimport { ScreenStore } from \"..\";\n\nexport const handleScreenDismiss = (\n\tscreenBeingDismissed: string,\n\tnavigation: UseNavigation,\n) => {\n\tconst { screens } = ScreenStore.use.getState();\n\tconst dismissedScreen = screens[screenBeingDismissed];\n\n\tif (!dismissedScreen) {\n\t\tnavigation.goBack();\n\t\treturn;\n\t}\n\n\tconst childScreens = Object.values(screens).filter(\n\t\t(screen) => screen.parentNavigatorKey === dismissedScreen.navigatorKey,\n\t);\n\n\tif (childScreens.length > 0) {\n\t\tScreenStore.updateScreen(dismissedScreen.id, {\n\t\t\tclosing: true,\n\t\t});\n\n\t\tnavigation.dispatch(StackActions.pop(childScreens.length));\n\t} else {\n\t\tnavigation.goBack();\n\t}\n};\n","import { ScreenStore } from \"..\";\n\nexport const removeScreen = (key: string | undefined) => {\n\tif (!key) return;\n\tScreenStore.use.setState(({ screens, screenKeys }) => {\n\t\tdelete screens[key];\n\n\t\tconst indexToRemove = screenKeys.indexOf(key);\n\t\tif (indexToRemove > -1) {\n\t\t\tscreenKeys.splice(indexToRemove, 1);\n\t\t}\n\t});\n};\n","import type { Any } from \"../../types\";\nimport { ScreenStore } from \"..\";\n\nexport const shouldSkipPreventDefault = (\n\tkey: string | undefined,\n\tnavigatorState: Any,\n) => {\n\tif (!key) return false;\n\n\tconst { screens } = ScreenStore.use.getState();\n\tconst currentScreen = screens[key];\n\n\t// We don't want to block the navigation event when the parent navigator holds the screen transition ( prevents delay in the back event )\n\tconst isLastScreenInStack =\n\t\tnavigatorState.routes.length === 1 && navigatorState.routes[0].key === key;\n\n\t// Child screens should be instantly dismissed when the parent navigator is closing. This prevents transparent modals from lingering. (Only happens when using deeply nested screen transitions)\n\tconst isParentNavigatorExiting = Boolean(\n\t\tcurrentScreen?.parentNavigatorKey &&\n\t\t\tObject.values(screens).some(\n\t\t\t\t(screen) =>\n\t\t\t\t\tscreen.navigatorKey === currentScreen.parentNavigatorKey &&\n\t\t\t\t\tscreen.closing,\n\t\t\t),\n\t);\n\n\treturn isLastScreenInStack || isParentNavigatorExiting;\n};\n","import type { Any } from \"../../types\";\nimport { ScreenStore } from \"..\";\n\nexport const updateScreen = (key: string | undefined, value: Any) => {\n\tif (!key) return;\n\n\tScreenStore.use.setState(({ screenKeys, screens }) => {\n\t\tconst currentScreen = screens[key];\n\n\t\tif (currentScreen) {\n\t\t\tscreens[key] = {\n\t\t\t\t...currentScreen,\n\t\t\t\t...value,\n\t\t\t};\n\t\t} else {\n\t\t\tconst { name = \"\", status = 0, closing = false, ...rest } = value;\n\n\t\t\tconst newIndex = screenKeys.length;\n\n\t\t\tscreens[key] = {\n\t\t\t\tid: key,\n\t\t\t\tindex: newIndex,\n\t\t\t\tname,\n\t\t\t\tstatus,\n\t\t\t\tclosing,\n\t\t\t\t...rest,\n\t\t\t};\n\n\t\t\tscreenKeys.push(key);\n\t\t}\n\t});\n};\n","import type { ScreenStateStore } from \"../types\";\nimport {\n\tcreateVanillaStore,\n\thandleScreenDismiss,\n\tremoveScreen,\n\tshouldSkipPreventDefault,\n\tupdateScreen,\n} from \"./utils\";\n\nconst useScreenStore = createVanillaStore<ScreenStateStore>({\n\tscreens: {},\n\tscreenKeys: [],\n});\n\nexport const ScreenStore = {\n\tuse: useScreenStore,\n\tupdateScreen,\n\tremoveScreen,\n\thandleScreenDismiss,\n\tshouldSkipPreventDefault,\n};\n","import {\n\ttype WithSpringConfig,\n\ttype WithTimingConfig,\n\twithSpring,\n\twithTiming,\n} from \"react-native-reanimated\";\nimport type {\n\tAnimatableValue,\n\tAnimationCallback,\n} from \"react-native-reanimated/lib/typescript/commonTypes\";\n\nexport const animate = <T extends AnimatableValue>(\n\ttoValue: T,\n\tconfig?: WithSpringConfig | WithTimingConfig,\n\tcallback?: AnimationCallback,\n) => {\n\t\"worklet\";\n\tconst isSpring =\n\t\ttypeof config === \"object\" &&\n\t\t!(\"duration\" in config) &&\n\t\t!(\"easing\" in config);\n\n\tif (!isSpring) {\n\t\treturn withTiming(toValue, config, callback);\n\t}\n\n\treturn withSpring(toValue, config, callback);\n};\n","import type { ParamListBase, RouteProp } from \"@react-navigation/native\";\nimport { ScreenStore } from \"../store\";\nimport type {\n\tAny,\n\tBeforeRemoveEvent,\n\tFocusEvent,\n\tTransitionConfig,\n\tTransitionListeners,\n} from \"../types\";\n\nexport interface TransitionEventHandlersProps extends TransitionConfig {\n\tnavigation: Any;\n\troute: RouteProp<ParamListBase, string>;\n}\n\nexport const createConfig = ({\n\tnavigation: reactNavigation,\n\troute,\n\t...config\n}: TransitionEventHandlersProps): TransitionListeners => {\n\treturn {\n\t\tfocus: (e: FocusEvent) => {\n\t\t\tconst parentNavigatorKey = reactNavigation.getParent()?.getState?.()?.key;\n\t\t\tconst navigatorKey = reactNavigation.getState().key;\n\n\t\t\tScreenStore.updateScreen(e.target, {\n\t\t\t\tid: e.target,\n\t\t\t\tname: route.name,\n\t\t\t\tstatus: 1,\n\t\t\t\tclosing: false,\n\t\t\t\tnavigatorKey,\n\t\t\t\tparentNavigatorKey,\n\t\t\t\t...config,\n\t\t\t});\n\t\t},\n\t\tbeforeRemove: (e: BeforeRemoveEvent) => {\n\t\t\tconst shouldSkipPreventDefault = ScreenStore.shouldSkipPreventDefault(\n\t\t\t\te.target,\n\t\t\t\treactNavigation.getState(),\n\t\t\t);\n\n\t\t\tif (shouldSkipPreventDefault) {\n\t\t\t\tScreenStore.removeScreen(e.target);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t\tconst handleFinish = (finished?: boolean) => {\n\t\t\t\tif (!finished) return;\n\t\t\t\tif (reactNavigation.canGoBack()) {\n\t\t\t\t\treactNavigation.dispatch(e.data?.action);\n\t\t\t\t\tScreenStore.removeScreen(e.target);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tScreenStore.updateScreen(e.target, {\n\t\t\t\tstatus: 0,\n\t\t\t\tclosing: true,\n\t\t\t\tonAnimationFinish: handleFinish,\n\t\t\t});\n\t\t},\n\t} as TransitionListeners;\n};\n\n/**\n * Create a config for a screen\n *\n * @param config - The config for the screen\n * @returns The config for the screen\n */\nexport const createScreenConfig = (\n\tconfig?: Omit<TransitionEventHandlersProps, \"navigation\" | \"route\">,\n) => {\n\treturn {\n\t\tlisteners: (l: Any) => createConfig({ ...l, ...(config || {}) }),\n\t};\n};\n","/**\n * Helper function to return the default screen options in order for the screen animations to work properly.\n */\nexport const defaultScreenOptions = () =>\n\t({\n\t\tpresentation: \"containedTransparentModal\",\n\t\theaderShown: false,\n\t\tanimation: \"none\",\n\t}) as const;\n","import type { TransitionInterpolatedStyle } from \"../types\";\n\nexport const noopinterpolator = (): TransitionInterpolatedStyle => {\n\t\"worklet\";\n\treturn {\n\t\tcontentStyle: {},\n\t\toverlayStyle: {},\n\t};\n};\n","import type { PanGesture } from \"react-native-gesture-handler\";\nimport type { TransitionConfig } from \"../../types\";\n\ninterface GestureActivationOptions {\n\tgestureDirection:\n\t\t| TransitionConfig[\"gestureDirection\"]\n\t\t| Array<TransitionConfig[\"gestureDirection\"]>;\n\tgestureResponseDistance: number;\n\tpanGesture: PanGesture;\n}\n\n/**\n * rngh requires this type instead a number[]. We're returning a num[] which is still correct, this is just to remove the type error.\n */\ntype OffsetErrorTypeBugFix = [start: number, end: number];\n\nexport const applyGestureActivationCriteria = ({\n\tgestureDirection,\n\tgestureResponseDistance,\n\tpanGesture,\n}: GestureActivationOptions) => {\n\tconst directions = Array.isArray(gestureDirection)\n\t\t? gestureDirection\n\t\t: [gestureDirection];\n\n\tif (directions.includes(\"bidirectional\")) {\n\t\treturn {\n\t\t\tactiveOffsetX: [\n\t\t\t\t-gestureResponseDistance,\n\t\t\t\tgestureResponseDistance,\n\t\t\t] as OffsetErrorTypeBugFix,\n\t\t\tactiveOffsetY: [\n\t\t\t\t-gestureResponseDistance,\n\t\t\t\tgestureResponseDistance,\n\t\t\t] as OffsetErrorTypeBugFix,\n\t\t};\n\t}\n\n\tconst allowedDown = directions.includes(\"vertical\");\n\tconst allowedUp = directions.includes(\"vertical-inverted\");\n\tconst allowedRight = directions.includes(\"horizontal\");\n\tconst allowedLeft = directions.includes(\"horizontal-inverted\");\n\n\tconst toleranceX = 15;\n\tconst toleranceY = 20;\n\tconst dist = gestureResponseDistance;\n\n\tconst result: {\n\t\tactiveOffsetX?: number | [number, number];\n\t\tfailOffsetX?: number | OffsetErrorTypeBugFix;\n\t\tactiveOffsetY?: number | [number, number];\n\t\tfailOffsetY?: number | OffsetErrorTypeBugFix;\n\t} = {};\n\n\tconst hasHorizontal = allowedLeft || allowedRight;\n\tif (hasHorizontal) {\n\t\tif (allowedLeft && allowedRight) {\n\t\t\tresult.activeOffsetX = [-dist, dist];\n\t\t} else if (allowedLeft) {\n\t\t\tresult.activeOffsetX = -dist;\n\t\t} else if (allowedRight) {\n\t\t\tresult.activeOffsetX = dist;\n\t\t}\n\n\t\tif (allowedRight && !allowedLeft) {\n\t\t\tresult.failOffsetX = -dist;\n\t\t} else if (allowedLeft && !allowedRight) {\n\t\t\tresult.failOffsetX = dist;\n\t\t}\n\t} else {\n\t\tresult.failOffsetX = [-toleranceX, toleranceX] as OffsetErrorTypeBugFix;\n\t}\n\n\tconst hasVertical = allowedUp || allowedDown;\n\tif (hasVertical) {\n\t\tif (allowedUp && allowedDown) {\n\t\t\tresult.activeOffsetY = [-dist, dist];\n\t\t} else if (allowedUp) {\n\t\t\tresult.activeOffsetY = -dist;\n\t\t} else if (allowedDown) {\n\t\t\tresult.activeOffsetY = dist;\n\t\t}\n\n\t\tif (allowedDown && !allowedUp) {\n\t\t\tresult.failOffsetY = -dist;\n\t\t} else if (allowedUp && !allowedDown) {\n\t\t\tresult.failOffsetY = dist;\n\t\t}\n\t} else {\n\t\tresult.failOffsetY = [-toleranceY, toleranceY] as OffsetErrorTypeBugFix;\n\t}\n\n\tif (result?.activeOffsetX) {\n\t\tpanGesture.activeOffsetX(result.activeOffsetX);\n\t}\n\tif (result?.activeOffsetY) {\n\t\tpanGesture.activeOffsetY(result.activeOffsetY);\n\t}\n\tif (result?.failOffsetX) {\n\t\tpanGesture.failOffsetX(result.failOffsetX);\n\t}\n\tif (result?.failOffsetY) {\n\t\tpanGesture.failOffsetY(result.failOffsetY);\n\t}\n\n\tpanGesture.enableTrackpadTwoFingerGesture(true);\n\n\treturn panGesture;\n};\n","/**\n * Utility function to map raw gesture translation to a progress value.\n */\nexport const mapGestureToProgress = (\n\ttranslation: number,\n\tdimension: number,\n) => {\n\t\"worklet\";\n\tconst rawProgress = translation / dimension;\n\treturn Math.max(0, Math.min(1, rawProgress));\n};\n","import { useRoute } from \"@react-navigation/native\";\n\nexport const useKey = () => useRoute().key;\n","import { useCallback, useMemo } from \"react\";\nimport { useWindowDimensions } from \"react-native\";\nimport { useSharedValue } from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { animationValues } from \"../animation-engine\";\nimport { ScreenStore } from \"../store\";\nimport type {\n\tScreenInterpolationProps,\n\tScreenStyleInterpolator,\n} from \"../types\";\nimport { noopinterpolator } from \"../utils/noop-interpolator\";\nimport { useKey } from \"./use-key\";\n\ninterface InternalScreenInterpolationProps extends ScreenInterpolationProps {\n\tscreenStyleInterpolator: ScreenStyleInterpolator;\n}\n\nconst useAnimationBuilder = () => {\n\tconst key = useKey();\n\tconst dimensions = useWindowDimensions();\n\tconst insets = useSafeAreaInsets();\n\n\tconst progressFallback = useSharedValue(0);\n\tconst gestureDraggingFallback = useSharedValue(0);\n\tconst gestureXFallback = useSharedValue(0);\n\tconst gestureYFallback = useSharedValue(0);\n\tconst normalizedGestureXFallback = useSharedValue(0);\n\tconst normalizedGestureYFallback = useSharedValue(0);\n\tconst isDismissingFallback = useSharedValue(0);\n\n\tconst currentScreen = ScreenStore.use(\n\t\tuseCallback((state) => state.screens[key], [key]),\n\t);\n\n\tconst actualNextScreen = ScreenStore.use(\n\t\tuseCallback(\n\t\t\t(state) => {\n\t\t\t\tconst current = state.screens[key];\n\t\t\t\tif (!current) return undefined;\n\n\t\t\t\tconst nextKey = state.screenKeys[current.index + 1];\n\t\t\t\tconst nextScreen = nextKey ? state.screens[nextKey] : undefined;\n\n\t\t\t\tconst shouldUseNext =\n\t\t\t\t\tnextScreen?.navigatorKey === current?.navigatorKey;\n\t\t\t\treturn shouldUseNext ? nextScreen : undefined;\n\t\t\t},\n\t\t\t[key],\n\t\t),\n\t);\n\n\tconst getAnimationValuesForScreen = useCallback(\n\t\t(screenId: string) => ({\n\t\t\tprogress: animationValues.screenProgress[screenId] || progressFallback,\n\t\t\tgesture: {\n\t\t\t\tisDragging:\n\t\t\t\t\tanimationValues.gestureDragging[screenId] || gestureDraggingFallback,\n\t\t\t\tx: animationValues.gestureX[screenId] || gestureXFallback,\n\t\t\t\ty: animationValues.gestureY[screenId] || gestureYFallback,\n\t\t\t\tnormalizedX:\n\t\t\t\t\tanimationValues.normalizedGestureX[screenId] ||\n\t\t\t\t\tnormalizedGestureXFallback,\n\t\t\t\tnormalizedY:\n\t\t\t\t\tanimationValues.normalizedGestureY[screenId] ||\n\t\t\t\t\tnormalizedGestureYFallback,\n\t\t\t\tisDismissing:\n\t\t\t\t\tanimationValues.isDismissing[screenId] || isDismissingFallback,\n\t\t\t},\n\t\t}),\n\t\t[\n\t\t\tprogressFallback,\n\t\t\tgestureDraggingFallback,\n\t\t\tgestureXFallback,\n\t\t\tgestureYFallback,\n\t\t\tnormalizedGestureXFallback,\n\t\t\tnormalizedGestureYFallback,\n\t\t\tisDismissingFallback,\n\t\t],\n\t);\n\n\treturn useMemo(() => {\n\t\treturn {\n\t\t\tcurrent: getAnimationValuesForScreen(key),\n\t\t\tnext: actualNextScreen\n\t\t\t\t? getAnimationValuesForScreen(actualNextScreen.id)\n\t\t\t\t: undefined,\n\t\t\tlayouts: { screen: dimensions },\n\t\t\tinsets,\n\t\t\tclosing: currentScreen?.closing || false,\n\t\t\tscreenStyleInterpolator:\n\t\t\t\tactualNextScreen?.screenStyleInterpolator ||\n\t\t\t\tcurrentScreen?.screenStyleInterpolator ||\n\t\t\t\tnoopinterpolator,\n\t\t};\n\t}, [\n\t\tkey,\n\t\tcurrentScreen,\n\t\tactualNextScreen,\n\t\tdimensions,\n\t\tinsets,\n\t\tgetAnimationValuesForScreen,\n\t]);\n};\n\nconst _useScreenAnimation = (): InternalScreenInterpolationProps => {\n\treturn useAnimationBuilder();\n};\n\nconst useScreenAnimation = (): ScreenInterpolationProps => {\n\tconst { screenStyleInterpolator: _, ...animationProps } =\n\t\tuseAnimationBuilder();\n\n\treturn animationProps;\n};\n\nexport { _useScreenAnimation, useScreenAnimation };\n","import { useEffect } from \"react\";\nimport { useAnimatedStyle, useSharedValue } from \"react-native-reanimated\";\n\n/**\n * This hook helps mitigate a race condition between the JS and UI thread where styles are not applied immediately.\n * By skipping one frame before rendering, it ensures styles are properly applied, removing a flicker effect.\n *\n * Related issue: https://github.com/software-mansion/react-native-reanimated/issues/4446\n */\nexport const useSkipFirstFrame = () => {\n\tconst opacity = useSharedValue(0);\n\tconst style = useAnimatedStyle(() => {\n\t\t\"worklet\";\n\t\treturn {\n\t\t\topacity: opacity.value,\n\t\t};\n\t});\n\n\tuseEffect(() => {\n\t\trequestAnimationFrame(() => {\n\t\t\topacity.value = 1;\n\t\t});\n\t}, [opacity]);\n\n\treturn { style };\n};\n","import { type ComponentType, forwardRef, memo } from \"react\";\nimport { View } from \"react-native\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport Animated, { type AnimatedProps } from \"react-native-reanimated\";\nimport { useGestureContext } from \"@/contexts/gesture\";\nimport { useScrollProgress } from \"@/hooks/use-scroll-progress\";\nimport type { Any } from \"@/types\";\nimport { createTransitionAwareComponent } from \"../utils\";\n\nexport function createTransitionAwareScrollable<P extends object>(\n\tScrollableComponent: ComponentType<P>,\n) {\n\tconst WithTransitionAwareness = createTransitionAwareComponent(View);\n\tconst AnimatedScrollableComponent =\n\t\tAnimated.createAnimatedComponent(ScrollableComponent);\n\n\ttype Props = AnimatedProps<P>;\n\n\tconst WithScrollAwareness = forwardRef<\n\t\tReact.ComponentRef<typeof ScrollableComponent>,\n\t\tProps\n\t>((props: Any, ref) => {\n\t\tconst { nativeGesture } = useGestureContext();\n\n\t\tconst { scrollHandler, onContentSizeChange } = useScrollProgress({\n\t\t\tonScroll: props.onScroll,\n\t\t\tonContentSizeChange: props.onContentSizeChange,\n\t\t});\n\n\t\treturn (\n\t\t\t<GestureDetector gesture={nativeGesture}>\n\t\t\t\t<AnimatedScrollableComponent\n\t\t\t\t\t{...(props as Any)}\n\t\t\t\t\tref={ref}\n\t\t\t\t\tonScroll={scrollHandler}\n\t\t\t\t\tonContentSizeChange={onContentSizeChange}\n\t\t\t\t\tscrollEventThrottle={props.scrollEventThrottle || 16}\n\t\t\t\t/>\n\t\t\t</GestureDetector>\n\t\t);\n\t});\n\n\tconst Wrapped = forwardRef<\n\t\tReact.ComponentRef<typeof ScrollableComponent>,\n\t\tProps\n\t>((props: Any, ref) => {\n\t\tconst { isPlaceholder } = useGestureContext();\n\n\t\tif (isPlaceholder) {\n\t\t\treturn (\n\t\t\t\t<WithTransitionAwareness>\n\t\t\t\t\t<WithScrollAwareness {...props} ref={ref} />\n\t\t\t\t</WithTransitionAwareness>\n\t\t\t);\n\t\t}\n\n\t\treturn <WithScrollAwareness {...props} ref={ref} />;\n\t});\n\n\tWithScrollAwareness.displayName = `Transition(${ScrollableComponent.displayName || ScrollableComponent.name || \"Component\"})`;\n\n\treturn memo(Wrapped) as React.MemoExoticComponent<\n\t\tReact.ForwardRefExoticComponent<\n\t\t\tAnimatedProps<P> &\n\t\t\t\tReact.RefAttributes<React.ComponentRef<typeof ScrollableComponent>>\n\t\t>\n\t>;\n}\n","import { useCallback } from \"react\";\nimport type { NativeScrollEvent, NativeSyntheticEvent } from \"react-native\";\nimport { useAnimatedScrollHandler } from \"react-native-reanimated\";\nimport { useGestureContext } from \"@/contexts/gesture\";\n\ninterface ScrollProgressHookProps {\n\tonScroll?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;\n\tonContentSizeChange?: (width: number, height: number) => void;\n}\n\nexport const useScrollProgress = (props: ScrollProgressHookProps) => {\n\tconst { scrollProgress } = useGestureContext();\n\tconst scrollHandler = useAnimatedScrollHandler({\n\t\tonScroll: (event) => {\n\t\t\tscrollProgress.modify((value) => {\n\t\t\t\t\"worklet\";\n\t\t\t\treturn {\n\t\t\t\t\t...value,\n\t\t\t\t\tx: event.contentOffset.x,\n\t\t\t\t\ty: event.contentOffset.y,\n\t\t\t\t\tlayoutHeight: event.layoutMeasurement.height,\n\t\t\t\t\tlayoutWidth: event.layoutMeasurement.width,\n\t\t\t\t\tcontentHeight: event.contentSize.height,\n\t\t\t\t\tcontentWidth: event.contentSize.width,\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t});\n\n\tconst onContentSizeChange = useCallback(\n\t\t(width: number, height: number) => {\n\t\t\tprops.onContentSizeChange?.(width, height);\n\n\t\t\tscrollProgress.modify((value) => {\n\t\t\t\t\"worklet\";\n\t\t\t\treturn {\n\t\t\t\t\t...value,\n\t\t\t\t\tcontentWidth: width,\n\t\t\t\t\tcontentHeight: height,\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t[scrollProgress, props.onContentSizeChange],\n\t);\n\n\treturn {\n\t\tscrollHandler,\n\t\tonContentSizeChange,\n\t};\n};\n","import {\n\tExtrapolation,\n\tinterpolate,\n\tinterpolateColor,\n} from \"react-native-reanimated\";\nimport type { TransitionConfig } from \"../types\";\nimport { DefaultSpec } from \"./specs\";\n\nexport const SlideFromTop = (\n\tconfig: Partial<TransitionConfig> = {},\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: true,\n\t\tgestureDirection: \"vertical-inverted\",\n\t\tscreenStyleInterpolator: ({\n\t\t\tcurrent,\n\t\t\tnext,\n\t\t\tlayouts: {\n\t\t\t\tscreen: { height },\n\t\t\t},\n\t\t}) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\n\t\t\tconst y = interpolate(progress, [0, 1, 2], [-height, 0, height]);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ translateY: y }],\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\ttransitionSpec: {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\t...config,\n\t};\n};\n\nexport const ZoomIn = (\n\tconfig: Partial<TransitionConfig> = {},\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: false,\n\t\tscreenStyleInterpolator: ({ current, next }) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\n\t\t\tconst scale = interpolate(\n\t\t\t\tprogress,\n\t\t\t\t[0, 1, 2],\n\t\t\t\t[0.5, 1, 0.5],\n\t\t\t\tExtrapolation.CLAMP,\n\t\t\t);\n\n\t\t\tconst opacity = interpolate(\n\t\t\t\tprogress,\n\t\t\t\t[0, 1, 2],\n\t\t\t\t[0, 1, 0],\n\t\t\t\tExtrapolation.CLAMP,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ scale }],\n\t\t\t\t\topacity,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\ttransitionSpec: {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\t...config,\n\t};\n};\n\nexport const SlideFromBottom = (\n\tconfig: Partial<TransitionConfig> = {},\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: true,\n\t\tgestureDirection: \"vertical\",\n\t\tscreenStyleInterpolator: ({\n\t\t\tcurrent,\n\t\t\tnext,\n\t\t\tlayouts: {\n\t\t\t\tscreen: { height },\n\t\t\t},\n\t\t}) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\n\t\t\tconst y = interpolate(progress, [0, 1, 2], [height, 0, -height]);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ translateY: y }],\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\ttransitionSpec: {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\t...config,\n\t};\n};\n\nexport const DraggableCard = (\n\tconfig: Partial<TransitionConfig> = {},\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: true,\n\t\tgestureDirection: [\"horizontal\", \"vertical\"],\n\t\tscreenStyleInterpolator: ({ current, next, layouts: { screen } }) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\n\t\t\t/** Combined */\n\t\t\tconst scale = interpolate(progress, [0, 1, 2], [0, 1, 0.75]);\n\n\t\t\t/** Vertical */\n\t\t\tconst translateY = interpolate(\n\t\t\t\tcurrent.gesture.normalizedY.value,\n\t\t\t\t[-1, 1],\n\t\t\t\t[-screen.height * 0.5, screen.height * 0.5],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\t/** Horizontal */\n\t\t\tconst translateX = interpolate(\n\t\t\t\tcurrent.gesture.normalizedX.value,\n\t\t\t\t[-1, 1],\n\t\t\t\t[-screen.width * 0.5, screen.width * 0.5],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ scale }, { translateY: translateY }, { translateX }],\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\ttransitionSpec: {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\t...config,\n\t};\n};\n\nexport const ElasticCard = (\n\tconfig: Partial<TransitionConfig> & {\n\t\telasticFactor?: number;\n\t} = { elasticFactor: 0.5 },\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: true,\n\t\tgestureDirection: \"bidirectional\",\n\t\tscreenStyleInterpolator: ({ current, next, layouts: { screen } }) => {\n\t\t\t\"worklet\";\n\n\t\t\t/**\n\t\t\t * Applies to both screens ( previous and incoming)\n\t\t\t */\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\t\t\tconst scale = interpolate(progress, [0, 1, 2], [0, 1, 0.8]);\n\n\t\t\t/**\n\t\t\t * Applies to current screen\n\t\t\t */\n\t\t\tconst maxElasticityX = screen.width * (config.elasticFactor ?? 0.5);\n\t\t\tconst maxElasticityY = screen.height * (config.elasticFactor ?? 0.5);\n\t\t\tconst translateX = interpolate(\n\t\t\t\tcurrent.gesture.normalizedX.value,\n\t\t\t\t[-1, 0, 1],\n\t\t\t\t[-maxElasticityX, 0, maxElasticityX],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\tconst translateY = interpolate(\n\t\t\t\tcurrent.gesture.normalizedY.value,\n\t\t\t\t[-1, 0, 1],\n\t\t\t\t[-maxElasticityY, 0, maxElasticityY],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\t/**\n\t\t\t * Applies to unfocused screen ( previous screen )\n\t\t\t */\n\t\t\tconst overlayColor = interpolateColor(\n\t\t\t\tcurrent.progress.value,\n\t\t\t\t[0, 1],\n\t\t\t\t[\"rgba(0,0,0,0)\", \"rgba(0,0,0,0.5)\"],\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ scale }, { translateX }, { translateY }],\n\t\t\t\t},\n\t\t\t\toverlayStyle: {\n\t\t\t\t\tbackgroundColor: !next ? overlayColor : \"rgba(0,0,0,0)\",\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t...config,\n\t};\n};\n","import {\n createNavigatorFactory,\n type EventListenerCallback,\n type NavigatorTypeBagBase,\n type ParamListBase,\n type RouteProp,\n type StackActionHelpers,\n type StackNavigationState,\n StackRouter,\n type StackRouterOptions,\n type TypedNavigator,\n useNavigationBuilder,\n} from \"@react-navigation/native\";\nimport {\n type NativeStackNavigationEventMap,\n type NativeStackNavigationOptions,\n type NativeStackNavigationProp,\n type NativeStackNavigatorProps,\n NativeStackView,\n} from \"@react-navigation/native-stack\";\nimport React, { Children, isValidElement, useMemo } from \"react\";\nimport type { Any, TransitionConfig } from \"@/types\";\nimport { createConfig } from \"../utils\";\n\nexport type TransitionStackNavigationEventMap = NativeStackNavigationEventMap;\n\nexport interface TransitionStackNavigationOptions\n extends Omit<NativeStackNavigationOptions, keyof TransitionConfig>,\n TransitionConfig {\n skipDefaultScreenOptions?: boolean;\n}\n\nexport type TransitionStackNavigationProp<\n ParamList extends ParamListBase,\n RouteName extends keyof ParamList = string,\n NavigatorID extends string | undefined = undefined,\n> = NativeStackNavigationProp<ParamList, RouteName, NavigatorID>;\n\nexport type TransitionStackNavigatorProps = NativeStackNavigatorProps;\n\nexport type TransitionStackScreenOptions<ParamList extends ParamListBase> =\n | TransitionStackNavigationOptions\n | ((props: {\n route: RouteProp<ParamList>;\n navigation: TransitionStackNavigationProp<ParamList>;\n }) => TransitionStackNavigationOptions);\n\nexport type TransitionStackScreenListeners<ParamList extends ParamListBase> =\n | Partial<{\n [EventName in keyof TransitionStackNavigationEventMap]: EventListenerCallback<\n TransitionStackNavigationEventMap,\n EventName\n >;\n }>\n | ((props: { route: RouteProp<ParamList>; navigation: TransitionStackNavigationProp<ParamList> }) => Partial<{\n [EventName in keyof TransitionStackNavigationEventMap]: EventListenerCallback<\n TransitionStackNavigationEventMap,\n EventName\n >;\n }>);\n\nexport interface TransitionStackScreenProps<ParamList extends ParamListBase> {\n name: string;\n component: React.ComponentType<Any>;\n options?: TransitionStackScreenOptions<ParamList>;\n listeners?: TransitionStackScreenListeners<ParamList>;\n initialParams?: ParamList[keyof ParamList];\n [key: string]: Any;\n}\n\n// Necessary screen options to ensure animations run smoothly\nconst DEFAULT_SCREEN_OPTIONS = {\n presentation: \"containedTransparentModal\",\n headerShown: false,\n animation: \"none\",\n /**\n * EXPERIMENTAL:\n When handling forward navigation, this would be the prop we would use to prevent the underlying screen from not being interactable.\n - pointerEvents: \"box-none\",\n */\n} as const;\n\n// Lib handles gestures. Default props to avoid conflicts with navigator\nconst CONFLICTING_SCREEN_OPTIONS = {\n gestureEnabled: false,\n gestureDirection: \"horizontal\",\n} as const;\n\nfunction TransitionableStackNavigator({\n id,\n initialRouteName,\n children,\n layout,\n screenListeners,\n screenOptions,\n screenLayout,\n UNSTABLE_router,\n ...rest\n}: TransitionStackNavigatorProps) {\n // 1) Modify the screens first to adjust for our custom screen options, store these options for use later in the screenListeners.\n const screenProcessor = useMemo(() => {\n const childOptions = new Map<string, TransitionStackNavigationOptions>();\n\n const modifiedChildren = Children.toArray(children)\n .filter(isValidElement<TransitionStackScreenProps<ParamListBase>>)\n .map((child) => {\n const resolvedOptions =\n typeof child.props.options === \"function\"\n ? child.props.options({\n route: child.props.route,\n navigation: child.props.navigation,\n })\n : child.props.options || {};\n\n childOptions.set(child.props.name, resolvedOptions);\n\n const skipDefaultScreenOptions = resolvedOptions?.skipDefaultScreenOptions === true;\n\n return React.cloneElement(child, {\n ...child.props,\n\n options: {\n ...(skipDefaultScreenOptions ? {} : DEFAULT_SCREEN_OPTIONS),\n ...resolvedOptions,\n ...CONFLICTING_SCREEN_OPTIONS,\n },\n });\n });\n\n return {\n children: modifiedChildren,\n childOptions,\n };\n }, [children]);\n\n const screenListenersWithTransitions = useMemo(() => {\n return (props: { navigation: TransitionStackNavigationProp<ParamListBase>; route: RouteProp<ParamListBase> }) => {\n const resolvedNavigatorConfig =\n typeof screenOptions === \"function\"\n ? screenOptions({\n navigation: props.navigation,\n route: props.route,\n theme: {} as Any,\n })\n : screenOptions;\n\n const resolvedChildConfig = screenProcessor.childOptions.get(props.route.name);\n\n const mergedConfig = {\n ...resolvedNavigatorConfig,\n ...resolvedChildConfig, //Child should override navigator config\n };\n\n const transitionListeners = createConfig({\n navigation: props.navigation,\n route: props.route,\n screenStyleInterpolator: mergedConfig.screenStyleInterpolator,\n transitionSpec: mergedConfig.transitionSpec,\n gestureEnabled: mergedConfig.gestureEnabled,\n gestureDirection: mergedConfig.gestureDirection,\n gestureResponseDistance:\n typeof mergedConfig.gestureResponseDistance === \"number\" ? mergedConfig.gestureResponseDistance : undefined,\n gestureVelocityImpact: mergedConfig.gestureVelocityImpact,\n });\n\n const existingListeners = typeof screenListeners === \"function\" ? screenListeners(props) : screenListeners || {};\n\n return {\n ...existingListeners,\n ...transitionListeners,\n };\n };\n }, [screenListeners, screenOptions, screenProcessor.childOptions]);\n\n const buildingBlocks = {\n id,\n initialRouteName,\n children: screenProcessor.children,\n layout,\n screenListeners: screenListenersWithTransitions,\n screenOptions,\n screenLayout,\n UNSTABLE_router,\n };\n\n const { state, describe, descriptors, navigation, NavigationContent } = useNavigationBuilder<\n StackNavigationState<ParamListBase>,\n StackRouterOptions,\n StackActionHelpers<ParamListBase>,\n NativeStackNavigationOptions,\n TransitionStackNavigationEventMap\n >(StackRouter, buildingBlocks);\n\n return (\n <NavigationContent>\n <NativeStackView {...rest} state={state} navigation={navigation} descriptors={descriptors} describe={describe} />\n </NavigationContent>\n );\n}\n\nexport function createTransitionableStackNavigator<\n const ParamList extends ParamListBase,\n const NavigatorID extends string | undefined = undefined,\n const TypeBag extends NavigatorTypeBagBase = {\n ParamList: ParamList;\n NavigatorID: NavigatorID;\n State: StackNavigationState<ParamList>;\n ScreenOptions: TransitionStackNavigationOptions;\n EventMap: TransitionStackNavigationEventMap;\n NavigationList: {\n [RouteName in keyof ParamList]: TransitionStackNavigationProp<ParamList, RouteName, NavigatorID>;\n };\n Navigator: typeof TransitionableStackNavigator;\n },\n>(): TypedNavigator<TypeBag> {\n return createNavigatorFactory(TransitionableStackNavigator)();\n}\n\nexport type TransitionStackNavigatorTypeBag<\n ScreenOptions = TransitionStackNavigationOptions,\n State = StackNavigationState<ParamListBase>,\n EventMap = TransitionStackNavigationEventMap,\n> = {\n ScreenOptions: ScreenOptions;\n\n State: State;\n EventMap: EventMap;\n};\n"],"mappings":"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","names":["import_react_native","import_react","import_react_native","import_react_native_reanimated","import_react","import_react_native_gesture_handler","import_react_native_reanimated","import_native","import_react","import_react_native_gesture_handler","import_react_native_reanimated","import_react_native_reanimated","import_react","import_react_native_reanimated","shouldSkipPreventDefault","import_native","import_react","import_react_native","import_react_native_reanimated","import_react","import_react_native_reanimated","import_jsx_runtime","Animated","import_react","import_react_native","import_react_native_gesture_handler","import_react_native_reanimated","import_react","import_react_native_reanimated","import_jsx_runtime","Animated","import_react_native_reanimated","import_native","import_react","import_jsx_runtime","React"]}