react-native-screen-transitions 3.0.0-beta.1 → 3.0.0-beta.11

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 (429) hide show
  1. package/README.md +60 -5
  2. package/lib/commonjs/blank-stack/components/Overlay.js +20 -6
  3. package/lib/commonjs/blank-stack/components/Overlay.js.map +1 -1
  4. package/lib/commonjs/blank-stack/components/Screens.js +5 -5
  5. package/lib/commonjs/blank-stack/components/Screens.js.map +1 -1
  6. package/lib/commonjs/blank-stack/components/StackView.js +14 -8
  7. package/lib/commonjs/blank-stack/components/StackView.js.map +1 -1
  8. package/lib/commonjs/blank-stack/hooks/use-overlay-animation.js +5 -9
  9. package/lib/commonjs/blank-stack/hooks/use-overlay-animation.js.map +1 -1
  10. package/lib/commonjs/blank-stack/index.js +7 -0
  11. package/lib/commonjs/blank-stack/index.js.map +1 -1
  12. package/lib/commonjs/native-stack/views/NativeStackView.native.js +4 -3
  13. package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
  14. package/lib/commonjs/shared/components/controllers/screen-lifecycle.js +25 -11
  15. package/lib/commonjs/shared/components/controllers/screen-lifecycle.js.map +1 -1
  16. package/lib/commonjs/shared/components/create-transition-aware-component.js +11 -14
  17. package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
  18. package/lib/commonjs/shared/components/root-transition-aware.js +1 -1
  19. package/lib/commonjs/shared/components/root-transition-aware.js.map +1 -1
  20. package/lib/commonjs/shared/configs/presets.js +20 -9
  21. package/lib/commonjs/shared/configs/presets.js.map +1 -1
  22. package/lib/commonjs/shared/constants.js +0 -1
  23. package/lib/commonjs/shared/constants.js.map +1 -1
  24. package/lib/commonjs/shared/hooks/animation/use-associated-style.js +9 -10
  25. package/lib/commonjs/shared/hooks/animation/use-associated-style.js.map +1 -1
  26. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +10 -25
  27. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
  28. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +48 -36
  29. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  30. package/lib/commonjs/shared/hooks/gestures/use-parent-gesture-registry.js +1 -1
  31. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +1 -1
  32. package/lib/commonjs/shared/hooks/reanimated/use-shared-value-state.js.map +1 -0
  33. package/lib/commonjs/shared/hooks/use-stable-callback-value.js +7 -1
  34. package/lib/commonjs/shared/hooks/use-stable-callback-value.js.map +1 -1
  35. package/lib/commonjs/shared/hooks/use-stable-callback.js.map +1 -1
  36. package/lib/commonjs/shared/providers/{gestures.js → gestures.provider.js} +7 -4
  37. package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -0
  38. package/lib/commonjs/shared/providers/{keys.js → keys.provider.js} +1 -1
  39. package/lib/commonjs/shared/providers/keys.provider.js.map +1 -0
  40. package/lib/commonjs/shared/providers/register-bounds.provider.js +207 -0
  41. package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -0
  42. package/lib/commonjs/shared/providers/{screen-transition-provider.js → screen-transition.provider.js} +4 -4
  43. package/lib/commonjs/shared/providers/{screen-transition-provider.js.map → screen-transition.provider.js.map} +1 -1
  44. package/lib/commonjs/shared/providers/{transition-styles.js → transition-styles.provider.js} +7 -9
  45. package/lib/commonjs/shared/providers/transition-styles.provider.js.map +1 -0
  46. package/lib/commonjs/shared/stores/{animation-store.js → animation.store.js} +13 -4
  47. package/lib/commonjs/shared/stores/animation.store.js.map +1 -0
  48. package/lib/commonjs/shared/stores/bounds.store.js +141 -0
  49. package/lib/commonjs/shared/stores/bounds.store.js.map +1 -0
  50. package/lib/commonjs/shared/stores/{gesture-store.js → gesture.store.js} +11 -1
  51. package/lib/commonjs/shared/stores/gesture.store.js.map +1 -0
  52. package/lib/commonjs/shared/types/{core.js → animation.types.js} +1 -1
  53. package/lib/commonjs/shared/types/animation.types.js.map +1 -0
  54. package/lib/commonjs/shared/types/{bounds.js → bounds.types.js} +1 -1
  55. package/lib/commonjs/shared/types/bounds.types.js.map +1 -0
  56. package/lib/commonjs/shared/types/{animation.js → core.types.js} +1 -1
  57. package/lib/commonjs/shared/types/{animation.js.map → core.types.js.map} +1 -1
  58. package/lib/commonjs/shared/types/{gesture.js → gesture.types.js} +1 -1
  59. package/lib/commonjs/shared/types/gesture.types.js.map +1 -0
  60. package/lib/commonjs/shared/types/utils.types.js +2 -0
  61. package/lib/commonjs/shared/types/{core.js.map → utils.types.js.map} +1 -1
  62. package/lib/commonjs/shared/utils/animation/derivations.js +1 -7
  63. package/lib/commonjs/shared/utils/animation/derivations.js.map +1 -1
  64. package/lib/commonjs/shared/utils/bounds/helpers/geometry.js.map +1 -0
  65. package/lib/commonjs/shared/utils/bounds/helpers/is-bounds-equal.js +19 -0
  66. package/lib/commonjs/shared/utils/bounds/helpers/is-bounds-equal.js.map +1 -0
  67. package/lib/commonjs/shared/utils/bounds/helpers/style-composers.js.map +1 -0
  68. package/lib/commonjs/shared/utils/bounds/helpers/styles.js.map +1 -0
  69. package/lib/commonjs/shared/utils/bounds/index.js +45 -35
  70. package/lib/commonjs/shared/utils/bounds/index.js.map +1 -1
  71. package/lib/commonjs/shared/utils/bounds/types/builder.js.map +1 -0
  72. package/lib/commonjs/shared/utils/bounds/{_types/builder.js.map → types/geometry.js.map} +1 -1
  73. package/lib/commonjs/shared/utils/create-provider.js +51 -0
  74. package/lib/commonjs/shared/utils/create-provider.js.map +1 -0
  75. package/lib/commonjs/shared/utils/gesture/apply-offset-rules.js +1 -1
  76. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js +1 -1
  77. package/lib/commonjs/shared/utils/reset-stores-for-screen.js +17 -0
  78. package/lib/commonjs/shared/utils/reset-stores-for-screen.js.map +1 -0
  79. package/lib/module/blank-stack/components/Overlay.js +20 -6
  80. package/lib/module/blank-stack/components/Overlay.js.map +1 -1
  81. package/lib/module/blank-stack/components/Screens.js +4 -4
  82. package/lib/module/blank-stack/components/Screens.js.map +1 -1
  83. package/lib/module/blank-stack/components/StackView.js +12 -7
  84. package/lib/module/blank-stack/components/StackView.js.map +1 -1
  85. package/lib/module/blank-stack/hooks/use-overlay-animation.js +5 -9
  86. package/lib/module/blank-stack/hooks/use-overlay-animation.js.map +1 -1
  87. package/lib/module/blank-stack/index.js +1 -0
  88. package/lib/module/blank-stack/index.js.map +1 -1
  89. package/lib/module/native-stack/views/NativeStackView.native.js +3 -2
  90. package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
  91. package/lib/module/shared/components/controllers/screen-lifecycle.js +24 -10
  92. package/lib/module/shared/components/controllers/screen-lifecycle.js.map +1 -1
  93. package/lib/module/shared/components/create-transition-aware-component.js +11 -14
  94. package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
  95. package/lib/module/shared/components/root-transition-aware.js +1 -1
  96. package/lib/module/shared/components/root-transition-aware.js.map +1 -1
  97. package/lib/module/shared/configs/presets.js +20 -9
  98. package/lib/module/shared/configs/presets.js.map +1 -1
  99. package/lib/module/shared/constants.js +0 -1
  100. package/lib/module/shared/constants.js.map +1 -1
  101. package/lib/module/shared/hooks/animation/use-associated-style.js +9 -10
  102. package/lib/module/shared/hooks/animation/use-associated-style.js.map +1 -1
  103. package/lib/module/shared/hooks/animation/use-screen-animation.js +7 -22
  104. package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
  105. package/lib/module/shared/hooks/gestures/use-build-gestures.js +46 -34
  106. package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  107. package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js +1 -1
  108. package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js.map +1 -1
  109. package/lib/module/shared/hooks/gestures/use-scroll-registry.js +1 -1
  110. package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  111. package/lib/module/shared/hooks/reanimated/use-shared-value-state.js.map +1 -0
  112. package/lib/module/shared/hooks/use-stable-callback-value.js +8 -2
  113. package/lib/module/shared/hooks/use-stable-callback-value.js.map +1 -1
  114. package/lib/module/shared/hooks/use-stable-callback.js.map +1 -1
  115. package/lib/module/shared/providers/{gestures.js → gestures.provider.js} +7 -4
  116. package/lib/module/shared/providers/gestures.provider.js.map +1 -0
  117. package/lib/module/shared/providers/{keys.js → keys.provider.js} +1 -1
  118. package/lib/module/shared/providers/keys.provider.js.map +1 -0
  119. package/lib/module/shared/providers/register-bounds.provider.js +202 -0
  120. package/lib/module/shared/providers/register-bounds.provider.js.map +1 -0
  121. package/lib/module/shared/providers/{screen-transition-provider.js → screen-transition.provider.js} +4 -4
  122. package/lib/module/shared/providers/{screen-transition-provider.js.map → screen-transition.provider.js.map} +1 -1
  123. package/lib/module/shared/providers/{transition-styles.js → transition-styles.provider.js} +6 -9
  124. package/lib/module/shared/providers/transition-styles.provider.js.map +1 -0
  125. package/lib/module/shared/stores/animation.store.js +44 -0
  126. package/lib/module/shared/stores/animation.store.js.map +1 -0
  127. package/lib/module/shared/stores/bounds.store.js +137 -0
  128. package/lib/module/shared/stores/bounds.store.js.map +1 -0
  129. package/lib/module/shared/stores/{gesture-store.js → gesture.store.js} +12 -2
  130. package/lib/module/shared/stores/gesture.store.js.map +1 -0
  131. package/lib/module/shared/types/animation.types.js +4 -0
  132. package/lib/module/shared/types/animation.types.js.map +1 -0
  133. package/lib/module/shared/types/bounds.types.js +4 -0
  134. package/lib/module/shared/types/bounds.types.js.map +1 -0
  135. package/lib/module/shared/types/core.types.js +4 -0
  136. package/lib/{commonjs/shared/types/bounds.js.map → module/shared/types/core.types.js.map} +1 -1
  137. package/lib/module/shared/types/{gesture.js → gesture.types.js} +1 -1
  138. package/lib/module/shared/types/gesture.types.js.map +1 -0
  139. package/lib/module/shared/types/utils.types.js +2 -0
  140. package/lib/{commonjs/shared/types/utils.js.map → module/shared/types/utils.types.js.map} +1 -1
  141. package/lib/module/shared/utils/animation/derivations.js +1 -7
  142. package/lib/module/shared/utils/animation/derivations.js.map +1 -1
  143. package/lib/module/shared/utils/bounds/helpers/geometry.js.map +1 -0
  144. package/lib/module/shared/utils/bounds/helpers/is-bounds-equal.js +14 -0
  145. package/lib/module/shared/utils/bounds/helpers/is-bounds-equal.js.map +1 -0
  146. package/lib/module/shared/utils/bounds/helpers/style-composers.js.map +1 -0
  147. package/lib/module/shared/utils/bounds/helpers/styles.js.map +1 -0
  148. package/lib/module/shared/utils/bounds/index.js +45 -35
  149. package/lib/module/shared/utils/bounds/index.js.map +1 -1
  150. package/lib/module/shared/utils/bounds/types/builder.js.map +1 -0
  151. package/lib/module/shared/utils/bounds/{_types/builder.js.map → types/geometry.js.map} +1 -1
  152. package/lib/module/shared/utils/create-provider.js +46 -0
  153. package/lib/module/shared/utils/create-provider.js.map +1 -0
  154. package/lib/module/shared/utils/gesture/apply-offset-rules.js +1 -1
  155. package/lib/module/shared/utils/gesture/apply-offset-rules.js.map +1 -1
  156. package/lib/module/shared/utils/gesture/check-gesture-activation.js +1 -1
  157. package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  158. package/lib/module/shared/utils/reset-stores-for-screen.js +13 -0
  159. package/lib/module/shared/utils/reset-stores-for-screen.js.map +1 -0
  160. package/lib/typescript/blank-stack/components/Overlay.d.ts.map +1 -1
  161. package/lib/typescript/blank-stack/components/Screens.d.ts +2 -3
  162. package/lib/typescript/blank-stack/components/Screens.d.ts.map +1 -1
  163. package/lib/typescript/blank-stack/components/StackView.d.ts.map +1 -1
  164. package/lib/typescript/blank-stack/hooks/use-overlay-animation.d.ts +1 -1
  165. package/lib/typescript/blank-stack/hooks/use-overlay-animation.d.ts.map +1 -1
  166. package/lib/typescript/blank-stack/index.d.ts +1 -0
  167. package/lib/typescript/blank-stack/index.d.ts.map +1 -1
  168. package/lib/typescript/blank-stack/types.d.ts +6 -2
  169. package/lib/typescript/blank-stack/types.d.ts.map +1 -1
  170. package/lib/typescript/native-stack/types.d.ts +1 -1
  171. package/lib/typescript/native-stack/types.d.ts.map +1 -1
  172. package/lib/typescript/native-stack/views/NativeStackView.native.d.ts.map +1 -1
  173. package/lib/typescript/shared/components/controllers/screen-lifecycle.d.ts.map +1 -1
  174. package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
  175. package/lib/typescript/shared/configs/index.d.ts +15 -9
  176. package/lib/typescript/shared/configs/index.d.ts.map +1 -1
  177. package/lib/typescript/shared/configs/presets.d.ts +10 -4
  178. package/lib/typescript/shared/configs/presets.d.ts.map +1 -1
  179. package/lib/typescript/shared/constants.d.ts +6 -6
  180. package/lib/typescript/shared/constants.d.ts.map +1 -1
  181. package/lib/typescript/shared/hooks/animation/use-associated-style.d.ts.map +1 -1
  182. package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts +2 -2
  183. package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts.map +1 -1
  184. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +5 -2
  185. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
  186. package/lib/typescript/shared/hooks/reanimated/use-shared-value-state.d.ts.map +1 -0
  187. package/lib/typescript/shared/hooks/use-stable-callback-value.d.ts.map +1 -1
  188. package/lib/typescript/shared/hooks/use-stable-callback.d.ts.map +1 -1
  189. package/lib/typescript/shared/index.d.ts +25 -18
  190. package/lib/typescript/shared/index.d.ts.map +1 -1
  191. package/lib/typescript/shared/providers/{gestures.d.ts → gestures.provider.d.ts} +5 -3
  192. package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -0
  193. package/lib/typescript/shared/providers/{keys.d.ts → keys.provider.d.ts} +2 -2
  194. package/lib/typescript/shared/providers/keys.provider.d.ts.map +1 -0
  195. package/lib/typescript/shared/providers/register-bounds.provider.d.ts +17 -0
  196. package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -0
  197. package/lib/typescript/shared/providers/{screen-transition-provider.d.ts → screen-transition.provider.d.ts} +2 -2
  198. package/lib/typescript/shared/providers/{screen-transition-provider.d.ts.map → screen-transition.provider.d.ts.map} +1 -1
  199. package/lib/typescript/shared/providers/transition-styles.provider.d.ts +14 -0
  200. package/lib/typescript/shared/providers/transition-styles.provider.d.ts.map +1 -0
  201. package/lib/typescript/shared/stores/{animation-store.d.ts → animation.store.d.ts} +6 -4
  202. package/lib/typescript/shared/stores/animation.store.d.ts.map +1 -0
  203. package/lib/typescript/shared/stores/bounds.store.d.ts +29 -0
  204. package/lib/typescript/shared/stores/bounds.store.d.ts.map +1 -0
  205. package/lib/typescript/shared/stores/{gesture-store.d.ts → gesture.store.d.ts} +3 -3
  206. package/lib/typescript/shared/stores/gesture.store.d.ts.map +1 -0
  207. package/lib/typescript/shared/types/{animation.d.ts → animation.types.d.ts} +48 -20
  208. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -0
  209. package/lib/typescript/shared/types/{bounds.d.ts → bounds.types.d.ts} +4 -4
  210. package/lib/typescript/shared/types/bounds.types.d.ts.map +1 -0
  211. package/lib/typescript/shared/types/{core.d.ts → core.types.d.ts} +3 -3
  212. package/lib/typescript/shared/types/core.types.d.ts.map +1 -0
  213. package/lib/typescript/shared/types/{gesture.d.ts → gesture.types.d.ts} +1 -1
  214. package/lib/typescript/shared/types/gesture.types.d.ts.map +1 -0
  215. package/lib/typescript/shared/types/{utils.d.ts → utils.types.d.ts} +1 -1
  216. package/lib/typescript/shared/types/utils.types.d.ts.map +1 -0
  217. package/lib/typescript/shared/utils/animation/derivations.d.ts +2 -4
  218. package/lib/typescript/shared/utils/animation/derivations.d.ts.map +1 -1
  219. package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts +2 -2
  220. package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts.map +1 -1
  221. package/lib/typescript/shared/utils/bounds/constants.d.ts +3 -3
  222. package/lib/typescript/shared/utils/bounds/constants.d.ts.map +1 -1
  223. package/lib/typescript/shared/utils/bounds/{_utils → helpers}/geometry.d.ts +3 -3
  224. package/lib/typescript/shared/utils/bounds/helpers/geometry.d.ts.map +1 -0
  225. package/lib/typescript/shared/utils/bounds/helpers/is-bounds-equal.d.ts.map +1 -0
  226. package/lib/typescript/shared/utils/bounds/{_utils → helpers}/style-composers.d.ts +2 -2
  227. package/lib/typescript/shared/utils/bounds/helpers/style-composers.d.ts.map +1 -0
  228. package/lib/typescript/shared/utils/bounds/{_utils → helpers}/styles.d.ts +1 -1
  229. package/lib/typescript/shared/utils/bounds/helpers/styles.d.ts.map +1 -0
  230. package/lib/typescript/shared/utils/bounds/index.d.ts +3 -4
  231. package/lib/typescript/shared/utils/bounds/index.d.ts.map +1 -1
  232. package/lib/typescript/shared/utils/bounds/{_types → types}/builder.d.ts +13 -34
  233. package/lib/typescript/shared/utils/bounds/types/builder.d.ts.map +1 -0
  234. package/lib/typescript/shared/utils/bounds/types/geometry.d.ts.map +1 -0
  235. package/lib/typescript/shared/utils/create-provider.d.ts +14 -0
  236. package/lib/typescript/shared/utils/create-provider.d.ts.map +1 -0
  237. package/lib/typescript/shared/utils/gesture/apply-offset-rules.d.ts +2 -2
  238. package/lib/typescript/shared/utils/gesture/apply-offset-rules.d.ts.map +1 -1
  239. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +2 -2
  240. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
  241. package/lib/typescript/shared/utils/gesture/reset-gesture-values.d.ts +2 -2
  242. package/lib/typescript/shared/utils/gesture/reset-gesture-values.d.ts.map +1 -1
  243. package/lib/typescript/shared/utils/gesture/velocity.d.ts +1 -1
  244. package/lib/typescript/shared/utils/reset-stores-for-screen.d.ts +6 -0
  245. package/lib/typescript/shared/utils/reset-stores-for-screen.d.ts.map +1 -0
  246. package/package.json +1 -1
  247. package/src/blank-stack/components/Overlay.tsx +25 -5
  248. package/src/blank-stack/components/Screens.tsx +6 -6
  249. package/src/blank-stack/components/StackView.tsx +11 -5
  250. package/src/blank-stack/hooks/use-overlay-animation.tsx +6 -21
  251. package/src/blank-stack/index.ts +1 -0
  252. package/src/blank-stack/types.ts +6 -2
  253. package/src/native-stack/types.ts +1 -1
  254. package/src/native-stack/views/NativeStackView.native.tsx +4 -2
  255. package/src/shared/components/controllers/screen-lifecycle.tsx +26 -11
  256. package/src/shared/components/create-transition-aware-component.tsx +23 -27
  257. package/src/shared/components/root-transition-aware.tsx +1 -1
  258. package/src/shared/configs/presets.ts +31 -17
  259. package/src/shared/constants.ts +6 -7
  260. package/src/shared/hooks/animation/use-associated-style.tsx +8 -9
  261. package/src/shared/hooks/animation/use-screen-animation.tsx +8 -26
  262. package/src/shared/hooks/gestures/use-build-gestures.tsx +66 -38
  263. package/src/shared/hooks/gestures/use-parent-gesture-registry.tsx +1 -1
  264. package/src/shared/hooks/gestures/use-scroll-registry.tsx +2 -2
  265. package/src/shared/hooks/{use-stable-callback-value.tsx → use-stable-callback-value.ts} +10 -1
  266. package/src/shared/index.ts +4 -1
  267. package/src/shared/providers/{gestures.tsx → gestures.provider.tsx} +17 -8
  268. package/src/shared/providers/{keys.tsx → keys.provider.tsx} +1 -1
  269. package/src/shared/providers/register-bounds.provider.tsx +284 -0
  270. package/src/shared/providers/{screen-transition-provider.tsx → screen-transition.provider.tsx} +3 -3
  271. package/src/shared/providers/{transition-styles.tsx → transition-styles.provider.tsx} +13 -14
  272. package/src/shared/stores/{animation-store.ts → animation.store.ts} +20 -4
  273. package/src/shared/stores/bounds.store.ts +166 -0
  274. package/src/shared/stores/{gesture-store.ts → gesture.store.ts} +17 -3
  275. package/src/shared/types/{animation.ts → animation.types.ts} +60 -19
  276. package/src/shared/types/{bounds.ts → bounds.types.ts} +3 -3
  277. package/src/shared/types/{core.ts → core.types.ts} +10 -2
  278. package/src/shared/utils/animation/derivations.ts +2 -8
  279. package/src/shared/utils/animation/start-screen-transition.ts +2 -2
  280. package/src/shared/utils/bounds/constants.ts +3 -3
  281. package/src/shared/utils/bounds/{_utils → helpers}/geometry.ts +3 -3
  282. package/src/shared/utils/bounds/{_utils → helpers}/is-bounds-equal.ts +3 -3
  283. package/src/shared/utils/bounds/{_utils → helpers}/style-composers.ts +2 -2
  284. package/src/shared/utils/bounds/{_utils → helpers}/styles.ts +1 -1
  285. package/src/shared/utils/bounds/index.ts +53 -55
  286. package/src/shared/utils/bounds/{_types → types}/builder.ts +19 -37
  287. package/src/shared/utils/create-provider.tsx +71 -0
  288. package/src/shared/utils/gesture/apply-offset-rules.ts +2 -2
  289. package/src/shared/utils/gesture/check-gesture-activation.ts +2 -2
  290. package/src/shared/utils/gesture/reset-gesture-values.ts +2 -2
  291. package/src/shared/utils/gesture/velocity.ts +1 -1
  292. package/src/shared/utils/reset-stores-for-screen.ts +11 -0
  293. package/lib/commonjs/shared/hooks/bounds/use-bound-registry.js +0 -131
  294. package/lib/commonjs/shared/hooks/bounds/use-bound-registry.js.map +0 -1
  295. package/lib/commonjs/shared/hooks/use-shared-value-state.js.map +0 -1
  296. package/lib/commonjs/shared/providers/gestures.js.map +0 -1
  297. package/lib/commonjs/shared/providers/keys.js.map +0 -1
  298. package/lib/commonjs/shared/providers/transition-styles.js.map +0 -1
  299. package/lib/commonjs/shared/providers/utils/create-provider.js +0 -39
  300. package/lib/commonjs/shared/providers/utils/create-provider.js.map +0 -1
  301. package/lib/commonjs/shared/stores/animation-store.js.map +0 -1
  302. package/lib/commonjs/shared/stores/bound-store/_utils.js +0 -118
  303. package/lib/commonjs/shared/stores/bound-store/_utils.js.map +0 -1
  304. package/lib/commonjs/shared/stores/bound-store/index.js +0 -116
  305. package/lib/commonjs/shared/stores/bound-store/index.js.map +0 -1
  306. package/lib/commonjs/shared/stores/gesture-store.js.map +0 -1
  307. package/lib/commonjs/shared/stores/navigator-dismiss-state.js +0 -23
  308. package/lib/commonjs/shared/stores/navigator-dismiss-state.js.map +0 -1
  309. package/lib/commonjs/shared/stores/utils/reset-stores-for-screen.js +0 -19
  310. package/lib/commonjs/shared/stores/utils/reset-stores-for-screen.js.map +0 -1
  311. package/lib/commonjs/shared/types/gesture.js.map +0 -1
  312. package/lib/commonjs/shared/types/utils.js +0 -2
  313. package/lib/commonjs/shared/utils/bounds/_types/geometry.js.map +0 -1
  314. package/lib/commonjs/shared/utils/bounds/_types/get-bounds.js +0 -6
  315. package/lib/commonjs/shared/utils/bounds/_types/get-bounds.js.map +0 -1
  316. package/lib/commonjs/shared/utils/bounds/_utils/flatten-styles.js +0 -27
  317. package/lib/commonjs/shared/utils/bounds/_utils/flatten-styles.js.map +0 -1
  318. package/lib/commonjs/shared/utils/bounds/_utils/geometry.js.map +0 -1
  319. package/lib/commonjs/shared/utils/bounds/_utils/get-bounds.js +0 -49
  320. package/lib/commonjs/shared/utils/bounds/_utils/get-bounds.js.map +0 -1
  321. package/lib/commonjs/shared/utils/bounds/_utils/is-bounds-equal.js +0 -19
  322. package/lib/commonjs/shared/utils/bounds/_utils/is-bounds-equal.js.map +0 -1
  323. package/lib/commonjs/shared/utils/bounds/_utils/style-composers.js.map +0 -1
  324. package/lib/commonjs/shared/utils/bounds/_utils/styles.js.map +0 -1
  325. package/lib/module/shared/hooks/bounds/use-bound-registry.js +0 -125
  326. package/lib/module/shared/hooks/bounds/use-bound-registry.js.map +0 -1
  327. package/lib/module/shared/hooks/use-shared-value-state.js.map +0 -1
  328. package/lib/module/shared/providers/gestures.js.map +0 -1
  329. package/lib/module/shared/providers/keys.js.map +0 -1
  330. package/lib/module/shared/providers/transition-styles.js.map +0 -1
  331. package/lib/module/shared/providers/utils/create-provider.js +0 -33
  332. package/lib/module/shared/providers/utils/create-provider.js.map +0 -1
  333. package/lib/module/shared/stores/animation-store.js +0 -33
  334. package/lib/module/shared/stores/animation-store.js.map +0 -1
  335. package/lib/module/shared/stores/bound-store/_utils.js +0 -113
  336. package/lib/module/shared/stores/bound-store/_utils.js.map +0 -1
  337. package/lib/module/shared/stores/bound-store/index.js +0 -112
  338. package/lib/module/shared/stores/bound-store/index.js.map +0 -1
  339. package/lib/module/shared/stores/gesture-store.js.map +0 -1
  340. package/lib/module/shared/stores/navigator-dismiss-state.js +0 -19
  341. package/lib/module/shared/stores/navigator-dismiss-state.js.map +0 -1
  342. package/lib/module/shared/stores/utils/reset-stores-for-screen.js +0 -15
  343. package/lib/module/shared/stores/utils/reset-stores-for-screen.js.map +0 -1
  344. package/lib/module/shared/types/animation.js +0 -4
  345. package/lib/module/shared/types/animation.js.map +0 -1
  346. package/lib/module/shared/types/bounds.js +0 -4
  347. package/lib/module/shared/types/bounds.js.map +0 -1
  348. package/lib/module/shared/types/core.js +0 -4
  349. package/lib/module/shared/types/core.js.map +0 -1
  350. package/lib/module/shared/types/gesture.js.map +0 -1
  351. package/lib/module/shared/types/utils.js +0 -2
  352. package/lib/module/shared/types/utils.js.map +0 -1
  353. package/lib/module/shared/utils/bounds/_types/geometry.js.map +0 -1
  354. package/lib/module/shared/utils/bounds/_types/get-bounds.js +0 -4
  355. package/lib/module/shared/utils/bounds/_types/get-bounds.js.map +0 -1
  356. package/lib/module/shared/utils/bounds/_utils/flatten-styles.js +0 -23
  357. package/lib/module/shared/utils/bounds/_utils/flatten-styles.js.map +0 -1
  358. package/lib/module/shared/utils/bounds/_utils/geometry.js.map +0 -1
  359. package/lib/module/shared/utils/bounds/_utils/get-bounds.js +0 -44
  360. package/lib/module/shared/utils/bounds/_utils/get-bounds.js.map +0 -1
  361. package/lib/module/shared/utils/bounds/_utils/is-bounds-equal.js +0 -14
  362. package/lib/module/shared/utils/bounds/_utils/is-bounds-equal.js.map +0 -1
  363. package/lib/module/shared/utils/bounds/_utils/style-composers.js.map +0 -1
  364. package/lib/module/shared/utils/bounds/_utils/styles.js.map +0 -1
  365. package/lib/typescript/shared/hooks/bounds/use-bound-registry.d.ts +0 -17
  366. package/lib/typescript/shared/hooks/bounds/use-bound-registry.d.ts.map +0 -1
  367. package/lib/typescript/shared/hooks/use-shared-value-state.d.ts.map +0 -1
  368. package/lib/typescript/shared/providers/gestures.d.ts.map +0 -1
  369. package/lib/typescript/shared/providers/keys.d.ts.map +0 -1
  370. package/lib/typescript/shared/providers/transition-styles.d.ts +0 -11
  371. package/lib/typescript/shared/providers/transition-styles.d.ts.map +0 -1
  372. package/lib/typescript/shared/providers/utils/create-provider.d.ts +0 -32
  373. package/lib/typescript/shared/providers/utils/create-provider.d.ts.map +0 -1
  374. package/lib/typescript/shared/stores/animation-store.d.ts.map +0 -1
  375. package/lib/typescript/shared/stores/bound-store/_utils.d.ts +0 -24
  376. package/lib/typescript/shared/stores/bound-store/_utils.d.ts.map +0 -1
  377. package/lib/typescript/shared/stores/bound-store/index.d.ts +0 -22
  378. package/lib/typescript/shared/stores/bound-store/index.d.ts.map +0 -1
  379. package/lib/typescript/shared/stores/gesture-store.d.ts.map +0 -1
  380. package/lib/typescript/shared/stores/navigator-dismiss-state.d.ts +0 -7
  381. package/lib/typescript/shared/stores/navigator-dismiss-state.d.ts.map +0 -1
  382. package/lib/typescript/shared/stores/utils/reset-stores-for-screen.d.ts +0 -6
  383. package/lib/typescript/shared/stores/utils/reset-stores-for-screen.d.ts.map +0 -1
  384. package/lib/typescript/shared/types/animation.d.ts.map +0 -1
  385. package/lib/typescript/shared/types/bounds.d.ts.map +0 -1
  386. package/lib/typescript/shared/types/core.d.ts.map +0 -1
  387. package/lib/typescript/shared/types/gesture.d.ts.map +0 -1
  388. package/lib/typescript/shared/types/utils.d.ts.map +0 -1
  389. package/lib/typescript/shared/utils/bounds/_types/builder.d.ts.map +0 -1
  390. package/lib/typescript/shared/utils/bounds/_types/geometry.d.ts.map +0 -1
  391. package/lib/typescript/shared/utils/bounds/_types/get-bounds.d.ts +0 -10
  392. package/lib/typescript/shared/utils/bounds/_types/get-bounds.d.ts.map +0 -1
  393. package/lib/typescript/shared/utils/bounds/_utils/flatten-styles.d.ts +0 -2
  394. package/lib/typescript/shared/utils/bounds/_utils/flatten-styles.d.ts.map +0 -1
  395. package/lib/typescript/shared/utils/bounds/_utils/geometry.d.ts.map +0 -1
  396. package/lib/typescript/shared/utils/bounds/_utils/get-bounds.d.ts +0 -4
  397. package/lib/typescript/shared/utils/bounds/_utils/get-bounds.d.ts.map +0 -1
  398. package/lib/typescript/shared/utils/bounds/_utils/is-bounds-equal.d.ts.map +0 -1
  399. package/lib/typescript/shared/utils/bounds/_utils/style-composers.d.ts.map +0 -1
  400. package/lib/typescript/shared/utils/bounds/_utils/styles.d.ts.map +0 -1
  401. package/src/shared/hooks/bounds/use-bound-registry.tsx +0 -153
  402. package/src/shared/providers/utils/create-provider.ts +0 -64
  403. package/src/shared/stores/bound-store/_utils.ts +0 -161
  404. package/src/shared/stores/bound-store/index.ts +0 -125
  405. package/src/shared/stores/navigator-dismiss-state.ts +0 -17
  406. package/src/shared/stores/utils/reset-stores-for-screen.ts +0 -13
  407. package/src/shared/utils/bounds/_types/get-bounds.ts +0 -10
  408. package/src/shared/utils/bounds/_utils/flatten-styles.ts +0 -21
  409. package/src/shared/utils/bounds/_utils/get-bounds.ts +0 -54
  410. /package/lib/commonjs/shared/hooks/{use-shared-value-state.js → reanimated/use-shared-value-state.js} +0 -0
  411. /package/lib/commonjs/shared/utils/bounds/{_utils → helpers}/geometry.js +0 -0
  412. /package/lib/commonjs/shared/utils/bounds/{_utils → helpers}/style-composers.js +0 -0
  413. /package/lib/commonjs/shared/utils/bounds/{_utils → helpers}/styles.js +0 -0
  414. /package/lib/commonjs/shared/utils/bounds/{_types → types}/builder.js +0 -0
  415. /package/lib/commonjs/shared/utils/bounds/{_types → types}/geometry.js +0 -0
  416. /package/lib/module/shared/hooks/{use-shared-value-state.js → reanimated/use-shared-value-state.js} +0 -0
  417. /package/lib/module/shared/utils/bounds/{_utils → helpers}/geometry.js +0 -0
  418. /package/lib/module/shared/utils/bounds/{_utils → helpers}/style-composers.js +0 -0
  419. /package/lib/module/shared/utils/bounds/{_utils → helpers}/styles.js +0 -0
  420. /package/lib/module/shared/utils/bounds/{_types → types}/builder.js +0 -0
  421. /package/lib/module/shared/utils/bounds/{_types → types}/geometry.js +0 -0
  422. /package/lib/typescript/shared/hooks/{use-shared-value-state.d.ts → reanimated/use-shared-value-state.d.ts} +0 -0
  423. /package/lib/typescript/shared/utils/bounds/{_utils → helpers}/is-bounds-equal.d.ts +0 -0
  424. /package/lib/typescript/shared/utils/bounds/{_types → types}/geometry.d.ts +0 -0
  425. /package/src/shared/hooks/{use-shared-value-state.ts → reanimated/use-shared-value-state.ts} +0 -0
  426. /package/src/shared/hooks/{use-stable-callback.tsx → use-stable-callback.ts} +0 -0
  427. /package/src/shared/types/{gesture.ts → gesture.types.ts} +0 -0
  428. /package/src/shared/types/{utils.ts → utils.types.ts} +0 -0
  429. /package/src/shared/utils/bounds/{_types → types}/geometry.ts +0 -0
