react-native-screen-transitions 3.0.0-beta.9 → 3.0.0-rc.2

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 (497) hide show
  1. package/README.md +60 -5
  2. package/lib/commonjs/blank-stack/components/Overlay.js +15 -15
  3. package/lib/commonjs/blank-stack/components/Overlay.js.map +1 -1
  4. package/lib/commonjs/blank-stack/components/Screens.js +2 -2
  5. package/lib/commonjs/blank-stack/components/Screens.js.map +1 -1
  6. package/lib/commonjs/blank-stack/components/StackView.js +9 -5
  7. package/lib/commonjs/blank-stack/components/StackView.js.map +1 -1
  8. package/lib/commonjs/blank-stack/hooks/use-overlay-animation.js +6 -7
  9. package/lib/commonjs/blank-stack/hooks/use-overlay-animation.js.map +1 -1
  10. package/lib/commonjs/blank-stack/index.js +1 -1
  11. package/lib/commonjs/blank-stack/index.js.map +1 -1
  12. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/are-descriptors-equal.js.map +1 -0
  13. package/lib/{module/blank-stack/utils/with-stack-navigation/_utils → commonjs/blank-stack/utils/with-stack-navigation/helpers}/calculate-active-screens-limit.js.map +1 -1
  14. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.js.map +1 -0
  15. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/have-same-route-keys.js.map +1 -0
  16. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/routes-are-identical.js.map +1 -0
  17. package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.js.map +1 -0
  18. package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-previous.js.map +1 -0
  19. package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-stack-navigation-state.js +4 -4
  20. package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.js.map +1 -0
  21. package/lib/commonjs/blank-stack/utils/with-stack-navigation/index.js +2 -2
  22. package/lib/commonjs/blank-stack/utils/with-stack-navigation/index.js.map +1 -1
  23. package/lib/commonjs/native-stack/views/NativeStackView.native.js +4 -3
  24. package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
  25. package/lib/commonjs/shared/components/controllers/screen-lifecycle.js +9 -9
  26. package/lib/commonjs/shared/components/controllers/screen-lifecycle.js.map +1 -1
  27. package/lib/commonjs/shared/components/create-transition-aware-component.js +11 -14
  28. package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
  29. package/lib/commonjs/shared/components/root-transition-aware.js +1 -1
  30. package/lib/commonjs/shared/components/root-transition-aware.js.map +1 -1
  31. package/lib/commonjs/shared/configs/presets.js +28 -11
  32. package/lib/commonjs/shared/configs/presets.js.map +1 -1
  33. package/lib/commonjs/shared/constants.js +0 -1
  34. package/lib/commonjs/shared/constants.js.map +1 -1
  35. package/lib/commonjs/shared/hooks/animation/use-associated-style.js +9 -10
  36. package/lib/commonjs/shared/hooks/animation/use-associated-style.js.map +1 -1
  37. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +16 -26
  38. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
  39. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +11 -11
  40. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  41. package/lib/commonjs/shared/hooks/gestures/use-parent-gesture-registry.js +1 -1
  42. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +1 -1
  43. package/lib/commonjs/shared/hooks/reanimated/use-shared-value-state.js.map +1 -0
  44. package/lib/commonjs/shared/hooks/use-stable-callback-value.js.map +1 -1
  45. package/lib/commonjs/shared/hooks/use-stable-callback.js.map +1 -1
  46. package/lib/commonjs/shared/providers/{gestures.js → gestures.provider.js} +1 -1
  47. package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -0
  48. package/lib/commonjs/shared/providers/{keys.js → keys.provider.js} +1 -1
  49. package/lib/commonjs/shared/providers/keys.provider.js.map +1 -0
  50. package/lib/commonjs/shared/providers/register-bounds.provider.js +211 -0
  51. package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -0
  52. package/lib/commonjs/shared/providers/{screen-transition-provider.js → screen-transition.provider.js} +4 -4
  53. package/lib/commonjs/shared/providers/{screen-transition-provider.js.map → screen-transition.provider.js.map} +1 -1
  54. package/lib/commonjs/shared/providers/{transition-styles.js → transition-styles.provider.js} +9 -9
  55. package/lib/commonjs/shared/providers/transition-styles.provider.js.map +1 -0
  56. package/lib/commonjs/shared/stores/{animation-store.js → animation.store.js} +1 -1
  57. package/lib/commonjs/shared/stores/{animation-store.js.map → animation.store.js.map} +1 -1
  58. package/lib/commonjs/shared/stores/bounds.store.js +141 -0
  59. package/lib/commonjs/shared/stores/bounds.store.js.map +1 -0
  60. package/lib/commonjs/shared/stores/{gesture-store.js → gesture.store.js} +1 -1
  61. package/lib/commonjs/shared/stores/{gesture-store.js.map → gesture.store.js.map} +1 -1
  62. package/lib/commonjs/shared/types/{core.js → animation.types.js} +1 -1
  63. package/lib/commonjs/shared/types/animation.types.js.map +1 -0
  64. package/lib/commonjs/shared/types/{bounds.js → bounds.types.js} +1 -1
  65. package/lib/commonjs/shared/types/bounds.types.js.map +1 -0
  66. package/lib/commonjs/shared/types/{animation.js → core.types.js} +1 -1
  67. package/lib/commonjs/shared/types/{animation.js.map → core.types.js.map} +1 -1
  68. package/lib/commonjs/shared/types/{gesture.js → gesture.types.js} +1 -1
  69. package/lib/commonjs/shared/types/gesture.types.js.map +1 -0
  70. package/lib/commonjs/shared/types/utils.types.js +2 -0
  71. package/lib/commonjs/shared/types/{core.js.map → utils.types.js.map} +1 -1
  72. package/lib/commonjs/shared/utils/animation/derivations.js +1 -7
  73. package/lib/commonjs/shared/utils/animation/derivations.js.map +1 -1
  74. package/lib/commonjs/shared/utils/bounds/helpers/geometry.js.map +1 -0
  75. package/lib/commonjs/shared/utils/bounds/helpers/is-bounds-equal.js +19 -0
  76. package/lib/commonjs/shared/utils/bounds/helpers/is-bounds-equal.js.map +1 -0
  77. package/lib/commonjs/shared/utils/bounds/helpers/style-composers.js.map +1 -0
  78. package/lib/commonjs/shared/utils/bounds/helpers/styles.js.map +1 -0
  79. package/lib/commonjs/shared/utils/bounds/index.js +45 -35
  80. package/lib/commonjs/shared/utils/bounds/index.js.map +1 -1
  81. package/lib/commonjs/shared/utils/bounds/types/builder.js.map +1 -0
  82. package/lib/commonjs/shared/utils/bounds/{_types/builder.js.map → types/geometry.js.map} +1 -1
  83. package/lib/commonjs/shared/utils/create-provider.js.map +1 -0
  84. package/lib/commonjs/shared/utils/gesture/apply-offset-rules.js +1 -1
  85. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js +1 -1
  86. package/lib/commonjs/shared/utils/reset-stores-for-screen.js +17 -0
  87. package/lib/commonjs/shared/utils/reset-stores-for-screen.js.map +1 -0
  88. package/lib/module/blank-stack/components/Overlay.js +15 -15
  89. package/lib/module/blank-stack/components/Overlay.js.map +1 -1
  90. package/lib/module/blank-stack/components/Screens.js +1 -1
  91. package/lib/module/blank-stack/components/StackView.js +8 -4
  92. package/lib/module/blank-stack/components/StackView.js.map +1 -1
  93. package/lib/module/blank-stack/hooks/use-overlay-animation.js +5 -6
  94. package/lib/module/blank-stack/hooks/use-overlay-animation.js.map +1 -1
  95. package/lib/module/blank-stack/index.js +1 -1
  96. package/lib/module/blank-stack/index.js.map +1 -1
  97. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/are-descriptors-equal.js.map +1 -0
  98. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.js.map +1 -0
  99. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.js.map +1 -0
  100. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/have-same-route-keys.js.map +1 -0
  101. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/routes-are-identical.js.map +1 -0
  102. package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.js.map +1 -0
  103. package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-previous.js.map +1 -0
  104. package/lib/module/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-stack-navigation-state.js +4 -4
  105. package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.js.map +1 -0
  106. package/lib/module/blank-stack/utils/with-stack-navigation/index.js +2 -2
  107. package/lib/module/blank-stack/utils/with-stack-navigation/index.js.map +1 -1
  108. package/lib/module/native-stack/views/NativeStackView.native.js +3 -2
  109. package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
  110. package/lib/module/shared/components/controllers/screen-lifecycle.js +8 -8
  111. package/lib/module/shared/components/controllers/screen-lifecycle.js.map +1 -1
  112. package/lib/module/shared/components/create-transition-aware-component.js +11 -14
  113. package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
  114. package/lib/module/shared/components/root-transition-aware.js +1 -1
  115. package/lib/module/shared/components/root-transition-aware.js.map +1 -1
  116. package/lib/module/shared/configs/presets.js +28 -11
  117. package/lib/module/shared/configs/presets.js.map +1 -1
  118. package/lib/module/shared/constants.js +0 -1
  119. package/lib/module/shared/constants.js.map +1 -1
  120. package/lib/module/shared/hooks/animation/use-associated-style.js +9 -10
  121. package/lib/module/shared/hooks/animation/use-associated-style.js.map +1 -1
  122. package/lib/module/shared/hooks/animation/use-screen-animation.js +13 -23
  123. package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
  124. package/lib/module/shared/hooks/gestures/use-build-gestures.js +4 -4
  125. package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  126. package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js +1 -1
  127. package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js.map +1 -1
  128. package/lib/module/shared/hooks/gestures/use-scroll-registry.js +1 -1
  129. package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  130. package/lib/module/shared/hooks/reanimated/use-shared-value-state.js.map +1 -0
  131. package/lib/module/shared/hooks/use-stable-callback-value.js.map +1 -1
  132. package/lib/module/shared/hooks/use-stable-callback.js.map +1 -1
  133. package/lib/module/shared/providers/{gestures.js → gestures.provider.js} +1 -1
  134. package/lib/module/shared/providers/gestures.provider.js.map +1 -0
  135. package/lib/module/shared/providers/{keys.js → keys.provider.js} +1 -1
  136. package/lib/module/shared/providers/keys.provider.js.map +1 -0
  137. package/lib/module/shared/providers/register-bounds.provider.js +206 -0
  138. package/lib/module/shared/providers/register-bounds.provider.js.map +1 -0
  139. package/lib/module/shared/providers/{screen-transition-provider.js → screen-transition.provider.js} +4 -4
  140. package/lib/module/shared/providers/{screen-transition-provider.js.map → screen-transition.provider.js.map} +1 -1
  141. package/lib/module/shared/providers/{transition-styles.js → transition-styles.provider.js} +8 -9
  142. package/lib/module/shared/providers/transition-styles.provider.js.map +1 -0
  143. package/lib/module/shared/stores/{animation-store.js → animation.store.js} +1 -1
  144. package/lib/module/shared/stores/{animation-store.js.map → animation.store.js.map} +1 -1
  145. package/lib/module/shared/stores/bounds.store.js +137 -0
  146. package/lib/module/shared/stores/bounds.store.js.map +1 -0
  147. package/lib/module/shared/stores/{gesture-store.js → gesture.store.js} +1 -1
  148. package/lib/module/shared/stores/{gesture-store.js.map → gesture.store.js.map} +1 -1
  149. package/lib/module/shared/types/animation.types.js +4 -0
  150. package/lib/module/shared/types/animation.types.js.map +1 -0
  151. package/lib/module/shared/types/bounds.types.js +4 -0
  152. package/lib/module/shared/types/bounds.types.js.map +1 -0
  153. package/lib/module/shared/types/core.types.js +4 -0
  154. package/lib/{commonjs/shared/types/bounds.js.map → module/shared/types/core.types.js.map} +1 -1
  155. package/lib/module/shared/types/{gesture.js → gesture.types.js} +1 -1
  156. package/lib/module/shared/types/gesture.types.js.map +1 -0
  157. package/lib/module/shared/types/utils.types.js +2 -0
  158. package/lib/{commonjs/shared/types/utils.js.map → module/shared/types/utils.types.js.map} +1 -1
  159. package/lib/module/shared/utils/animation/derivations.js +1 -7
  160. package/lib/module/shared/utils/animation/derivations.js.map +1 -1
  161. package/lib/module/shared/utils/bounds/helpers/geometry.js.map +1 -0
  162. package/lib/module/shared/utils/bounds/helpers/is-bounds-equal.js +14 -0
  163. package/lib/module/shared/utils/bounds/helpers/is-bounds-equal.js.map +1 -0
  164. package/lib/module/shared/utils/bounds/helpers/style-composers.js.map +1 -0
  165. package/lib/module/shared/utils/bounds/helpers/styles.js.map +1 -0
  166. package/lib/module/shared/utils/bounds/index.js +45 -35
  167. package/lib/module/shared/utils/bounds/index.js.map +1 -1
  168. package/lib/module/shared/utils/bounds/types/builder.js.map +1 -0
  169. package/lib/module/shared/utils/bounds/{_types/builder.js.map → types/geometry.js.map} +1 -1
  170. package/lib/module/shared/utils/create-provider.js.map +1 -0
  171. package/lib/module/shared/utils/gesture/apply-offset-rules.js +1 -1
  172. package/lib/module/shared/utils/gesture/apply-offset-rules.js.map +1 -1
  173. package/lib/module/shared/utils/gesture/check-gesture-activation.js +1 -1
  174. package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  175. package/lib/module/shared/utils/reset-stores-for-screen.js +13 -0
  176. package/lib/module/shared/utils/reset-stores-for-screen.js.map +1 -0
  177. package/lib/typescript/blank-stack/components/Overlay.d.ts.map +1 -1
  178. package/lib/typescript/blank-stack/components/StackView.d.ts.map +1 -1
  179. package/lib/typescript/blank-stack/hooks/use-overlay-animation.d.ts +1 -1
  180. package/lib/typescript/blank-stack/hooks/use-overlay-animation.d.ts.map +1 -1
  181. package/lib/typescript/blank-stack/index.d.ts +1 -1
  182. package/lib/typescript/blank-stack/index.d.ts.map +1 -1
  183. package/lib/typescript/blank-stack/types.d.ts +19 -105
  184. package/lib/typescript/blank-stack/types.d.ts.map +1 -1
  185. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/are-descriptors-equal.d.ts.map +1 -0
  186. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.d.ts.map +1 -0
  187. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.d.ts.map +1 -0
  188. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/have-same-route-keys.d.ts.map +1 -0
  189. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/routes-are-identical.d.ts.map +1 -0
  190. package/lib/typescript/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-closing-route-keys.d.ts.map +1 -1
  191. package/lib/typescript/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-previous.d.ts.map +1 -1
  192. package/lib/typescript/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.d.ts.map +1 -0
  193. package/lib/typescript/native-stack/types.d.ts +8 -2
  194. package/lib/typescript/native-stack/types.d.ts.map +1 -1
  195. package/lib/typescript/native-stack/views/NativeStackView.native.d.ts.map +1 -1
  196. package/lib/typescript/shared/components/controllers/screen-lifecycle.d.ts.map +1 -1
  197. package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
  198. package/lib/typescript/shared/configs/index.d.ts +9 -3
  199. package/lib/typescript/shared/configs/index.d.ts.map +1 -1
  200. package/lib/typescript/shared/configs/presets.d.ts +10 -4
  201. package/lib/typescript/shared/configs/presets.d.ts.map +1 -1
  202. package/lib/typescript/shared/constants.d.ts +6 -6
  203. package/lib/typescript/shared/constants.d.ts.map +1 -1
  204. package/lib/typescript/shared/hooks/animation/use-associated-style.d.ts.map +1 -1
  205. package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts +2 -2
  206. package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts.map +1 -1
  207. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +2 -2
  208. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
  209. package/lib/typescript/shared/hooks/reanimated/use-shared-value-state.d.ts.map +1 -0
  210. package/lib/typescript/shared/hooks/use-stable-callback-value.d.ts.map +1 -1
  211. package/lib/typescript/shared/hooks/use-stable-callback.d.ts.map +1 -1
  212. package/lib/typescript/shared/index.d.ts +37 -31
  213. package/lib/typescript/shared/index.d.ts.map +1 -1
  214. package/lib/typescript/shared/providers/{gestures.d.ts → gestures.provider.d.ts} +2 -2
  215. package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -0
  216. package/lib/typescript/shared/providers/{keys.d.ts → keys.provider.d.ts} +2 -2
  217. package/lib/typescript/shared/providers/keys.provider.d.ts.map +1 -0
  218. package/lib/typescript/shared/providers/register-bounds.provider.d.ts +17 -0
  219. package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -0
  220. package/lib/typescript/shared/providers/{screen-transition-provider.d.ts → screen-transition.provider.d.ts} +2 -2
  221. package/lib/typescript/shared/providers/{screen-transition-provider.d.ts.map → screen-transition.provider.d.ts.map} +1 -1
  222. package/lib/typescript/shared/providers/transition-styles.provider.d.ts +14 -0
  223. package/lib/typescript/shared/providers/transition-styles.provider.d.ts.map +1 -0
  224. package/lib/typescript/shared/stores/{animation-store.d.ts → animation.store.d.ts} +2 -2
  225. package/lib/typescript/shared/stores/animation.store.d.ts.map +1 -0
  226. package/lib/typescript/shared/stores/bounds.store.d.ts +29 -0
  227. package/lib/typescript/shared/stores/bounds.store.d.ts.map +1 -0
  228. package/lib/typescript/shared/stores/{gesture-store.d.ts → gesture.store.d.ts} +3 -3
  229. package/lib/typescript/shared/stores/gesture.store.d.ts.map +1 -0
  230. package/lib/typescript/shared/types/{animation.d.ts → animation.types.d.ts} +48 -20
  231. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -0
  232. package/lib/typescript/shared/types/{bounds.d.ts → bounds.types.d.ts} +4 -4
  233. package/lib/typescript/shared/types/bounds.types.d.ts.map +1 -0
  234. package/lib/typescript/shared/types/{core.d.ts → core.types.d.ts} +3 -7
  235. package/lib/typescript/shared/types/core.types.d.ts.map +1 -0
  236. package/lib/typescript/shared/types/{gesture.d.ts → gesture.types.d.ts} +1 -1
  237. package/lib/typescript/shared/types/gesture.types.d.ts.map +1 -0
  238. package/lib/typescript/shared/types/{utils.d.ts → utils.types.d.ts} +1 -1
  239. package/lib/typescript/shared/types/utils.types.d.ts.map +1 -0
  240. package/lib/typescript/shared/utils/animation/derivations.d.ts +2 -4
  241. package/lib/typescript/shared/utils/animation/derivations.d.ts.map +1 -1
  242. package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts +2 -2
  243. package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts.map +1 -1
  244. package/lib/typescript/shared/utils/bounds/constants.d.ts +3 -3
  245. package/lib/typescript/shared/utils/bounds/constants.d.ts.map +1 -1
  246. package/lib/typescript/shared/utils/bounds/{_utils → helpers}/geometry.d.ts +3 -3
  247. package/lib/typescript/shared/utils/bounds/helpers/geometry.d.ts.map +1 -0
  248. package/lib/typescript/shared/utils/bounds/helpers/is-bounds-equal.d.ts.map +1 -0
  249. package/lib/typescript/shared/utils/bounds/{_utils → helpers}/style-composers.d.ts +2 -2
  250. package/lib/typescript/shared/utils/bounds/helpers/style-composers.d.ts.map +1 -0
  251. package/lib/typescript/shared/utils/bounds/{_utils → helpers}/styles.d.ts +1 -1
  252. package/lib/typescript/shared/utils/bounds/helpers/styles.d.ts.map +1 -0
  253. package/lib/typescript/shared/utils/bounds/index.d.ts +3 -4
  254. package/lib/typescript/shared/utils/bounds/index.d.ts.map +1 -1
  255. package/lib/typescript/shared/utils/bounds/{_types → types}/builder.d.ts +13 -34
  256. package/lib/typescript/shared/utils/bounds/types/builder.d.ts.map +1 -0
  257. package/lib/typescript/shared/utils/bounds/types/geometry.d.ts.map +1 -0
  258. package/lib/typescript/shared/{providers/utils → utils}/create-provider.d.ts +2 -2
  259. package/lib/typescript/shared/utils/create-provider.d.ts.map +1 -0
  260. package/lib/typescript/shared/utils/gesture/apply-offset-rules.d.ts +2 -2
  261. package/lib/typescript/shared/utils/gesture/apply-offset-rules.d.ts.map +1 -1
  262. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +2 -2
  263. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
  264. package/lib/typescript/shared/utils/gesture/reset-gesture-values.d.ts +2 -2
  265. package/lib/typescript/shared/utils/gesture/reset-gesture-values.d.ts.map +1 -1
  266. package/lib/typescript/shared/utils/gesture/velocity.d.ts +1 -1
  267. package/lib/typescript/shared/utils/reset-stores-for-screen.d.ts +6 -0
  268. package/lib/typescript/shared/utils/reset-stores-for-screen.d.ts.map +1 -0
  269. package/package.json +1 -1
  270. package/src/blank-stack/components/Overlay.tsx +12 -13
  271. package/src/blank-stack/components/Screens.tsx +1 -1
  272. package/src/blank-stack/components/StackView.tsx +7 -2
  273. package/src/blank-stack/hooks/use-overlay-animation.tsx +15 -15
  274. package/src/blank-stack/index.ts +1 -1
  275. package/src/blank-stack/types.ts +28 -104
  276. package/src/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-stack-navigation-state.tsx +4 -4
  277. package/src/blank-stack/utils/with-stack-navigation/index.tsx +2 -2
  278. package/src/native-stack/types.ts +9 -2
  279. package/src/native-stack/views/NativeStackView.native.tsx +4 -2
  280. package/src/shared/components/controllers/screen-lifecycle.tsx +12 -10
  281. package/src/shared/components/create-transition-aware-component.tsx +23 -27
  282. package/src/shared/components/root-transition-aware.tsx +1 -1
  283. package/src/shared/configs/presets.ts +39 -19
  284. package/src/shared/constants.ts +6 -7
  285. package/src/shared/hooks/animation/use-associated-style.tsx +12 -9
  286. package/src/shared/hooks/animation/use-screen-animation.tsx +17 -27
  287. package/src/shared/hooks/gestures/use-build-gestures.tsx +5 -5
  288. package/src/shared/hooks/gestures/use-parent-gesture-registry.tsx +1 -1
  289. package/src/shared/hooks/gestures/use-scroll-registry.tsx +2 -2
  290. package/src/shared/index.ts +2 -2
  291. package/src/shared/providers/{gestures.tsx → gestures.provider.tsx} +1 -1
  292. package/src/shared/providers/{keys.tsx → keys.provider.tsx} +1 -1
  293. package/src/shared/providers/register-bounds.provider.tsx +290 -0
  294. package/src/shared/providers/{screen-transition-provider.tsx → screen-transition.provider.tsx} +3 -3
  295. package/src/shared/providers/{transition-styles.tsx → transition-styles.provider.tsx} +18 -16
  296. package/src/shared/stores/{animation-store.ts → animation.store.ts} +1 -1
  297. package/src/shared/stores/bounds.store.ts +166 -0
  298. package/src/shared/stores/{gesture-store.ts → gesture.store.ts} +2 -2
  299. package/src/shared/types/{animation.ts → animation.types.ts} +60 -19
  300. package/src/shared/types/{bounds.ts → bounds.types.ts} +3 -3
  301. package/src/shared/types/{core.ts → core.types.ts} +12 -6
  302. package/src/shared/utils/animation/derivations.ts +2 -8
  303. package/src/shared/utils/animation/start-screen-transition.ts +2 -2
  304. package/src/shared/utils/bounds/constants.ts +3 -3
  305. package/src/shared/utils/bounds/{_utils → helpers}/geometry.ts +3 -3
  306. package/src/shared/utils/bounds/{_utils → helpers}/is-bounds-equal.ts +3 -3
  307. package/src/shared/utils/bounds/{_utils → helpers}/style-composers.ts +2 -2
  308. package/src/shared/utils/bounds/{_utils → helpers}/styles.ts +1 -1
  309. package/src/shared/utils/bounds/index.ts +53 -55
  310. package/src/shared/utils/bounds/{_types → types}/builder.ts +19 -37
  311. package/src/shared/{providers/utils → utils}/create-provider.tsx +3 -9
  312. package/src/shared/utils/gesture/apply-offset-rules.ts +2 -2
  313. package/src/shared/utils/gesture/check-gesture-activation.ts +2 -2
  314. package/src/shared/utils/gesture/reset-gesture-values.ts +2 -2
  315. package/src/shared/utils/gesture/velocity.ts +1 -1
  316. package/src/shared/utils/reset-stores-for-screen.ts +11 -0
  317. package/lib/commonjs/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.js.map +0 -1
  318. package/lib/commonjs/blank-stack/utils/with-stack-navigation/_hooks/use-previous.js.map +0 -1
  319. package/lib/commonjs/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.js.map +0 -1
  320. package/lib/commonjs/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.js.map +0 -1
  321. package/lib/commonjs/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.js.map +0 -1
  322. package/lib/commonjs/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.js.map +0 -1
  323. package/lib/commonjs/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.js.map +0 -1
  324. package/lib/commonjs/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.js.map +0 -1
  325. package/lib/commonjs/shared/hooks/bounds/use-bound-registry.js +0 -152
  326. package/lib/commonjs/shared/hooks/bounds/use-bound-registry.js.map +0 -1
  327. package/lib/commonjs/shared/hooks/use-derived-value-state.js +0 -33
  328. package/lib/commonjs/shared/hooks/use-derived-value-state.js.map +0 -1
  329. package/lib/commonjs/shared/hooks/use-shared-value-state.js.map +0 -1
  330. package/lib/commonjs/shared/providers/gestures.js.map +0 -1
  331. package/lib/commonjs/shared/providers/keys.js.map +0 -1
  332. package/lib/commonjs/shared/providers/transition-styles.js.map +0 -1
  333. package/lib/commonjs/shared/providers/utils/create-provider.js.map +0 -1
  334. package/lib/commonjs/shared/stores/bound-store/_utils.js +0 -118
  335. package/lib/commonjs/shared/stores/bound-store/_utils.js.map +0 -1
  336. package/lib/commonjs/shared/stores/bound-store/index.js +0 -127
  337. package/lib/commonjs/shared/stores/bound-store/index.js.map +0 -1
  338. package/lib/commonjs/shared/stores/utils/reset-stores-for-screen.js +0 -19
  339. package/lib/commonjs/shared/stores/utils/reset-stores-for-screen.js.map +0 -1
  340. package/lib/commonjs/shared/types/gesture.js.map +0 -1
  341. package/lib/commonjs/shared/types/utils.js +0 -2
  342. package/lib/commonjs/shared/utils/bounds/_types/geometry.js.map +0 -1
  343. package/lib/commonjs/shared/utils/bounds/_types/get-bounds.js +0 -6
  344. package/lib/commonjs/shared/utils/bounds/_types/get-bounds.js.map +0 -1
  345. package/lib/commonjs/shared/utils/bounds/_utils/flatten-styles.js +0 -27
  346. package/lib/commonjs/shared/utils/bounds/_utils/flatten-styles.js.map +0 -1
  347. package/lib/commonjs/shared/utils/bounds/_utils/geometry.js.map +0 -1
  348. package/lib/commonjs/shared/utils/bounds/_utils/get-bounds.js +0 -49
  349. package/lib/commonjs/shared/utils/bounds/_utils/get-bounds.js.map +0 -1
  350. package/lib/commonjs/shared/utils/bounds/_utils/is-bounds-equal.js +0 -19
  351. package/lib/commonjs/shared/utils/bounds/_utils/is-bounds-equal.js.map +0 -1
  352. package/lib/commonjs/shared/utils/bounds/_utils/style-composers.js.map +0 -1
  353. package/lib/commonjs/shared/utils/bounds/_utils/styles.js.map +0 -1
  354. package/lib/module/blank-stack/utils/with-stack-navigation/_hooks/use-closing-route-keys.js.map +0 -1
  355. package/lib/module/blank-stack/utils/with-stack-navigation/_hooks/use-previous.js.map +0 -1
  356. package/lib/module/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.js.map +0 -1
  357. package/lib/module/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.js.map +0 -1
  358. package/lib/module/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.js.map +0 -1
  359. package/lib/module/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.js.map +0 -1
  360. package/lib/module/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.js.map +0 -1
  361. package/lib/module/shared/hooks/bounds/use-bound-registry.js +0 -146
  362. package/lib/module/shared/hooks/bounds/use-bound-registry.js.map +0 -1
  363. package/lib/module/shared/hooks/use-derived-value-state.js +0 -30
  364. package/lib/module/shared/hooks/use-derived-value-state.js.map +0 -1
  365. package/lib/module/shared/hooks/use-shared-value-state.js.map +0 -1
  366. package/lib/module/shared/providers/gestures.js.map +0 -1
  367. package/lib/module/shared/providers/keys.js.map +0 -1
  368. package/lib/module/shared/providers/transition-styles.js.map +0 -1
  369. package/lib/module/shared/providers/utils/create-provider.js.map +0 -1
  370. package/lib/module/shared/stores/bound-store/_utils.js +0 -113
  371. package/lib/module/shared/stores/bound-store/_utils.js.map +0 -1
  372. package/lib/module/shared/stores/bound-store/index.js +0 -123
  373. package/lib/module/shared/stores/bound-store/index.js.map +0 -1
  374. package/lib/module/shared/stores/utils/reset-stores-for-screen.js +0 -15
  375. package/lib/module/shared/stores/utils/reset-stores-for-screen.js.map +0 -1
  376. package/lib/module/shared/types/animation.js +0 -4
  377. package/lib/module/shared/types/animation.js.map +0 -1
  378. package/lib/module/shared/types/bounds.js +0 -4
  379. package/lib/module/shared/types/bounds.js.map +0 -1
  380. package/lib/module/shared/types/core.js +0 -4
  381. package/lib/module/shared/types/core.js.map +0 -1
  382. package/lib/module/shared/types/gesture.js.map +0 -1
  383. package/lib/module/shared/types/utils.js +0 -2
  384. package/lib/module/shared/types/utils.js.map +0 -1
  385. package/lib/module/shared/utils/bounds/_types/geometry.js.map +0 -1
  386. package/lib/module/shared/utils/bounds/_types/get-bounds.js +0 -4
  387. package/lib/module/shared/utils/bounds/_types/get-bounds.js.map +0 -1
  388. package/lib/module/shared/utils/bounds/_utils/flatten-styles.js +0 -23
  389. package/lib/module/shared/utils/bounds/_utils/flatten-styles.js.map +0 -1
  390. package/lib/module/shared/utils/bounds/_utils/geometry.js.map +0 -1
  391. package/lib/module/shared/utils/bounds/_utils/get-bounds.js +0 -44
  392. package/lib/module/shared/utils/bounds/_utils/get-bounds.js.map +0 -1
  393. package/lib/module/shared/utils/bounds/_utils/is-bounds-equal.js +0 -14
  394. package/lib/module/shared/utils/bounds/_utils/is-bounds-equal.js.map +0 -1
  395. package/lib/module/shared/utils/bounds/_utils/style-composers.js.map +0 -1
  396. package/lib/module/shared/utils/bounds/_utils/styles.js.map +0 -1
  397. package/lib/typescript/blank-stack/utils/with-stack-navigation/_hooks/use-stack-navigation-state.d.ts.map +0 -1
  398. package/lib/typescript/blank-stack/utils/with-stack-navigation/_utils/are-descriptors-equal.d.ts.map +0 -1
  399. package/lib/typescript/blank-stack/utils/with-stack-navigation/_utils/calculate-active-screens-limit.d.ts.map +0 -1
  400. package/lib/typescript/blank-stack/utils/with-stack-navigation/_utils/compose-descriptors.d.ts.map +0 -1
  401. package/lib/typescript/blank-stack/utils/with-stack-navigation/_utils/have-same-route-keys.d.ts.map +0 -1
  402. package/lib/typescript/blank-stack/utils/with-stack-navigation/_utils/routes-are-identical.d.ts.map +0 -1
  403. package/lib/typescript/shared/hooks/bounds/use-bound-registry.d.ts +0 -17
  404. package/lib/typescript/shared/hooks/bounds/use-bound-registry.d.ts.map +0 -1
  405. package/lib/typescript/shared/hooks/use-derived-value-state.d.ts +0 -9
  406. package/lib/typescript/shared/hooks/use-derived-value-state.d.ts.map +0 -1
  407. package/lib/typescript/shared/hooks/use-shared-value-state.d.ts.map +0 -1
  408. package/lib/typescript/shared/providers/gestures.d.ts.map +0 -1
  409. package/lib/typescript/shared/providers/keys.d.ts.map +0 -1
  410. package/lib/typescript/shared/providers/transition-styles.d.ts +0 -11
  411. package/lib/typescript/shared/providers/transition-styles.d.ts.map +0 -1
  412. package/lib/typescript/shared/providers/utils/create-provider.d.ts.map +0 -1
  413. package/lib/typescript/shared/stores/animation-store.d.ts.map +0 -1
  414. package/lib/typescript/shared/stores/bound-store/_utils.d.ts +0 -24
  415. package/lib/typescript/shared/stores/bound-store/_utils.d.ts.map +0 -1
  416. package/lib/typescript/shared/stores/bound-store/index.d.ts +0 -24
  417. package/lib/typescript/shared/stores/bound-store/index.d.ts.map +0 -1
  418. package/lib/typescript/shared/stores/gesture-store.d.ts.map +0 -1
  419. package/lib/typescript/shared/stores/utils/reset-stores-for-screen.d.ts +0 -6
  420. package/lib/typescript/shared/stores/utils/reset-stores-for-screen.d.ts.map +0 -1
  421. package/lib/typescript/shared/types/animation.d.ts.map +0 -1
  422. package/lib/typescript/shared/types/bounds.d.ts.map +0 -1
  423. package/lib/typescript/shared/types/core.d.ts.map +0 -1
  424. package/lib/typescript/shared/types/gesture.d.ts.map +0 -1
  425. package/lib/typescript/shared/types/utils.d.ts.map +0 -1
  426. package/lib/typescript/shared/utils/bounds/_types/builder.d.ts.map +0 -1
  427. package/lib/typescript/shared/utils/bounds/_types/geometry.d.ts.map +0 -1
  428. package/lib/typescript/shared/utils/bounds/_types/get-bounds.d.ts +0 -10
  429. package/lib/typescript/shared/utils/bounds/_types/get-bounds.d.ts.map +0 -1
  430. package/lib/typescript/shared/utils/bounds/_utils/flatten-styles.d.ts +0 -2
  431. package/lib/typescript/shared/utils/bounds/_utils/flatten-styles.d.ts.map +0 -1
  432. package/lib/typescript/shared/utils/bounds/_utils/geometry.d.ts.map +0 -1
  433. package/lib/typescript/shared/utils/bounds/_utils/get-bounds.d.ts +0 -4
  434. package/lib/typescript/shared/utils/bounds/_utils/get-bounds.d.ts.map +0 -1
  435. package/lib/typescript/shared/utils/bounds/_utils/is-bounds-equal.d.ts.map +0 -1
  436. package/lib/typescript/shared/utils/bounds/_utils/style-composers.d.ts.map +0 -1
  437. package/lib/typescript/shared/utils/bounds/_utils/styles.d.ts.map +0 -1
  438. package/src/shared/hooks/bounds/use-bound-registry.tsx +0 -184
  439. package/src/shared/hooks/use-derived-value-state.ts +0 -41
  440. package/src/shared/stores/bound-store/_utils.ts +0 -161
  441. package/src/shared/stores/bound-store/index.ts +0 -148
  442. package/src/shared/stores/utils/reset-stores-for-screen.ts +0 -13
  443. package/src/shared/utils/bounds/_types/get-bounds.ts +0 -10
  444. package/src/shared/utils/bounds/_utils/flatten-styles.ts +0 -21
  445. package/src/shared/utils/bounds/_utils/get-bounds.ts +0 -54
  446. /package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_utils → helpers}/are-descriptors-equal.js +0 -0
  447. /package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_utils → helpers}/calculate-active-screens-limit.js +0 -0
  448. /package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_utils → helpers}/compose-descriptors.js +0 -0
  449. /package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_utils → helpers}/have-same-route-keys.js +0 -0
  450. /package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_utils → helpers}/routes-are-identical.js +0 -0
  451. /package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-closing-route-keys.js +0 -0
  452. /package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-previous.js +0 -0
  453. /package/lib/commonjs/shared/hooks/{use-shared-value-state.js → reanimated/use-shared-value-state.js} +0 -0
  454. /package/lib/commonjs/shared/utils/bounds/{_utils → helpers}/geometry.js +0 -0
  455. /package/lib/commonjs/shared/utils/bounds/{_utils → helpers}/style-composers.js +0 -0
  456. /package/lib/commonjs/shared/utils/bounds/{_utils → helpers}/styles.js +0 -0
  457. /package/lib/commonjs/shared/utils/bounds/{_types → types}/builder.js +0 -0
  458. /package/lib/commonjs/shared/utils/bounds/{_types → types}/geometry.js +0 -0
  459. /package/lib/commonjs/shared/{providers/utils → utils}/create-provider.js +0 -0
  460. /package/lib/module/blank-stack/utils/with-stack-navigation/{_utils → helpers}/are-descriptors-equal.js +0 -0
  461. /package/lib/module/blank-stack/utils/with-stack-navigation/{_utils → helpers}/calculate-active-screens-limit.js +0 -0
  462. /package/lib/module/blank-stack/utils/with-stack-navigation/{_utils → helpers}/compose-descriptors.js +0 -0
  463. /package/lib/module/blank-stack/utils/with-stack-navigation/{_utils → helpers}/have-same-route-keys.js +0 -0
  464. /package/lib/module/blank-stack/utils/with-stack-navigation/{_utils → helpers}/routes-are-identical.js +0 -0
  465. /package/lib/module/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-closing-route-keys.js +0 -0
  466. /package/lib/module/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-previous.js +0 -0
  467. /package/lib/module/shared/hooks/{use-shared-value-state.js → reanimated/use-shared-value-state.js} +0 -0
  468. /package/lib/module/shared/utils/bounds/{_utils → helpers}/geometry.js +0 -0
  469. /package/lib/module/shared/utils/bounds/{_utils → helpers}/style-composers.js +0 -0
  470. /package/lib/module/shared/utils/bounds/{_utils → helpers}/styles.js +0 -0
  471. /package/lib/module/shared/utils/bounds/{_types → types}/builder.js +0 -0
  472. /package/lib/module/shared/utils/bounds/{_types → types}/geometry.js +0 -0
  473. /package/lib/module/shared/{providers/utils → utils}/create-provider.js +0 -0
  474. /package/lib/typescript/blank-stack/utils/with-stack-navigation/{_utils → helpers}/are-descriptors-equal.d.ts +0 -0
  475. /package/lib/typescript/blank-stack/utils/with-stack-navigation/{_utils → helpers}/calculate-active-screens-limit.d.ts +0 -0
  476. /package/lib/typescript/blank-stack/utils/with-stack-navigation/{_utils → helpers}/compose-descriptors.d.ts +0 -0
  477. /package/lib/typescript/blank-stack/utils/with-stack-navigation/{_utils → helpers}/have-same-route-keys.d.ts +0 -0
  478. /package/lib/typescript/blank-stack/utils/with-stack-navigation/{_utils → helpers}/routes-are-identical.d.ts +0 -0
  479. /package/lib/typescript/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-closing-route-keys.d.ts +0 -0
  480. /package/lib/typescript/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-previous.d.ts +0 -0
  481. /package/lib/typescript/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-stack-navigation-state.d.ts +0 -0
  482. /package/lib/typescript/shared/hooks/{use-shared-value-state.d.ts → reanimated/use-shared-value-state.d.ts} +0 -0
  483. /package/lib/typescript/shared/utils/bounds/{_utils → helpers}/is-bounds-equal.d.ts +0 -0
  484. /package/lib/typescript/shared/utils/bounds/{_types → types}/geometry.d.ts +0 -0
  485. /package/src/blank-stack/utils/with-stack-navigation/{_utils → helpers}/are-descriptors-equal.ts +0 -0
  486. /package/src/blank-stack/utils/with-stack-navigation/{_utils → helpers}/calculate-active-screens-limit.ts +0 -0
  487. /package/src/blank-stack/utils/with-stack-navigation/{_utils → helpers}/compose-descriptors.ts +0 -0
  488. /package/src/blank-stack/utils/with-stack-navigation/{_utils → helpers}/have-same-route-keys.ts +0 -0
  489. /package/src/blank-stack/utils/with-stack-navigation/{_utils → helpers}/routes-are-identical.ts +0 -0
  490. /package/src/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-closing-route-keys.tsx +0 -0
  491. /package/src/blank-stack/utils/with-stack-navigation/{_hooks → hooks}/use-previous.tsx +0 -0
  492. /package/src/shared/hooks/{use-shared-value-state.ts → reanimated/use-shared-value-state.ts} +0 -0
  493. /package/src/shared/hooks/{use-stable-callback-value.tsx → use-stable-callback-value.ts} +0 -0
  494. /package/src/shared/hooks/{use-stable-callback.tsx → use-stable-callback.ts} +0 -0
  495. /package/src/shared/types/{gesture.ts → gesture.types.ts} +0 -0
  496. /package/src/shared/types/{utils.ts → utils.types.ts} +0 -0
  497. /package/src/shared/utils/bounds/{_types → types}/geometry.ts +0 -0