@@ -1,153 +0,0 @@
1
- import { createContext, Fragment, useContext, useMemo } from "react";
2
- import type { View } from "react-native";
3
- import {
4
- type AnimatedRef,
5
- measure,
6
- runOnJS,
7
- runOnUI,
8
- type StyleProps,
9
- useAnimatedReaction,
10
- useSharedValue,
11
- } from "react-native-reanimated";
12
- import type { SharedValue } from "react-native-reanimated/lib/typescript/commonTypes";
13
- import { useKeys } from "../../providers/keys";
14
- import { BoundStore } from "../../stores/bound-store";
15
- import { isBoundsEqual } from "../../utils/bounds/_utils/is-bounds-equal";
16
- import { prepareStyleForBounds } from "../../utils/bounds/_utils/styles";
17
- import useStableCallback from "../use-stable-callback";
18
- import useStableCallbackValue from "../use-stable-callback-value";
19
-
20
- interface BoundMeasurerHookProps {
21
- sharedBoundTag?: string;
22
- animatedRef: AnimatedRef<View>;
23
- style: StyleProps;
24
- onPress?: ((...args: unknown[]) => void) | undefined;
25
- }
26
-
27
- interface MaybeMeasureAndStoreParams {
28
- onPress?: ((...args: unknown[]) => void) | undefined;
29
- skipMarkingActive?: boolean;
30
- }
31
-
32
- interface MeasurementUpdateContextType {
33
- updateSignal: SharedValue<number>;
34
- }
35
-
36
- const MeasurementUpdateContext =
37
- createContext<MeasurementUpdateContextType | null>(null);
38
-
39
- export const useBoundsRegistry = ({
40
- sharedBoundTag,
41
- animatedRef,
42
- style,
43
- onPress,
44
- }: BoundMeasurerHookProps) => {
45
- const { previous, current, next } = useKeys();
46
- const preparedStyles = useMemo(() => prepareStyleForBounds(style), [style]);
47
-
48
- const ROOT_MEASUREMENT_SIGNAL = useContext(MeasurementUpdateContext);
49
- const ROOT_SIGNAL = useSharedValue(0);
50
- const IS_ROOT = !ROOT_MEASUREMENT_SIGNAL;
51
-
52
- const emitUpdate = useStableCallbackValue(() => {
53
- "worklet";
54
- if (IS_ROOT) ROOT_SIGNAL.value = ROOT_SIGNAL.value + 1;
55
- });
56
-
57
- const maybeMeasureAndStore = useStableCallbackValue(
58
- ({ onPress, skipMarkingActive }: MaybeMeasureAndStoreParams) => {
59
- "worklet";
60
- // Currently, there's no necessity to measure when the current route is blurred ( could potentially change in the future )
61
- if (!sharedBoundTag || next) return;
62
-
63
- const measured = measure(animatedRef);
64
-
65
- if (!measured) {
66
- console.warn(
67
- `[react-native-screen-transitions] measure() returned null for sharedBoundTag="${sharedBoundTag}"`,
68
- );
69
- return;
70
- }
71
-
72
- const key = current.route.key;
73
-
74
- if (isBoundsEqual({ measured, key, sharedBoundTag })) {
75
- emitUpdate();
76
- if (!skipMarkingActive) {
77
- BoundStore.setRouteActive(key, sharedBoundTag);
78
- }
79
- if (onPress) runOnJS(onPress)();
80
- return;
81
- }
82
-
83
- emitUpdate();
84
-
85
- BoundStore.setBounds(key, sharedBoundTag, measured, preparedStyles);
86
- if (!skipMarkingActive) {
87
- BoundStore.setRouteActive(key, sharedBoundTag);
88
- }
89
-
90
- if (onPress) runOnJS(onPress)();
91
- },
92
- );
93
-
94
- const hasMeasuredOnLayout = useSharedValue(false);
95
- const handleInitialLayout = useStableCallbackValue(() => {
96
- "worklet";
97
-
98
- const prevKey = previous?.route.key;
99
- if (!sharedBoundTag || hasMeasuredOnLayout.value || !prevKey) {
100
- return;
101
- }
102
-
103
- const prevBounds = BoundStore.getBounds(prevKey)?.[sharedBoundTag];
104
-
105
- if (prevBounds) {
106
- // Should skip mark active if we are in a transition
107
- maybeMeasureAndStore({ skipMarkingActive: true });
108
- // Should not measure again while in transition
109
- hasMeasuredOnLayout.value = true;
110
- }
111
- });
112
-
113
- const captureActiveOnPress = useStableCallback(() => {
114
- if (!sharedBoundTag) {
115
- if (onPress) onPress();
116
- return;
117
- }
118
-
119
- // In this case, we DO want to mark active
120
- runOnUI(maybeMeasureAndStore)({ onPress });
121
- });
122
-
123
- const MeasurementSyncProvider = useMemo(() => {
124
- if (!IS_ROOT || !sharedBoundTag) {
125
- return Fragment;
126
- }
127
-
128
- return ({ children }: { children: React.ReactNode }) => (
129
- <MeasurementUpdateContext.Provider value={{ updateSignal: ROOT_SIGNAL }}>
130
- {children}
131
- </MeasurementUpdateContext.Provider>
132
- );
133
- }, [IS_ROOT, sharedBoundTag, ROOT_SIGNAL]);
134
-
135
- useAnimatedReaction(
136
- () => ROOT_MEASUREMENT_SIGNAL?.updateSignal.value,
137
- (current) => {
138
- "worklet";
139
-
140
- // We don't want to run on the initial amount)
141
- if (current === 0 || current === undefined) return;
142
-
143
- // Children should not have the ability to mark active
144
- maybeMeasureAndStore({ skipMarkingActive: true });
145
- },
146
- );
147
-
148
- return {
149
- handleInitialLayout,
150
- captureActiveOnPress,
151
- MeasurementSyncProvider,
152
- };
153
- };
@@ -1,64 +0,0 @@
1
- /**
2
- * Credits to
3
- * https://github.com/heroui-inc/heroui-native/blob/beta/src/helpers/utils/create-context.ts
4
- */
5
- import * as React from "react";
6
-
7
- export interface CreateContextOptions {
8
- /**
9
- * If `true`, React will throw if context is `null` or `undefined`
10
- * In some cases, you might want to support nested context, so you can set it to `false`
11
- */
12
- strict?: boolean;
13
- /**
14
- * Error message to throw if the context is `undefined`
15
- */
16
- errorMessage?: string;
17
- /**
18
- * The display name of the context
19
- */
20
- name?: string;
21
- }
22
-
23
- export type CreateContextReturn<T> = [
24
- React.Provider<T>,
25
- () => T,
26
- React.Context<T>,
27
- ];
28
-
29
- /**
30
- * Creates a named context, provider, and hook.
31
- *
32
- * @param options create context options
33
- */
34
- export function createContext<ContextType>(options: CreateContextOptions = {}) {
35
- const {
36
- strict = true,
37
- errorMessage = "useContext: `context` is undefined. Seems you forgot to wrap component within the Provider",
38
- name,
39
- } = options;
40
-
41
- const Context = React.createContext<ContextType | undefined>(undefined);
42
-
43
- Context.displayName = name;
44
-
45
- function useContext() {
46
- const context = React.useContext(Context);
47
-
48
- if (!context && strict) {
49
- const error = new Error(errorMessage);
50
-
51
- error.name = "ContextError";
52
- Error.captureStackTrace?.(error, useContext);
53
- throw error;
54
- }
55
-
56
- return context;
57
- }
58
-
59
- return [
60
- Context.Provider,
61
- useContext,
62
- Context,
63
- ] as CreateContextReturn<ContextType>;
64
- }
@@ -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,125 +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 getActiveBound(
103
- current: ScreenTransitionState,
104
- next: ScreenTransitionState | undefined,
105
- previous: ScreenTransitionState | undefined,
106
- ) {
107
- "worklet";
108
- return resolveActiveBound({
109
- current,
110
- next,
111
- previous,
112
- getPairCache,
113
- setPairCache,
114
- getRouteActive,
115
- });
116
- }
117
-
118
- export const BoundStore = {
119
- setBounds,
120
- getBounds,
121
- setRouteActive,
122
- getRouteActive,
123
- clear,
124
- getActiveBound,
125
- };
@@ -1,17 +0,0 @@
1
- const map = new Map<string, boolean>();
2
-
3
- export const NavigatorDismissState = {
4
- get(id: string | undefined): boolean {
5
- if (!id) return false;
6
- return map.get(id) === true;
7
- },
8
- set(id: string, val: boolean) {
9
- map.set(id, !!val);
10
- },
11
- remove(id: string) {
12
- map.delete(id);
13
- },
14
- clear() {
15
- map.clear();
16
- },
17
- };
@@ -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
- };
File without changes