@@ -1,184 +0,0 @@
1
- import {
2
- createContext,
3
- Fragment,
4
- useContext,
5
- useLayoutEffect,
6
- useMemo,
7
- useRef,
8
- } from "react";
9
- import type { View } from "react-native";
10
- import {
11
- type AnimatedRef,
12
- measure,
13
- runOnJS,
14
- runOnUI,
15
- type StyleProps,
16
- useAnimatedReaction,
17
- useSharedValue,
18
- } from "react-native-reanimated";
19
- import type { SharedValue } from "react-native-reanimated/lib/typescript/commonTypes";
20
- import { useKeys } from "../../providers/keys";
21
- import { BoundStore } from "../../stores/bound-store";
22
- import { isBoundsEqual } from "../../utils/bounds/_utils/is-bounds-equal";
23
- import { prepareStyleForBounds } from "../../utils/bounds/_utils/styles";
24
- import useStableCallback from "../use-stable-callback";
25
- import useStableCallbackValue from "../use-stable-callback-value";
26
-
27
- interface BoundMeasurerHookProps {
28
- sharedBoundTag?: string;
29
- animatedRef: AnimatedRef<View>;
30
- style: StyleProps;
31
- onPress?: ((...args: unknown[]) => void) | undefined;
32
- }
33
-
34
- interface MaybeMeasureAndStoreParams {
35
- onPress?: ((...args: unknown[]) => void) | undefined;
36
- skipMarkingActive?: boolean;
37
- }
38
-
39
- interface MeasurementUpdateContextType {
40
- updateSignal: SharedValue<number>;
41
- }
42
-
43
- const MeasurementUpdateContext =
44
- createContext<MeasurementUpdateContextType | null>(null);
45
-
46
- export const useBoundsRegistry = ({
47
- sharedBoundTag,
48
- animatedRef,
49
- style,
50
- onPress,
51
- }: BoundMeasurerHookProps) => {
52
- const { previous, current, next } = useKeys();
53
- const preparedStyles = useMemo(() => prepareStyleForBounds(style), [style]);
54
-
55
- const ROOT_MEASUREMENT_SIGNAL = useContext(MeasurementUpdateContext);
56
- const ROOT_SIGNAL = useSharedValue(0);
57
- const IS_ROOT = !ROOT_MEASUREMENT_SIGNAL;
58
-
59
- const emitUpdate = useStableCallbackValue(() => {
60
- "worklet";
61
- if (IS_ROOT) ROOT_SIGNAL.value = ROOT_SIGNAL.value + 1;
62
- });
63
-
64
- const maybeMeasureAndStore = useStableCallbackValue(
65
- ({ onPress, skipMarkingActive }: MaybeMeasureAndStoreParams) => {
66
- "worklet";
67
- // Currently, there's no necessity to measure when the current route is blurred ( could potentially change in the future )
68
- if (!sharedBoundTag || next) return;
69
-
70
- const measured = measure(animatedRef);
71
-
72
- if (!measured) {
73
- console.warn(
74
- `[react-native-screen-transitions] measure() returned null for sharedBoundTag="${sharedBoundTag}"`,
75
- );
76
- return;
77
- }
78
-
79
- const key = current.route.key;
80
-
81
- if (isBoundsEqual({ measured, key, sharedBoundTag })) {
82
- emitUpdate();
83
- if (!skipMarkingActive) {
84
- BoundStore.setRouteActive(key, sharedBoundTag);
85
- }
86
- if (onPress) runOnJS(onPress)();
87
- return;
88
- }
89
-
90
- emitUpdate();
91
-
92
- BoundStore.setBounds(key, sharedBoundTag, measured, preparedStyles);
93
- if (!skipMarkingActive) {
94
- BoundStore.setRouteActive(key, sharedBoundTag);
95
- }
96
-
97
- if (onPress) runOnJS(onPress)();
98
- },
99
- );
100
-
101
- const hasMeasuredOnLayout = useSharedValue(false);
102
- const handleInitialLayout = useStableCallbackValue(() => {
103
- "worklet";
104
-
105
- const prevKey = previous?.route.key;
106
- if (!sharedBoundTag || hasMeasuredOnLayout.value || !prevKey) {
107
- return;
108
- }
109
-
110
- const prevBounds = BoundStore.getBounds(prevKey)?.[sharedBoundTag];
111
-
112
- if (prevBounds) {
113
- // Should skip mark active if we are in a transition
114
- maybeMeasureAndStore({ skipMarkingActive: true });
115
- // Should not measure again while in transition
116
- hasMeasuredOnLayout.value = true;
117
- }
118
- });
119
-
120
- const captureActiveOnPress = useStableCallback(() => {
121
- if (!sharedBoundTag) {
122
- if (onPress) onPress();
123
- return;
124
- }
125
-
126
- // In this case, we DO want to mark active
127
- runOnUI(maybeMeasureAndStore)({ onPress });
128
- });
129
-
130
- const MeasurementSyncProvider = useMemo(() => {
131
- if (!IS_ROOT || !sharedBoundTag) {
132
- return Fragment;
133
- }
134
-
135
- return ({ children }: { children: React.ReactNode }) => (
136
- <MeasurementUpdateContext.Provider value={{ updateSignal: ROOT_SIGNAL }}>
137
- {children}
138
- </MeasurementUpdateContext.Provider>
139
- );
140
- }, [IS_ROOT, sharedBoundTag, ROOT_SIGNAL]);
141
-
142
- const prevNextRef = useRef(next);
143
- /**
144
- * Measure non-pressable elements when the screen goes from focused to blurred
145
- * (or when a new `next` descriptor appears) so we capture final bounds
146
- * right before the transition starts.
147
- */
148
- useLayoutEffect(() => {
149
- if (!sharedBoundTag || onPress) return;
150
-
151
- const hadNext = !!prevNextRef.current;
152
- const hasNext = !!next;
153
-
154
- if (!hadNext && hasNext) {
155
- runOnUI(maybeMeasureAndStore)({});
156
- }
157
-
158
- prevNextRef.current = next;
159
- }, [next, sharedBoundTag, onPress, maybeMeasureAndStore]);
160
-
161
- /**
162
- * Signal child shared elements (nested under this provider) to refresh their
163
- * measurements when the root updates, while preventing them from marking
164
- * themselves active during that sync.
165
- */
166
- useAnimatedReaction(
167
- () => ROOT_MEASUREMENT_SIGNAL?.updateSignal.value,
168
- (current) => {
169
- "worklet";
170
-
171
- // We don't want to run on the initial amount)
172
- if (current === 0 || current === undefined) return;
173
-
174
- // Children should not have the ability to mark active
175
- maybeMeasureAndStore({ skipMarkingActive: true });
176
- },
177
- );
178
-
179
- return {
180
- handleInitialLayout,
181
- captureActiveOnPress,
182
- MeasurementSyncProvider,
183
- };
184
- };
@@ -1,41 +0,0 @@
1
- import { useState } from "react";
2
- import {
3
- executeOnUIRuntimeSync,
4
- runOnJS,
5
- type SharedValue,
6
- useAnimatedReaction,
7
- useDerivedValue,
8
- } from "react-native-reanimated";
9
-
10
- /**
11
- * Derives React state from a Reanimated worklet.
12
- *
13
- * @param processor - The worklet function that calculates the value
14
- * @param dependencies - Array of dependencies for the worklet
15
- * @returns The derived value as React State
16
- */
17
- export function useDerivedValueState<T>(
18
- processor: () => T,
19
- dependencies: any[] = [],
20
- ): T {
21
- const derivedValue = useDerivedValue(processor, dependencies);
22
-
23
- const [state, setState] = useState<T>(() => {
24
- const readOnUI = executeOnUIRuntimeSync((sv: SharedValue<T>) => {
25
- "worklet";
26
- return sv.value;
27
- });
28
- return readOnUI(derivedValue);
29
- });
30
-
31
- useAnimatedReaction(
32
- () => derivedValue.value,
33
- (curr, prev) => {
34
- if (curr !== prev) {
35
- runOnJS(setState)(curr);
36
- }
37
- },
38
- );
39
-
40
- return state;
41
- }
@@ -1,161 +0,0 @@
1
- import type { ScreenTransitionState } from "../../types/animation";
2
-
3
- type GetCache = (fromKey: string, toKey: string) => string | null;
4
- type SetCache = (fromKey: string, toKey: string, id: string) => void;
5
- type GetRouteActive = (routeKey: string) => string | null;
6
-
7
- interface ResolveActiveBoundParams {
8
- current: ScreenTransitionState;
9
- next?: ScreenTransitionState;
10
- previous?: ScreenTransitionState;
11
- getPairCache: GetCache;
12
- setPairCache: SetCache;
13
- getRouteActive: GetRouteActive;
14
- }
15
-
16
- export function pairKey(fromKey?: string, toKey?: string) {
17
- "worklet";
18
- return fromKey && toKey ? `${fromKey}|${toKey}` : "";
19
- }
20
-
21
- const hasBound = (s: ScreenTransitionState | undefined, id?: string | null) => {
22
- "worklet";
23
- return !!id && !!s && !!s.bounds && !!s.bounds[id];
24
- };
25
-
26
- const getRoutePair = (
27
- current: ScreenTransitionState,
28
- next: ScreenTransitionState | undefined,
29
- previous: ScreenTransitionState | undefined,
30
- ) => {
31
- "worklet";
32
- const isClosing = !!next;
33
- const fromKey = isClosing ? current.route.key : previous?.route.key;
34
- const toKey = isClosing ? next?.route.key : current.route.key;
35
- const other = next ?? previous;
36
- return { fromKey, toKey, other } as const;
37
- };
38
-
39
- const resolveFromPairCache = (
40
- fromKey: string | undefined,
41
- toKey: string | undefined,
42
- other: ScreenTransitionState | undefined,
43
- getPairCache: GetCache,
44
- ) => {
45
- "worklet";
46
- if (fromKey && toKey) {
47
- const cached = getPairCache(fromKey, toKey);
48
- if (hasBound(other, cached)) return cached as string;
49
- }
50
- return "";
51
- };
52
-
53
- const resolveFromRequested = (
54
- reqId: string | null,
55
- current: ScreenTransitionState,
56
- other: ScreenTransitionState | undefined,
57
- ) => {
58
- "worklet";
59
- if (hasBound(other, reqId)) return reqId as string;
60
- if (hasBound(current, reqId)) return reqId as string;
61
- return "";
62
- };
63
-
64
- const resolveFromInteresection = (
65
- current: ScreenTransitionState,
66
- other: ScreenTransitionState | undefined,
67
- fromKey: string | undefined,
68
- getRouteActive: GetRouteActive,
69
- ) => {
70
- "worklet";
71
- if (!other) return "";
72
- const a = Object.keys(current.bounds);
73
- const b = Object.keys(other.bounds);
74
- const inter = a.filter((k) => b.includes(k));
75
- const otherHasAny = b.length > 0;
76
- const routeActive = fromKey ? getRouteActive(fromKey) : null;
77
-
78
- if (inter.length > 0) {
79
- if (routeActive && inter.includes(routeActive)) return routeActive;
80
- return inter[0];
81
- }
82
-
83
- if (routeActive && hasBound(other, routeActive)) return routeActive;
84
- if (b.length === 1) return b[0];
85
-
86
- if (!otherHasAny) {
87
- if (routeActive && hasBound(current, routeActive)) return routeActive;
88
- if (a.length === 1) return a[0];
89
- }
90
-
91
- return "";
92
- };
93
-
94
- /**
95
- * Util function to get the active bound id for a given transition state.
96
- *
97
- * It will check by ( priority from highest to lowest ):
98
- * 1. Requested id
99
- * 2. Cache
100
- * 3. Intersection
101
- */
102
- export function resolveActiveBound({
103
- current,
104
- next,
105
- previous,
106
- getPairCache,
107
- setPairCache,
108
- getRouteActive,
109
- }: ResolveActiveBoundParams) {
110
- "worklet";
111
- const { fromKey, toKey, other } = getRoutePair(current, next, previous);
112
-
113
- // Resolve requested from per-route most recently used (last active bound by route)
114
- const requestedId = fromKey ? getRouteActive(fromKey) : null;
115
- const byRequested = resolveFromRequested(requestedId, current, other);
116
- if (byRequested) {
117
- if (
118
- fromKey &&
119
- toKey &&
120
- hasBound(current, byRequested) &&
121
- hasBound(other, byRequested)
122
- ) {
123
- setPairCache(fromKey, toKey, byRequested);
124
- }
125
- return byRequested;
126
- }
127
-
128
- const byPairCache = resolveFromPairCache(fromKey, toKey, other, getPairCache);
129
- if (byPairCache) {
130
- if (
131
- fromKey &&
132
- toKey &&
133
- hasBound(current, byPairCache) &&
134
- hasBound(other, byPairCache)
135
- ) {
136
- setPairCache(fromKey, toKey, byPairCache);
137
- }
138
- return byPairCache;
139
- }
140
-
141
- const byIntersection = resolveFromInteresection(
142
- current,
143
- other,
144
- fromKey,
145
- getRouteActive,
146
- );
147
-
148
- if (byIntersection) {
149
- if (
150
- fromKey &&
151
- toKey &&
152
- hasBound(current, byIntersection) &&
153
- hasBound(other, byIntersection)
154
- ) {
155
- setPairCache(fromKey, toKey, byIntersection);
156
- }
157
- return byIntersection;
158
- }
159
-
160
- return "";
161
- }
@@ -1,148 +0,0 @@
1
- import {
2
- type MeasuredDimensions,
3
- makeMutable,
4
- type StyleProps,
5
- } from "react-native-reanimated";
6
- import type { ScreenTransitionState } from "../../types/animation";
7
- import type { ScreenKey } from "../../types/core";
8
- import type { Any } from "../../types/utils";
9
- import { pairKey, resolveActiveBound } from "./_utils";
10
-
11
- type BoundsDict = Record<
12
- string,
13
- Record<string, { bounds: MeasuredDimensions; styles: StyleProps }>
14
- >;
15
-
16
- const registry = makeMutable<BoundsDict>({});
17
- const pairCache = makeMutable<Record<string, string>>({});
18
- const lastActiveByRoute = makeMutable<Record<string, string>>({});
19
-
20
- function setBounds(
21
- screenId: string,
22
- boundId: string,
23
- bounds: MeasuredDimensions | null = null,
24
- styles: StyleProps = {},
25
- ) {
26
- "worklet";
27
- registry.modify((state: Any) => {
28
- "worklet";
29
- if (!state[screenId]) {
30
- state[screenId] = {};
31
- }
32
- state[screenId][boundId] = { bounds, styles };
33
-
34
- return state;
35
- });
36
- }
37
-
38
- function getBounds(screenId: string) {
39
- "worklet";
40
- return registry.value[screenId] ?? {};
41
- }
42
-
43
- function setRouteActive(routeKey: string, boundId: string) {
44
- "worklet";
45
- lastActiveByRoute.modify((state: Any) => {
46
- "worklet";
47
- state[routeKey] = boundId;
48
- return state;
49
- });
50
- }
51
-
52
- function getRouteActive(routeKey: string) {
53
- "worklet";
54
- return lastActiveByRoute.value[routeKey] ?? null;
55
- }
56
-
57
- function setPairCache(fromKey: string, toKey: string, boundId: string) {
58
- "worklet";
59
- const key = pairKey(fromKey, toKey);
60
- if (!key) return;
61
- pairCache.modify((state: Any) => {
62
- "worklet";
63
- state[key] = boundId;
64
- return state;
65
- });
66
- }
67
-
68
- function getPairCache(fromKey: string, toKey: string) {
69
- "worklet";
70
- const key = pairKey(fromKey, toKey);
71
- if (!key) return null;
72
- return pairCache.value[key] ?? null;
73
- }
74
-
75
- function clear(routeKey: ScreenKey) {
76
- "worklet";
77
- registry.modify((state) => {
78
- "worklet";
79
- delete state[routeKey];
80
- return state;
81
- });
82
- lastActiveByRoute.modify((state) => {
83
- "worklet";
84
- if (state[routeKey]) delete state[routeKey];
85
- return state;
86
- });
87
-
88
- pairCache.modify((state) => {
89
- "worklet";
90
- const keys = Object.keys(state);
91
- for (let i = 0; i < keys.length; i++) {
92
- const k = keys[i];
93
- const [from, to] = k.split("|");
94
- if (from === routeKey || to === routeKey) {
95
- delete state[k];
96
- }
97
- }
98
- return state;
99
- });
100
- }
101
-
102
- function debugBoundStore() {
103
- "worklet";
104
- console.log("[BoundStore] registry keys:", Object.keys(registry.value));
105
- console.log(
106
- "[BoundStore] registry size:",
107
- Object.keys(registry.value).length,
108
- );
109
- console.log("[BoundStore] pairCache keys:", Object.keys(pairCache.value));
110
- console.log(
111
- "[BoundStore] pairCache size:",
112
- Object.keys(pairCache.value).length,
113
- );
114
- console.log(
115
- "[BoundStore] lastActiveByRoute keys:",
116
- Object.keys(lastActiveByRoute.value),
117
- );
118
- console.log(
119
- "[BoundStore] lastActiveByRoute size:",
120
- Object.keys(lastActiveByRoute.value).length,
121
- );
122
- }
123
-
124
- function getActiveBound(
125
- current: ScreenTransitionState,
126
- next: ScreenTransitionState | undefined,
127
- previous: ScreenTransitionState | undefined,
128
- ) {
129
- "worklet";
130
- return resolveActiveBound({
131
- current,
132
- next,
133
- previous,
134
- getPairCache,
135
- setPairCache,
136
- getRouteActive,
137
- });
138
- }
139
-
140
- export const BoundStore = {
141
- setBounds,
142
- getBounds,
143
- setRouteActive,
144
- getRouteActive,
145
- clear,
146
- getActiveBound,
147
- debugBoundStore,
148
- };
@@ -1,13 +0,0 @@
1
- import type { NativeStackDescriptor } from "../../../native-stack/types";
2
- import { AnimationStore } from "../animation-store";
3
- import { BoundStore } from "../bound-store";
4
- import { GestureStore } from "../gesture-store";
5
-
6
- /**
7
- * Reset all stores for a given screen
8
- */
9
- export const resetStoresForScreen = (current: NativeStackDescriptor) => {
10
- AnimationStore.clear(current.route.key);
11
- GestureStore.clear(current.route.key);
12
- BoundStore.clear(current.route.key);
13
- };
@@ -1,10 +0,0 @@
1
- import type { ScreenTransitionState } from "../../../types/animation";
2
- import type { ScreenPhase } from "../../../types/core";
3
-
4
- export type GetBoundsParams = {
5
- id: string | null;
6
- phase?: ScreenPhase;
7
- previous?: ScreenTransitionState;
8
- current: ScreenTransitionState;
9
- next?: ScreenTransitionState;
10
- };
@@ -1,21 +0,0 @@
1
- export function flattenStyle<TStyleProp>(style: TStyleProp): TStyleProp {
2
- "worklet";
3
- if (style === null || typeof style !== "object") {
4
- return style;
5
- }
6
-
7
- if (!Array.isArray(style)) {
8
- return style;
9
- }
10
-
11
- const result: { [key: string]: TStyleProp } = {};
12
- for (let i = 0, styleLength = style.length; i < styleLength; ++i) {
13
- const computedStyle = flattenStyle(style[i]);
14
- if (computedStyle) {
15
- for (const key in computedStyle) {
16
- result[key] = computedStyle[key];
17
- }
18
- }
19
- }
20
- return result as TStyleProp;
21
- }
@@ -1,54 +0,0 @@
1
- import type { BoundEntry } from "../../../types/bounds";
2
-
3
- import type { GetBoundsParams } from "../_types/get-bounds";
4
-
5
- const fallbackBounds = {
6
- bounds: {
7
- width: 0,
8
- height: 0,
9
- x: 0,
10
- y: 0,
11
- pageX: 0,
12
- pageY: 0,
13
- },
14
- styles: {},
15
- };
16
-
17
- export const getBounds = (props: GetBoundsParams): BoundEntry => {
18
- "worklet";
19
- const boundId = props.id;
20
- const phase = props.phase;
21
-
22
- if (phase && boundId) {
23
- const phaseMap = {
24
- current: props.current?.bounds[boundId],
25
- next: props.next?.bounds[boundId],
26
- previous: props.previous?.bounds[boundId],
27
- };
28
-
29
- const phaseBounds = phaseMap[phase];
30
-
31
- if (!phaseBounds) {
32
- return fallbackBounds;
33
- }
34
-
35
- return {
36
- bounds: phaseBounds.bounds,
37
- styles: phaseBounds?.styles,
38
- };
39
- }
40
-
41
- if (!props.next && boundId) {
42
- const previousBounds = props.previous?.bounds[boundId];
43
-
44
- return previousBounds || fallbackBounds;
45
- }
46
-
47
- if (boundId) {
48
- const nextBounds = props.next?.bounds[boundId];
49
-
50
- return nextBounds || fallbackBounds;
51
- }
52
-
53
- return fallbackBounds;
54
- };