react-native-screen-transitions 3.1.0 → 3.2.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (586) hide show
  1. package/README.md +103 -8
  2. package/lib/commonjs/blank-stack/components/adjusted-screen-container.js +36 -0
  3. package/lib/commonjs/blank-stack/components/adjusted-screen-container.js.map +1 -0
  4. package/lib/commonjs/blank-stack/components/{screens.js → adjusted-screen.js} +33 -13
  5. package/lib/commonjs/blank-stack/components/adjusted-screen.js.map +1 -0
  6. package/lib/commonjs/blank-stack/components/stack-view.js +44 -61
  7. package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -1
  8. package/lib/commonjs/blank-stack/components/stack-view.native.js +81 -0
  9. package/lib/commonjs/blank-stack/components/stack-view.native.js.map +1 -0
  10. package/lib/commonjs/component-stack/components/component-screen-container.js +23 -0
  11. package/lib/commonjs/component-stack/components/component-screen-container.js.map +1 -0
  12. package/lib/commonjs/component-stack/components/component-screen.js +36 -0
  13. package/lib/commonjs/component-stack/components/component-screen.js.map +1 -0
  14. package/lib/commonjs/component-stack/components/stack-view.js +64 -0
  15. package/lib/commonjs/component-stack/components/stack-view.js.map +1 -0
  16. package/lib/commonjs/component-stack/index.js +13 -0
  17. package/lib/commonjs/component-stack/index.js.map +1 -0
  18. package/lib/commonjs/component-stack/navigators/create-component-stack-navigator.js +52 -0
  19. package/lib/commonjs/component-stack/navigators/create-component-stack-navigator.js.map +1 -0
  20. package/lib/commonjs/component-stack/types.js.map +1 -0
  21. package/lib/commonjs/{shared/components → native-stack}/controllers/native-stack-lifecycle.js +18 -9
  22. package/lib/commonjs/native-stack/controllers/native-stack-lifecycle.js.map +1 -0
  23. package/lib/commonjs/native-stack/views/NativeStackView.native.js +114 -117
  24. package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
  25. package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
  26. package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js +39 -0
  27. package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js.map +1 -0
  28. package/lib/commonjs/shared/components/overlay/index.js +13 -0
  29. package/lib/commonjs/shared/components/overlay/index.js.map +1 -0
  30. package/lib/commonjs/shared/components/overlay/variations/float-overlay.js +51 -0
  31. package/lib/commonjs/shared/components/overlay/variations/float-overlay.js.map +1 -0
  32. package/lib/commonjs/shared/components/overlay/variations/overlay-host.js +124 -0
  33. package/lib/commonjs/shared/components/overlay/variations/overlay-host.js.map +1 -0
  34. package/lib/commonjs/shared/components/overlay/variations/screen-overlay.js +47 -0
  35. package/lib/commonjs/shared/components/overlay/variations/screen-overlay.js.map +1 -0
  36. package/lib/commonjs/shared/components/root-transition-aware.js +2 -2
  37. package/lib/commonjs/shared/components/root-transition-aware.js.map +1 -1
  38. package/lib/commonjs/shared/constants.js +4 -31
  39. package/lib/commonjs/shared/constants.js.map +1 -1
  40. package/lib/commonjs/shared/{components/controllers/blank-stack-lifecycle.js → controller/managed-lifecycle.js} +25 -19
  41. package/lib/commonjs/shared/controller/managed-lifecycle.js.map +1 -0
  42. package/lib/commonjs/shared/hooks/animation/use-associated-style.js +2 -2
  43. package/lib/commonjs/shared/hooks/animation/use-associated-style.js.map +1 -1
  44. package/lib/commonjs/shared/hooks/animation/use-high-refresh-rate.js +36 -0
  45. package/lib/commonjs/shared/hooks/animation/use-high-refresh-rate.js.map +1 -0
  46. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +18 -11
  47. package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
  48. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +4 -2
  49. package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  50. package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  51. package/lib/commonjs/{blank-stack/utils/with-stack-navigation/hooks → shared/hooks/navigation}/use-closing-route-keys.js +1 -1
  52. package/lib/commonjs/shared/hooks/navigation/use-closing-route-keys.js.map +1 -0
  53. package/lib/commonjs/shared/hooks/navigation/use-previous.js.map +1 -0
  54. package/lib/commonjs/shared/hooks/navigation/use-stack.js +37 -0
  55. package/lib/commonjs/shared/hooks/navigation/use-stack.js.map +1 -0
  56. package/lib/commonjs/shared/hooks/reanimated/use-shared-value-state.js +5 -0
  57. package/lib/commonjs/shared/hooks/reanimated/use-shared-value-state.js.map +1 -1
  58. package/lib/commonjs/shared/providers/gestures.provider.js +1 -1
  59. package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
  60. package/lib/commonjs/shared/providers/layout-anchor.provider.js +73 -0
  61. package/lib/commonjs/shared/providers/layout-anchor.provider.js.map +1 -0
  62. package/lib/commonjs/shared/providers/register-bounds.provider.js +19 -8
  63. package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -1
  64. package/lib/commonjs/shared/providers/{keys.provider.js → screen/keys.provider.js} +12 -0
  65. package/lib/commonjs/shared/providers/screen/keys.provider.js.map +1 -0
  66. package/lib/commonjs/shared/providers/{screen-transition.provider.js → screen/screen-composer.js} +7 -7
  67. package/lib/commonjs/shared/providers/screen/screen-composer.js.map +1 -0
  68. package/lib/commonjs/shared/providers/screen/styles.provider.js +95 -0
  69. package/lib/commonjs/shared/providers/screen/styles.provider.js.map +1 -0
  70. package/lib/commonjs/shared/providers/stack/core.provider.js +84 -0
  71. package/lib/commonjs/shared/providers/stack/core.provider.js.map +1 -0
  72. package/lib/commonjs/shared/providers/stack/direct.provider.js +160 -0
  73. package/lib/commonjs/shared/providers/stack/direct.provider.js.map +1 -0
  74. package/lib/commonjs/{blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.js → shared/providers/stack/helpers/active-screens-limit.js} +1 -1
  75. package/lib/commonjs/shared/providers/stack/helpers/active-screens-limit.js.map +1 -0
  76. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes.js +93 -0
  77. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes.js.map +1 -0
  78. package/lib/commonjs/shared/providers/stack/managed.provider.js +157 -0
  79. package/lib/commonjs/shared/providers/stack/managed.provider.js.map +1 -0
  80. package/lib/commonjs/shared/stores/bounds.store.js.map +1 -1
  81. package/lib/commonjs/shared/types/index.js +19 -0
  82. package/lib/commonjs/shared/types/index.js.map +1 -0
  83. package/lib/commonjs/shared/types/overlay.types.js +6 -0
  84. package/lib/commonjs/shared/types/overlay.types.js.map +1 -0
  85. package/lib/commonjs/shared/types/{core.types.js → screen.types.js} +1 -1
  86. package/lib/commonjs/shared/types/screen.types.js.map +1 -0
  87. package/lib/commonjs/shared/types/stack.types.js +32 -0
  88. package/lib/commonjs/shared/types/stack.types.js.map +1 -0
  89. package/lib/commonjs/shared/utils/bounds/helpers/styles.js.map +1 -1
  90. package/lib/commonjs/shared/utils/bounds/index.js +13 -1
  91. package/lib/commonjs/shared/utils/bounds/index.js.map +1 -1
  92. package/lib/commonjs/shared/utils/create-provider.js +16 -13
  93. package/lib/commonjs/shared/utils/create-provider.js.map +1 -1
  94. package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  95. package/lib/commonjs/shared/utils/navigation/align-routes-with-latest.js +51 -0
  96. package/lib/commonjs/shared/utils/navigation/align-routes-with-latest.js.map +1 -0
  97. package/lib/commonjs/shared/utils/navigation/are-descriptors-equal.js.map +1 -0
  98. package/lib/commonjs/shared/utils/navigation/compose-descriptors.js.map +1 -0
  99. package/lib/commonjs/shared/utils/navigation/have-same-route-keys.js.map +1 -0
  100. package/lib/commonjs/shared/utils/navigation/routes-are-identical.js.map +1 -0
  101. package/lib/commonjs/shared/utils/navigation/sync-routes-with-removed.js +70 -0
  102. package/lib/commonjs/shared/utils/navigation/sync-routes-with-removed.js.map +1 -0
  103. package/lib/commonjs/shared/utils/read-shared-value.js +17 -0
  104. package/lib/commonjs/shared/utils/read-shared-value.js.map +1 -0
  105. package/lib/commonjs/shared/utils/reset-stores-for-screen.js +2 -1
  106. package/lib/commonjs/shared/utils/reset-stores-for-screen.js.map +1 -1
  107. package/lib/module/blank-stack/components/adjusted-screen-container.js +31 -0
  108. package/lib/module/blank-stack/components/adjusted-screen-container.js.map +1 -0
  109. package/lib/module/blank-stack/components/{screens.js → adjusted-screen.js} +32 -12
  110. package/lib/module/blank-stack/components/adjusted-screen.js.map +1 -0
  111. package/lib/module/blank-stack/components/stack-view.js +43 -60
  112. package/lib/module/blank-stack/components/stack-view.js.map +1 -1
  113. package/lib/module/blank-stack/components/stack-view.native.js +76 -0
  114. package/lib/module/blank-stack/components/stack-view.native.js.map +1 -0
  115. package/lib/module/component-stack/components/component-screen-container.js +18 -0
  116. package/lib/module/component-stack/components/component-screen-container.js.map +1 -0
  117. package/lib/module/component-stack/components/component-screen.js +30 -0
  118. package/lib/module/component-stack/components/component-screen.js.map +1 -0
  119. package/lib/module/component-stack/components/stack-view.js +59 -0
  120. package/lib/module/component-stack/components/stack-view.js.map +1 -0
  121. package/lib/module/component-stack/index.js +4 -0
  122. package/lib/module/component-stack/index.js.map +1 -0
  123. package/lib/module/component-stack/navigators/create-component-stack-navigator.js +48 -0
  124. package/lib/module/component-stack/navigators/create-component-stack-navigator.js.map +1 -0
  125. package/lib/module/component-stack/types.js.map +1 -0
  126. package/lib/module/{shared/components → native-stack}/controllers/native-stack-lifecycle.js +18 -9
  127. package/lib/module/native-stack/controllers/native-stack-lifecycle.js.map +1 -0
  128. package/lib/module/native-stack/views/NativeStackView.native.js +115 -118
  129. package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
  130. package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
  131. package/lib/module/shared/components/overlay/helpers/get-active-overlay.js +35 -0
  132. package/lib/module/shared/components/overlay/helpers/get-active-overlay.js.map +1 -0
  133. package/lib/module/shared/components/overlay/index.js +9 -0
  134. package/lib/module/shared/components/overlay/index.js.map +1 -0
  135. package/lib/module/shared/components/overlay/variations/float-overlay.js +48 -0
  136. package/lib/module/shared/components/overlay/variations/float-overlay.js.map +1 -0
  137. package/lib/module/shared/components/overlay/variations/overlay-host.js +120 -0
  138. package/lib/module/shared/components/overlay/variations/overlay-host.js.map +1 -0
  139. package/lib/module/shared/components/overlay/variations/screen-overlay.js +44 -0
  140. package/lib/module/shared/components/overlay/variations/screen-overlay.js.map +1 -0
  141. package/lib/module/shared/components/root-transition-aware.js +2 -2
  142. package/lib/module/shared/components/root-transition-aware.js.map +1 -1
  143. package/lib/module/shared/constants.js +2 -29
  144. package/lib/module/shared/constants.js.map +1 -1
  145. package/lib/module/shared/controller/managed-lifecycle.js +72 -0
  146. package/lib/module/shared/controller/managed-lifecycle.js.map +1 -0
  147. package/lib/module/shared/hooks/animation/use-associated-style.js +2 -2
  148. package/lib/module/shared/hooks/animation/use-associated-style.js.map +1 -1
  149. package/lib/module/shared/hooks/animation/use-high-refresh-rate.js +31 -0
  150. package/lib/module/shared/hooks/animation/use-high-refresh-rate.js.map +1 -0
  151. package/lib/module/shared/hooks/animation/use-screen-animation.js +18 -11
  152. package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
  153. package/lib/module/shared/hooks/gestures/use-build-gestures.js +5 -3
  154. package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
  155. package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
  156. package/lib/module/{blank-stack/utils/with-stack-navigation/hooks → shared/hooks/navigation}/use-closing-route-keys.js +1 -1
  157. package/lib/module/shared/hooks/navigation/use-closing-route-keys.js.map +1 -0
  158. package/lib/module/shared/hooks/navigation/use-previous.js.map +1 -0
  159. package/lib/module/shared/hooks/navigation/use-stack.js +33 -0
  160. package/lib/module/shared/hooks/navigation/use-stack.js.map +1 -0
  161. package/lib/module/shared/hooks/reanimated/use-shared-value-state.js +5 -0
  162. package/lib/module/shared/hooks/reanimated/use-shared-value-state.js.map +1 -1
  163. package/lib/module/shared/providers/gestures.provider.js +1 -1
  164. package/lib/module/shared/providers/gestures.provider.js.map +1 -1
  165. package/lib/module/shared/providers/layout-anchor.provider.js +67 -0
  166. package/lib/module/shared/providers/layout-anchor.provider.js.map +1 -0
  167. package/lib/module/shared/providers/register-bounds.provider.js +19 -8
  168. package/lib/module/shared/providers/register-bounds.provider.js.map +1 -1
  169. package/lib/module/shared/providers/{keys.provider.js → screen/keys.provider.js} +12 -0
  170. package/lib/module/shared/providers/screen/keys.provider.js.map +1 -0
  171. package/lib/module/shared/providers/{screen-transition.provider.js → screen/screen-composer.js} +6 -6
  172. package/lib/module/shared/providers/screen/screen-composer.js.map +1 -0
  173. package/lib/module/shared/providers/screen/styles.provider.js +90 -0
  174. package/lib/module/shared/providers/screen/styles.provider.js.map +1 -0
  175. package/lib/module/shared/providers/stack/core.provider.js +78 -0
  176. package/lib/module/shared/providers/stack/core.provider.js.map +1 -0
  177. package/lib/module/shared/providers/stack/direct.provider.js +155 -0
  178. package/lib/module/shared/providers/stack/direct.provider.js.map +1 -0
  179. package/lib/module/{blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.js → shared/providers/stack/helpers/active-screens-limit.js} +1 -1
  180. package/lib/module/shared/providers/stack/helpers/active-screens-limit.js.map +1 -0
  181. package/lib/module/shared/providers/stack/helpers/use-local-routes.js +87 -0
  182. package/lib/module/shared/providers/stack/helpers/use-local-routes.js.map +1 -0
  183. package/lib/module/shared/providers/stack/managed.provider.js +152 -0
  184. package/lib/module/shared/providers/stack/managed.provider.js.map +1 -0
  185. package/lib/module/shared/stores/bounds.store.js.map +1 -1
  186. package/lib/module/shared/types/index.js +4 -0
  187. package/lib/module/shared/types/index.js.map +1 -0
  188. package/lib/module/shared/types/overlay.types.js +4 -0
  189. package/lib/module/shared/types/overlay.types.js.map +1 -0
  190. package/lib/module/shared/types/screen.types.js +4 -0
  191. package/lib/module/shared/types/screen.types.js.map +1 -0
  192. package/lib/module/shared/types/stack.types.js +33 -0
  193. package/lib/module/shared/types/stack.types.js.map +1 -0
  194. package/lib/module/shared/utils/bounds/helpers/styles.js.map +1 -1
  195. package/lib/module/shared/utils/bounds/index.js +13 -1
  196. package/lib/module/shared/utils/bounds/index.js.map +1 -1
  197. package/lib/module/shared/utils/create-provider.js +16 -13
  198. package/lib/module/shared/utils/create-provider.js.map +1 -1
  199. package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
  200. package/lib/module/shared/utils/navigation/align-routes-with-latest.js +46 -0
  201. package/lib/module/shared/utils/navigation/align-routes-with-latest.js.map +1 -0
  202. package/lib/module/shared/utils/navigation/are-descriptors-equal.js.map +1 -0
  203. package/lib/module/shared/utils/navigation/compose-descriptors.js.map +1 -0
  204. package/lib/module/shared/utils/navigation/have-same-route-keys.js.map +1 -0
  205. package/lib/module/shared/utils/navigation/routes-are-identical.js.map +1 -0
  206. package/lib/module/shared/utils/navigation/sync-routes-with-removed.js +65 -0
  207. package/lib/module/shared/utils/navigation/sync-routes-with-removed.js.map +1 -0
  208. package/lib/module/shared/utils/read-shared-value.js +14 -0
  209. package/lib/module/shared/utils/read-shared-value.js.map +1 -0
  210. package/lib/module/shared/utils/reset-stores-for-screen.js +2 -2
  211. package/lib/module/shared/utils/reset-stores-for-screen.js.map +1 -1
  212. package/lib/typescript/blank-stack/components/adjusted-screen-container.d.ts +6 -0
  213. package/lib/typescript/blank-stack/components/adjusted-screen-container.d.ts.map +1 -0
  214. package/lib/typescript/blank-stack/components/{screens.d.ts → adjusted-screen.d.ts} +2 -2
  215. package/lib/typescript/blank-stack/components/adjusted-screen.d.ts.map +1 -0
  216. package/lib/typescript/blank-stack/components/stack-view.d.ts +2 -1
  217. package/lib/typescript/blank-stack/components/stack-view.d.ts.map +1 -1
  218. package/lib/typescript/blank-stack/components/stack-view.native.d.ts +4 -0
  219. package/lib/typescript/blank-stack/components/stack-view.native.d.ts.map +1 -0
  220. package/lib/typescript/blank-stack/types.d.ts +10 -49
  221. package/lib/typescript/blank-stack/types.d.ts.map +1 -1
  222. package/lib/typescript/component-stack/components/component-screen-container.d.ts +6 -0
  223. package/lib/typescript/component-stack/components/component-screen-container.d.ts.map +1 -0
  224. package/lib/typescript/component-stack/components/component-screen.d.ts +8 -0
  225. package/lib/typescript/component-stack/components/component-screen.d.ts.map +1 -0
  226. package/lib/typescript/component-stack/components/stack-view.d.ts +4 -0
  227. package/lib/typescript/component-stack/components/stack-view.d.ts.map +1 -0
  228. package/lib/typescript/component-stack/index.d.ts +3 -0
  229. package/lib/typescript/component-stack/index.d.ts.map +1 -0
  230. package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts +16 -0
  231. package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts.map +1 -0
  232. package/lib/typescript/component-stack/types.d.ts +39 -0
  233. package/lib/typescript/component-stack/types.d.ts.map +1 -0
  234. package/lib/typescript/native-stack/controllers/native-stack-lifecycle.d.ts.map +1 -0
  235. package/lib/typescript/native-stack/index.d.ts +1 -1
  236. package/lib/typescript/native-stack/index.d.ts.map +1 -1
  237. package/lib/typescript/native-stack/types.d.ts +9 -6
  238. package/lib/typescript/native-stack/types.d.ts.map +1 -1
  239. package/lib/typescript/native-stack/views/NativeStackView.native.d.ts +2 -10
  240. package/lib/typescript/native-stack/views/NativeStackView.native.d.ts.map +1 -1
  241. package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
  242. package/lib/typescript/shared/components/overlay/helpers/get-active-overlay.d.ts +11 -0
  243. package/lib/typescript/shared/components/overlay/helpers/get-active-overlay.d.ts.map +1 -0
  244. package/lib/typescript/shared/components/overlay/index.d.ts +7 -0
  245. package/lib/typescript/shared/components/overlay/index.d.ts.map +1 -0
  246. package/lib/typescript/shared/components/overlay/variations/float-overlay.d.ts +6 -0
  247. package/lib/typescript/shared/components/overlay/variations/float-overlay.d.ts.map +1 -0
  248. package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts +12 -0
  249. package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts.map +1 -0
  250. package/lib/typescript/shared/components/overlay/variations/screen-overlay.d.ts +6 -0
  251. package/lib/typescript/shared/components/overlay/variations/screen-overlay.d.ts.map +1 -0
  252. package/lib/typescript/shared/configs/index.d.ts.map +1 -1
  253. package/lib/typescript/shared/configs/presets.d.ts +1 -1
  254. package/lib/typescript/shared/configs/presets.d.ts.map +1 -1
  255. package/lib/typescript/shared/constants.d.ts +2 -16
  256. package/lib/typescript/shared/constants.d.ts.map +1 -1
  257. package/lib/typescript/shared/controller/managed-lifecycle.d.ts +9 -0
  258. package/lib/typescript/shared/controller/managed-lifecycle.d.ts.map +1 -0
  259. package/lib/typescript/shared/hooks/animation/use-high-refresh-rate.d.ts +13 -0
  260. package/lib/typescript/shared/hooks/animation/use-high-refresh-rate.d.ts.map +1 -0
  261. package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts +2 -1
  262. package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts.map +1 -1
  263. package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
  264. package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts.map +1 -1
  265. package/lib/typescript/shared/hooks/navigation/use-closing-route-keys.d.ts.map +1 -0
  266. package/lib/typescript/shared/hooks/navigation/use-previous.d.ts.map +1 -0
  267. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts +66 -0
  268. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts.map +1 -0
  269. package/lib/typescript/shared/hooks/reanimated/use-shared-value-state.d.ts.map +1 -1
  270. package/lib/typescript/shared/index.d.ts +41 -43
  271. package/lib/typescript/shared/index.d.ts.map +1 -1
  272. package/lib/typescript/shared/providers/gestures.provider.d.ts +4 -2
  273. package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
  274. package/lib/typescript/shared/providers/layout-anchor.provider.d.ts +34 -0
  275. package/lib/typescript/shared/providers/layout-anchor.provider.d.ts.map +1 -0
  276. package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -1
  277. package/lib/typescript/shared/providers/screen/keys.provider.d.ts +29 -0
  278. package/lib/typescript/shared/providers/screen/keys.provider.d.ts.map +1 -0
  279. package/lib/typescript/shared/providers/screen/screen-composer.d.ts +13 -0
  280. package/lib/typescript/shared/providers/screen/screen-composer.d.ts.map +1 -0
  281. package/lib/typescript/shared/providers/screen/styles.provider.d.ts +13 -0
  282. package/lib/typescript/shared/providers/screen/styles.provider.d.ts.map +1 -0
  283. package/lib/typescript/shared/providers/stack/core.provider.d.ts +22 -0
  284. package/lib/typescript/shared/providers/stack/core.provider.d.ts.map +1 -0
  285. package/lib/typescript/shared/providers/stack/direct.provider.d.ts +34 -0
  286. package/lib/typescript/shared/providers/stack/direct.provider.d.ts.map +1 -0
  287. package/lib/typescript/shared/providers/stack/helpers/active-screens-limit.d.ts +9 -0
  288. package/lib/typescript/shared/providers/stack/helpers/active-screens-limit.d.ts.map +1 -0
  289. package/lib/typescript/shared/providers/stack/helpers/use-local-routes.d.ts +19 -0
  290. package/lib/typescript/shared/providers/stack/helpers/use-local-routes.d.ts.map +1 -0
  291. package/lib/typescript/shared/providers/stack/managed.provider.d.ts +39 -0
  292. package/lib/typescript/shared/providers/stack/managed.provider.d.ts.map +1 -0
  293. package/lib/typescript/shared/stores/animation.store.d.ts +1 -1
  294. package/lib/typescript/shared/stores/animation.store.d.ts.map +1 -1
  295. package/lib/typescript/shared/stores/bounds.store.d.ts.map +1 -1
  296. package/lib/typescript/shared/stores/gesture.store.d.ts +2 -2
  297. package/lib/typescript/shared/stores/gesture.store.d.ts.map +1 -1
  298. package/lib/typescript/shared/types/animation.types.d.ts +3 -3
  299. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
  300. package/lib/typescript/shared/types/bounds.types.d.ts +1 -0
  301. package/lib/typescript/shared/types/bounds.types.d.ts.map +1 -1
  302. package/lib/typescript/shared/types/gesture.types.d.ts +0 -1
  303. package/lib/typescript/shared/types/gesture.types.d.ts.map +1 -1
  304. package/lib/typescript/shared/types/index.d.ts +8 -0
  305. package/lib/typescript/shared/types/index.d.ts.map +1 -0
  306. package/lib/typescript/shared/types/overlay.types.d.ts +39 -0
  307. package/lib/typescript/shared/types/overlay.types.d.ts.map +1 -0
  308. package/lib/typescript/shared/types/{core.types.d.ts → screen.types.d.ts} +31 -6
  309. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -0
  310. package/lib/typescript/shared/types/stack.types.d.ts +55 -0
  311. package/lib/typescript/shared/types/stack.types.d.ts.map +1 -0
  312. package/lib/typescript/shared/utils/bounds/helpers/geometry.d.ts +1 -1
  313. package/lib/typescript/shared/utils/bounds/helpers/geometry.d.ts.map +1 -1
  314. package/lib/typescript/shared/utils/bounds/helpers/style-composers.d.ts +2 -1
  315. package/lib/typescript/shared/utils/bounds/helpers/style-composers.d.ts.map +1 -1
  316. package/lib/typescript/shared/utils/bounds/helpers/styles.d.ts +1 -2
  317. package/lib/typescript/shared/utils/bounds/helpers/styles.d.ts.map +1 -1
  318. package/lib/typescript/shared/utils/bounds/index.d.ts +1 -9
  319. package/lib/typescript/shared/utils/bounds/index.d.ts.map +1 -1
  320. package/lib/typescript/shared/utils/bounds/types/builder.d.ts +9 -8
  321. package/lib/typescript/shared/utils/bounds/types/builder.d.ts.map +1 -1
  322. package/lib/typescript/shared/utils/bounds/types/geometry.d.ts +2 -1
  323. package/lib/typescript/shared/utils/bounds/types/geometry.d.ts.map +1 -1
  324. package/lib/typescript/shared/utils/create-provider.d.ts.map +1 -1
  325. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +1 -1
  326. package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
  327. package/lib/typescript/shared/utils/navigation/align-routes-with-latest.d.ts +13 -0
  328. package/lib/typescript/shared/utils/navigation/align-routes-with-latest.d.ts.map +1 -0
  329. package/lib/typescript/shared/utils/navigation/are-descriptors-equal.d.ts +2 -0
  330. package/lib/typescript/shared/utils/navigation/are-descriptors-equal.d.ts.map +1 -0
  331. package/lib/typescript/shared/utils/navigation/compose-descriptors.d.ts +6 -0
  332. package/lib/typescript/shared/utils/navigation/compose-descriptors.d.ts.map +1 -0
  333. package/lib/typescript/shared/utils/navigation/have-same-route-keys.d.ts +6 -0
  334. package/lib/typescript/shared/utils/navigation/have-same-route-keys.d.ts.map +1 -0
  335. package/lib/typescript/shared/utils/navigation/routes-are-identical.d.ts +6 -0
  336. package/lib/typescript/shared/utils/navigation/routes-are-identical.d.ts.map +1 -0
  337. package/lib/typescript/shared/utils/navigation/sync-routes-with-removed.d.ts +21 -0
  338. package/lib/typescript/shared/utils/navigation/sync-routes-with-removed.d.ts.map +1 -0
  339. package/lib/typescript/shared/utils/read-shared-value.d.ts +7 -0
  340. package/lib/typescript/shared/utils/read-shared-value.d.ts.map +1 -0
  341. package/lib/typescript/shared/utils/reset-stores-for-screen.d.ts +4 -3
  342. package/lib/typescript/shared/utils/reset-stores-for-screen.d.ts.map +1 -1
  343. package/package.json +7 -2
  344. package/src/blank-stack/components/adjusted-screen-container.tsx +25 -0
  345. package/src/blank-stack/components/{screens.tsx → adjusted-screen.tsx} +35 -14
  346. package/src/blank-stack/components/stack-view.native.tsx +94 -0
  347. package/src/blank-stack/components/stack-view.tsx +60 -74
  348. package/src/blank-stack/types.ts +12 -63
  349. package/src/component-stack/components/component-screen-container.tsx +15 -0
  350. package/src/component-stack/components/component-screen.tsx +40 -0
  351. package/src/component-stack/components/stack-view.tsx +74 -0
  352. package/src/component-stack/index.ts +10 -0
  353. package/src/component-stack/navigators/create-component-stack-navigator.tsx +88 -0
  354. package/src/component-stack/types.ts +101 -0
  355. package/src/{shared/components → native-stack}/controllers/native-stack-lifecycle.tsx +18 -11
  356. package/src/native-stack/index.ts +1 -0
  357. package/src/native-stack/types.ts +11 -7
  358. package/src/native-stack/views/NativeStackView.native.tsx +138 -167
  359. package/src/shared/__tests__/sync-routes-with-removed.test.ts +137 -0
  360. package/src/shared/components/create-transition-aware-component.tsx +5 -6
  361. package/src/shared/components/overlay/helpers/get-active-overlay.ts +38 -0
  362. package/src/shared/components/overlay/index.ts +7 -0
  363. package/src/shared/components/overlay/variations/float-overlay.tsx +44 -0
  364. package/src/shared/components/overlay/variations/overlay-host.tsx +148 -0
  365. package/src/shared/components/overlay/variations/screen-overlay.tsx +51 -0
  366. package/src/shared/components/root-transition-aware.tsx +2 -2
  367. package/src/shared/configs/presets.ts +1 -1
  368. package/src/shared/constants.ts +3 -32
  369. package/src/shared/controller/managed-lifecycle.tsx +73 -0
  370. package/src/shared/hooks/animation/use-associated-style.tsx +2 -2
  371. package/src/shared/hooks/animation/use-high-refresh-rate.tsx +34 -0
  372. package/src/shared/hooks/animation/use-screen-animation.tsx +24 -18
  373. package/src/shared/hooks/gestures/use-build-gestures.tsx +10 -3
  374. package/src/shared/hooks/gestures/use-scroll-registry.tsx +3 -4
  375. package/src/{blank-stack/utils/with-stack-navigation/hooks → shared/hooks/navigation}/use-closing-route-keys.tsx +1 -1
  376. package/src/shared/hooks/navigation/use-stack.tsx +89 -0
  377. package/src/shared/hooks/reanimated/use-shared-value-state.ts +5 -0
  378. package/src/shared/index.ts +8 -3
  379. package/src/shared/providers/gestures.provider.tsx +6 -2
  380. package/src/shared/providers/layout-anchor.provider.tsx +81 -0
  381. package/src/shared/providers/register-bounds.provider.tsx +23 -9
  382. package/src/shared/providers/{keys.provider.tsx → screen/keys.provider.tsx} +25 -10
  383. package/src/shared/providers/screen/screen-composer.tsx +38 -0
  384. package/src/shared/providers/screen/styles.provider.tsx +120 -0
  385. package/src/shared/providers/stack/core.provider.tsx +87 -0
  386. package/src/shared/providers/stack/direct.provider.tsx +231 -0
  387. package/src/{blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.ts → shared/providers/stack/helpers/active-screens-limit.ts} +10 -4
  388. package/src/shared/providers/stack/helpers/use-local-routes.tsx +133 -0
  389. package/src/shared/providers/stack/managed.provider.tsx +229 -0
  390. package/src/shared/stores/animation.store.ts +1 -1
  391. package/src/shared/stores/bounds.store.ts +4 -5
  392. package/src/shared/stores/gesture.store.ts +2 -2
  393. package/src/shared/types/animation.types.ts +3 -3
  394. package/src/shared/types/bounds.types.ts +5 -0
  395. package/src/shared/types/gesture.types.ts +0 -2
  396. package/src/shared/types/index.ts +46 -0
  397. package/src/shared/types/overlay.types.ts +49 -0
  398. package/src/shared/types/{core.types.ts → screen.types.ts} +34 -7
  399. package/src/shared/types/stack.types.ts +63 -0
  400. package/src/shared/utils/bounds/helpers/geometry.ts +1 -1
  401. package/src/shared/utils/bounds/helpers/style-composers.ts +1 -1
  402. package/src/shared/utils/bounds/helpers/styles.ts +1 -2
  403. package/src/shared/utils/bounds/index.ts +19 -10
  404. package/src/shared/utils/bounds/types/builder.ts +8 -8
  405. package/src/shared/utils/bounds/types/geometry.ts +1 -1
  406. package/src/shared/utils/create-provider.tsx +14 -16
  407. package/src/shared/utils/gesture/check-gesture-activation.ts +1 -1
  408. package/src/shared/utils/navigation/align-routes-with-latest.ts +68 -0
  409. package/src/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/are-descriptors-equal.ts +5 -5
  410. package/src/shared/utils/navigation/compose-descriptors.ts +21 -0
  411. package/src/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/have-same-route-keys.ts +6 -4
  412. package/src/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/routes-are-identical.ts +6 -4
  413. package/src/shared/utils/navigation/sync-routes-with-removed.ts +102 -0
  414. package/src/shared/utils/read-shared-value.ts +15 -0
  415. package/src/shared/utils/reset-stores-for-screen.ts +4 -3
  416. package/lib/commonjs/blank-stack/components/overlay.js +0 -156
  417. package/lib/commonjs/blank-stack/components/overlay.js.map +0 -1
  418. package/lib/commonjs/blank-stack/components/screens.js.map +0 -1
  419. package/lib/commonjs/blank-stack/hooks/use-overlay-animation.js +0 -72
  420. package/lib/commonjs/blank-stack/hooks/use-overlay-animation.js.map +0 -1
  421. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/are-descriptors-equal.js.map +0 -1
  422. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.js.map +0 -1
  423. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.js.map +0 -1
  424. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/have-same-route-keys.js.map +0 -1
  425. package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/routes-are-identical.js.map +0 -1
  426. package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.js.map +0 -1
  427. package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-previous.js.map +0 -1
  428. package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.js +0 -196
  429. package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.js.map +0 -1
  430. package/lib/commonjs/blank-stack/utils/with-stack-navigation/index.js +0 -61
  431. package/lib/commonjs/blank-stack/utils/with-stack-navigation/index.js.map +0 -1
  432. package/lib/commonjs/blank-stack/utils/with-stack-navigation/types.js.map +0 -1
  433. package/lib/commonjs/native-stack/views/FooterComponent.js +0 -17
  434. package/lib/commonjs/native-stack/views/FooterComponent.js.map +0 -1
  435. package/lib/commonjs/shared/components/controllers/blank-stack-lifecycle.js.map +0 -1
  436. package/lib/commonjs/shared/components/controllers/native-stack-lifecycle.js.map +0 -1
  437. package/lib/commonjs/shared/providers/flags.provider.js +0 -25
  438. package/lib/commonjs/shared/providers/flags.provider.js.map +0 -1
  439. package/lib/commonjs/shared/providers/keys.provider.js.map +0 -1
  440. package/lib/commonjs/shared/providers/routes.provider.js +0 -48
  441. package/lib/commonjs/shared/providers/routes.provider.js.map +0 -1
  442. package/lib/commonjs/shared/providers/screen-transition.provider.js.map +0 -1
  443. package/lib/commonjs/shared/providers/transition-styles.provider.js +0 -62
  444. package/lib/commonjs/shared/providers/transition-styles.provider.js.map +0 -1
  445. package/lib/commonjs/shared/types/core.types.js.map +0 -1
  446. package/lib/commonjs/shared/types/utils.types.js +0 -2
  447. package/lib/commonjs/shared/types/utils.types.js.map +0 -1
  448. package/lib/commonjs/shared/utils/animation/compute-stack-progress.js +0 -20
  449. package/lib/commonjs/shared/utils/animation/compute-stack-progress.js.map +0 -1
  450. package/lib/commonjs/shared/utils/bounds/constants.js +0 -42
  451. package/lib/commonjs/shared/utils/bounds/constants.js.map +0 -1
  452. package/lib/commonjs/shared/utils/bounds/helpers/is-bounds-equal.js +0 -19
  453. package/lib/commonjs/shared/utils/bounds/helpers/is-bounds-equal.js.map +0 -1
  454. package/lib/commonjs/shared/utils/gesture/apply-offset-rules.js +0 -224
  455. package/lib/commonjs/shared/utils/gesture/apply-offset-rules.js.map +0 -1
  456. package/lib/commonjs/shared/utils/reanimated/version.js +0 -12
  457. package/lib/commonjs/shared/utils/reanimated/version.js.map +0 -1
  458. package/lib/module/blank-stack/components/overlay.js +0 -152
  459. package/lib/module/blank-stack/components/overlay.js.map +0 -1
  460. package/lib/module/blank-stack/components/screens.js.map +0 -1
  461. package/lib/module/blank-stack/hooks/use-overlay-animation.js +0 -68
  462. package/lib/module/blank-stack/hooks/use-overlay-animation.js.map +0 -1
  463. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/are-descriptors-equal.js.map +0 -1
  464. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.js.map +0 -1
  465. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.js.map +0 -1
  466. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/have-same-route-keys.js.map +0 -1
  467. package/lib/module/blank-stack/utils/with-stack-navigation/helpers/routes-are-identical.js.map +0 -1
  468. package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.js.map +0 -1
  469. package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-previous.js.map +0 -1
  470. package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.js +0 -190
  471. package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.js.map +0 -1
  472. package/lib/module/blank-stack/utils/with-stack-navigation/index.js +0 -55
  473. package/lib/module/blank-stack/utils/with-stack-navigation/index.js.map +0 -1
  474. package/lib/module/blank-stack/utils/with-stack-navigation/types.js.map +0 -1
  475. package/lib/module/native-stack/views/FooterComponent.js +0 -13
  476. package/lib/module/native-stack/views/FooterComponent.js.map +0 -1
  477. package/lib/module/shared/components/controllers/blank-stack-lifecycle.js +0 -66
  478. package/lib/module/shared/components/controllers/blank-stack-lifecycle.js.map +0 -1
  479. package/lib/module/shared/components/controllers/native-stack-lifecycle.js.map +0 -1
  480. package/lib/module/shared/providers/flags.provider.js +0 -19
  481. package/lib/module/shared/providers/flags.provider.js.map +0 -1
  482. package/lib/module/shared/providers/keys.provider.js.map +0 -1
  483. package/lib/module/shared/providers/routes.provider.js +0 -42
  484. package/lib/module/shared/providers/routes.provider.js.map +0 -1
  485. package/lib/module/shared/providers/screen-transition.provider.js.map +0 -1
  486. package/lib/module/shared/providers/transition-styles.provider.js +0 -56
  487. package/lib/module/shared/providers/transition-styles.provider.js.map +0 -1
  488. package/lib/module/shared/types/core.types.js +0 -4
  489. package/lib/module/shared/types/core.types.js.map +0 -1
  490. package/lib/module/shared/types/utils.types.js +0 -2
  491. package/lib/module/shared/types/utils.types.js.map +0 -1
  492. package/lib/module/shared/utils/animation/compute-stack-progress.js +0 -15
  493. package/lib/module/shared/utils/animation/compute-stack-progress.js.map +0 -1
  494. package/lib/module/shared/utils/bounds/constants.js +0 -37
  495. package/lib/module/shared/utils/bounds/constants.js.map +0 -1
  496. package/lib/module/shared/utils/bounds/helpers/is-bounds-equal.js +0 -14
  497. package/lib/module/shared/utils/bounds/helpers/is-bounds-equal.js.map +0 -1
  498. package/lib/module/shared/utils/gesture/apply-offset-rules.js +0 -219
  499. package/lib/module/shared/utils/gesture/apply-offset-rules.js.map +0 -1
  500. package/lib/module/shared/utils/reanimated/version.js +0 -7
  501. package/lib/module/shared/utils/reanimated/version.js.map +0 -1
  502. package/lib/typescript/blank-stack/components/overlay.d.ts +0 -5
  503. package/lib/typescript/blank-stack/components/overlay.d.ts.map +0 -1
  504. package/lib/typescript/blank-stack/components/screens.d.ts.map +0 -1
  505. package/lib/typescript/blank-stack/hooks/use-overlay-animation.d.ts +0 -12
  506. package/lib/typescript/blank-stack/hooks/use-overlay-animation.d.ts.map +0 -1
  507. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/are-descriptors-equal.d.ts +0 -3
  508. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/are-descriptors-equal.d.ts.map +0 -1
  509. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.d.ts +0 -4
  510. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/calculate-active-screens-limit.d.ts.map +0 -1
  511. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.d.ts +0 -4
  512. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.d.ts.map +0 -1
  513. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/have-same-route-keys.d.ts +0 -3
  514. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/have-same-route-keys.d.ts.map +0 -1
  515. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/routes-are-identical.d.ts +0 -3
  516. package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/routes-are-identical.d.ts.map +0 -1
  517. package/lib/typescript/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.d.ts.map +0 -1
  518. package/lib/typescript/blank-stack/utils/with-stack-navigation/hooks/use-previous.d.ts.map +0 -1
  519. package/lib/typescript/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.d.ts +0 -20
  520. package/lib/typescript/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.d.ts.map +0 -1
  521. package/lib/typescript/blank-stack/utils/with-stack-navigation/index.d.ts +0 -4
  522. package/lib/typescript/blank-stack/utils/with-stack-navigation/index.d.ts.map +0 -1
  523. package/lib/typescript/blank-stack/utils/with-stack-navigation/types.d.ts +0 -22
  524. package/lib/typescript/blank-stack/utils/with-stack-navigation/types.d.ts.map +0 -1
  525. package/lib/typescript/native-stack/views/FooterComponent.d.ts +0 -7
  526. package/lib/typescript/native-stack/views/FooterComponent.d.ts.map +0 -1
  527. package/lib/typescript/shared/components/controllers/blank-stack-lifecycle.d.ts +0 -8
  528. package/lib/typescript/shared/components/controllers/blank-stack-lifecycle.d.ts.map +0 -1
  529. package/lib/typescript/shared/components/controllers/native-stack-lifecycle.d.ts.map +0 -1
  530. package/lib/typescript/shared/providers/flags.provider.d.ts +0 -10
  531. package/lib/typescript/shared/providers/flags.provider.d.ts.map +0 -1
  532. package/lib/typescript/shared/providers/keys.provider.d.ts +0 -18
  533. package/lib/typescript/shared/providers/keys.provider.d.ts.map +0 -1
  534. package/lib/typescript/shared/providers/routes.provider.d.ts +0 -19
  535. package/lib/typescript/shared/providers/routes.provider.d.ts.map +0 -1
  536. package/lib/typescript/shared/providers/screen-transition.provider.d.ts +0 -14
  537. package/lib/typescript/shared/providers/screen-transition.provider.d.ts.map +0 -1
  538. package/lib/typescript/shared/providers/transition-styles.provider.d.ts +0 -14
  539. package/lib/typescript/shared/providers/transition-styles.provider.d.ts.map +0 -1
  540. package/lib/typescript/shared/types/core.types.d.ts.map +0 -1
  541. package/lib/typescript/shared/types/utils.types.d.ts +0 -5
  542. package/lib/typescript/shared/types/utils.types.d.ts.map +0 -1
  543. package/lib/typescript/shared/utils/animation/compute-stack-progress.d.ts +0 -3
  544. package/lib/typescript/shared/utils/animation/compute-stack-progress.d.ts.map +0 -1
  545. package/lib/typescript/shared/utils/bounds/constants.d.ts +0 -7
  546. package/lib/typescript/shared/utils/bounds/constants.d.ts.map +0 -1
  547. package/lib/typescript/shared/utils/bounds/helpers/is-bounds-equal.d.ts +0 -7
  548. package/lib/typescript/shared/utils/bounds/helpers/is-bounds-equal.d.ts.map +0 -1
  549. package/lib/typescript/shared/utils/gesture/apply-offset-rules.d.ts +0 -38
  550. package/lib/typescript/shared/utils/gesture/apply-offset-rules.d.ts.map +0 -1
  551. package/lib/typescript/shared/utils/reanimated/version.d.ts +0 -2
  552. package/lib/typescript/shared/utils/reanimated/version.d.ts.map +0 -1
  553. package/src/blank-stack/components/overlay.tsx +0 -169
  554. package/src/blank-stack/hooks/use-overlay-animation.tsx +0 -86
  555. package/src/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.ts +0 -17
  556. package/src/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.tsx +0 -267
  557. package/src/blank-stack/utils/with-stack-navigation/index.tsx +0 -74
  558. package/src/blank-stack/utils/with-stack-navigation/types.ts +0 -35
  559. package/src/native-stack/views/FooterComponent.tsx +0 -10
  560. package/src/shared/components/controllers/blank-stack-lifecycle.tsx +0 -70
  561. package/src/shared/providers/flags.provider.tsx +0 -21
  562. package/src/shared/providers/routes.provider.tsx +0 -54
  563. package/src/shared/providers/screen-transition.provider.tsx +0 -41
  564. package/src/shared/providers/transition-styles.provider.tsx +0 -74
  565. package/src/shared/types/utils.types.ts +0 -4
  566. package/src/shared/utils/animation/compute-stack-progress.ts +0 -16
  567. package/src/shared/utils/bounds/constants.ts +0 -40
  568. package/src/shared/utils/bounds/helpers/is-bounds-equal.ts +0 -24
  569. package/src/shared/utils/gesture/apply-offset-rules.ts +0 -312
  570. package/src/shared/utils/reanimated/version.ts +0 -5
  571. /package/lib/commonjs/{blank-stack/utils/with-stack-navigation → component-stack}/types.js +0 -0
  572. /package/lib/commonjs/{blank-stack/utils/with-stack-navigation/hooks → shared/hooks/navigation}/use-previous.js +0 -0
  573. /package/lib/commonjs/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/are-descriptors-equal.js +0 -0
  574. /package/lib/commonjs/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/compose-descriptors.js +0 -0
  575. /package/lib/commonjs/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/have-same-route-keys.js +0 -0
  576. /package/lib/commonjs/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/routes-are-identical.js +0 -0
  577. /package/lib/module/{blank-stack/utils/with-stack-navigation → component-stack}/types.js +0 -0
  578. /package/lib/module/{blank-stack/utils/with-stack-navigation/hooks → shared/hooks/navigation}/use-previous.js +0 -0
  579. /package/lib/module/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/are-descriptors-equal.js +0 -0
  580. /package/lib/module/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/compose-descriptors.js +0 -0
  581. /package/lib/module/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/have-same-route-keys.js +0 -0
  582. /package/lib/module/{blank-stack/utils/with-stack-navigation/helpers → shared/utils/navigation}/routes-are-identical.js +0 -0
  583. /package/lib/typescript/{shared/components → native-stack}/controllers/native-stack-lifecycle.d.ts +0 -0
  584. /package/lib/typescript/{blank-stack/utils/with-stack-navigation/hooks → shared/hooks/navigation}/use-closing-route-keys.d.ts +0 -0
  585. /package/lib/typescript/{blank-stack/utils/with-stack-navigation/hooks → shared/hooks/navigation}/use-previous.d.ts +0 -0
  586. /package/src/{blank-stack/utils/with-stack-navigation/hooks → shared/hooks/navigation}/use-previous.tsx +0 -0
@@ -0,0 +1,89 @@
1
+ import type { Route } from "@react-navigation/native";
2
+ import { createContext, useContext } from "react";
3
+ import type { DerivedValue } from "react-native-reanimated";
4
+ import type { StackCoreContextValue } from "../../providers/stack/core.provider";
5
+ import type { OverlayMode, OverlayProps } from "../../types/overlay.types";
6
+ import type {
7
+ BaseStackDescriptor,
8
+ BaseStackNavigation,
9
+ BaseStackRoute,
10
+ BaseStackScene,
11
+ } from "../../types/stack.types";
12
+
13
+ /**
14
+ * Stack descriptor with overlay options.
15
+ * Extends BaseStackDescriptor with overlay-specific options.
16
+ */
17
+ export interface StackDescriptor<
18
+ TRoute extends BaseStackRoute = Route<string>,
19
+ TNavigation extends BaseStackNavigation = BaseStackNavigation,
20
+ > extends BaseStackDescriptor<TRoute, TNavigation> {
21
+ options: BaseStackDescriptor["options"] & {
22
+ overlay?: (props: OverlayProps) => React.ReactNode;
23
+ overlayMode?: OverlayMode;
24
+ overlayShown?: boolean;
25
+ meta?: Record<string, unknown>;
26
+ enableTransitions?: boolean;
27
+ };
28
+ }
29
+
30
+ /**
31
+ * Scene type for stack context (route + descriptor pair).
32
+ */
33
+ export type StackScene<TDescriptor extends StackDescriptor = StackDescriptor> =
34
+ BaseStackScene<TDescriptor>;
35
+
36
+ /**
37
+ * Common stack context value that both managed and direct stack providers populate.
38
+ * Used by overlays and shared components that need stack progress info.
39
+ */
40
+ export interface StackContextValue extends StackCoreContextValue {
41
+ /**
42
+ * Route keys for all routes in the stack.
43
+ */
44
+ routeKeys: string[];
45
+ /**
46
+ * All routes in the stack.
47
+ */
48
+ routes: Route<string>[];
49
+ /**
50
+ * Descriptor map for all routes.
51
+ */
52
+ descriptors: Record<string, StackDescriptor>;
53
+ /**
54
+ * Pre-computed scenes (route + descriptor pairs).
55
+ */
56
+ scenes: StackScene[];
57
+ /**
58
+ * The current focused index from navigation state.
59
+ */
60
+ focusedIndex: number;
61
+ /**
62
+ * Aggregated stack progress across all routes.
63
+ * Sum of all individual screen progress values.
64
+ * When 4 screens are fully visible, stackProgress = 4.
65
+ */
66
+ stackProgress: DerivedValue<number>;
67
+ /**
68
+ * Focused index that accounts for closing screens.
69
+ * Returns currentIndex - 1 if any screen is closing, otherwise currentIndex.
70
+ */
71
+ optimisticFocusedIndex: DerivedValue<number>;
72
+ }
73
+
74
+ export const StackContext = createContext<StackContextValue | null>(null);
75
+ StackContext.displayName = "Stack";
76
+
77
+ /**
78
+ * Hook to access common stack context values.
79
+ * Works in both blank-stack and native-stack navigators.
80
+ */
81
+ export function useStack<T extends StackContextValue = StackContextValue>(): T {
82
+ const context = useContext(StackContext);
83
+
84
+ if (context === null) {
85
+ throw new Error("useStack must be used within a Stack provider");
86
+ }
87
+
88
+ return context as T;
89
+ }
@@ -5,6 +5,7 @@ import {
5
5
  type SharedValue,
6
6
  useAnimatedReaction,
7
7
  } from "react-native-reanimated";
8
+ import { IS_WEB } from "../../constants";
8
9
 
9
10
  /**
10
11
  * Derives React state from a Reanimated SharedValue.
@@ -12,6 +13,10 @@ import {
12
13
  */
13
14
  export function useSharedValueState<T>(sharedValue: SharedValue<T>): T {
14
15
  const [state, setState] = useState<T>(() => {
16
+ if (IS_WEB) {
17
+ // Web fallback - executeOnUIRuntimeSync not available
18
+ return sharedValue.value;
19
+ }
15
20
  const readOnUI = executeOnUIRuntimeSync((sv: SharedValue<T>) => {
16
21
  "worklet";
17
22
  return sv.value;
@@ -23,9 +23,14 @@ export { useScreenGesture } from "./hooks/gestures/use-screen-gesture";
23
23
 
24
24
  export type {
25
25
  AnimationConfig,
26
+ BoundEntry,
27
+ BoundsLink,
26
28
  OverlayInterpolationProps,
29
+ OverlayMode,
30
+ OverlayProps,
27
31
  ScreenInterpolationProps,
28
32
  ScreenStyleInterpolator,
29
- } from "./types/animation.types";
30
- export type { BoundEntry, BoundsLink } from "./types/bounds.types";
31
- export type { ScreenTransitionConfig } from "./types/core.types";
33
+ ScreenTransitionConfig,
34
+ TransitionInterpolatedStyle,
35
+ TransitionSpec,
36
+ } from "./types";
@@ -8,7 +8,7 @@ import { useSharedValue } from "react-native-reanimated";
8
8
  import { useBuildGestures } from "../hooks/gestures/use-build-gestures";
9
9
  import type { GestureStoreMap } from "../stores/gesture.store";
10
10
  import createProvider from "../utils/create-provider";
11
- import { useKeys } from "./keys.provider";
11
+ import { useKeys } from "./screen/keys.provider";
12
12
 
13
13
  export type ScrollConfig = {
14
14
  x: number;
@@ -29,11 +29,15 @@ export interface GestureContextType {
29
29
  gestureEnabled: boolean;
30
30
  }
31
31
 
32
+ interface ScreenGestureProviderProps {
33
+ children: React.ReactNode;
34
+ }
35
+
32
36
  export const {
33
37
  ScreenGestureProvider,
34
38
  useScreenGestureContext: useGestureContext,
35
39
  } = createProvider("ScreenGesture", { guarded: false })<
36
- { children: React.ReactNode },
40
+ ScreenGestureProviderProps,
37
41
  GestureContextType
38
42
  >(({ children }) => {
39
43
  const { current } = useKeys();
@@ -0,0 +1,81 @@
1
+ import type { ReactNode } from "react";
2
+ import { useWindowDimensions, type View } from "react-native";
3
+ import {
4
+ type AnimatedRef,
5
+ type MeasuredDimensions,
6
+ measure,
7
+ } from "react-native-reanimated";
8
+ import createProvider from "../utils/create-provider";
9
+
10
+ interface LayoutAnchorProviderProps {
11
+ anchorRef: AnimatedRef<View>;
12
+ children: ReactNode;
13
+ }
14
+
15
+ interface LayoutAnchorContextValue {
16
+ /**
17
+ * Corrects measured dimensions for parent transforms (translation and scale).
18
+ * The anchor should be at (0, 0) with full screen dimensions - any difference
19
+ * is from parent transforms. This function reverses those transforms to yield
20
+ * the true layout position and dimensions.
21
+ */
22
+ correctMeasurement: (measured: MeasuredDimensions) => MeasuredDimensions;
23
+ }
24
+
25
+ /**
26
+ * Provides a reference point for correcting bounds measurements.
27
+ *
28
+ * When a parent view has transforms applied (e.g., during screen transitions),
29
+ * `measure()` returns visual positions that include those transforms. This provider
30
+ * establishes an anchor point (typically the screen container at 0,0) and exposes
31
+ * a `correctMeasurement` function that reverses translation and scale transforms
32
+ * to yield the true layout position and dimensions.
33
+ *
34
+ * ## How it works
35
+ *
36
+ * 1. **Translation**: Subtract anchor's pageX/pageY offset
37
+ * 2. **Scale**: Compare anchor's measured size to expected (screen) size to compute
38
+ * scale factor, then divide positions and dimensions by that factor
39
+ */
40
+ const { LayoutAnchorProvider, useLayoutAnchorContext } = createProvider(
41
+ "LayoutAnchor",
42
+ { guarded: false },
43
+ )<LayoutAnchorProviderProps, LayoutAnchorContextValue>(
44
+ ({ anchorRef, children }) => {
45
+ const { width: screenWidth, height: screenHeight } = useWindowDimensions();
46
+
47
+ const correctMeasurement = (
48
+ measured: MeasuredDimensions,
49
+ ): MeasuredDimensions => {
50
+ "worklet";
51
+ const anchor = measure(anchorRef);
52
+ if (!anchor) return measured;
53
+
54
+ // Compute scale factor by comparing anchor size to expected screen size.
55
+ // Anchor should be full-screen (absoluteFill), so any difference is from scale.
56
+ const scaleX = anchor.width > 0 ? anchor.width / screenWidth : 1;
57
+ const scaleY = anchor.height > 0 ? anchor.height / screenHeight : 1;
58
+
59
+ // Get element position relative to anchor (removes translation)
60
+ const relativeX = measured.pageX - anchor.pageX;
61
+ const relativeY = measured.pageY - anchor.pageY;
62
+
63
+ // Reverse scale: divide relative position and dimensions by scale factor
64
+ return {
65
+ x: measured.x,
66
+ y: measured.y,
67
+ width: scaleX !== 1 ? measured.width / scaleX : measured.width,
68
+ height: scaleY !== 1 ? measured.height / scaleY : measured.height,
69
+ pageX: scaleX !== 1 ? relativeX / scaleX : relativeX,
70
+ pageY: scaleY !== 1 ? relativeY / scaleY : relativeY,
71
+ };
72
+ };
73
+
74
+ return {
75
+ value: { correctMeasurement },
76
+ children,
77
+ };
78
+ },
79
+ );
80
+
81
+ export { LayoutAnchorProvider, useLayoutAnchorContext };
@@ -17,7 +17,8 @@ import { AnimationStore } from "../stores/animation.store";
17
17
  import { BoundStore } from "../stores/bounds.store";
18
18
  import { prepareStyleForBounds } from "../utils/bounds/helpers/styles";
19
19
  import createProvider from "../utils/create-provider";
20
- import { type TransitionDescriptor, useKeys } from "./keys.provider";
20
+ import { useLayoutAnchorContext } from "./layout-anchor.provider";
21
+ import { type BaseDescriptor, useKeys } from "./screen/keys.provider";
21
22
 
22
23
  interface MaybeMeasureAndStoreParams {
23
24
  onPress?: ((...args: unknown[]) => void) | undefined;
@@ -47,19 +48,26 @@ interface RegisterBoundsContextValue {
47
48
  * Returns an array of screen keys from immediate parent to root.
48
49
  * [parentKey, grandparentKey, greatGrandparentKey, ...]
49
50
  */
50
- const getAncestorKeys = (current: TransitionDescriptor): string[] => {
51
+ const getAncestorKeys = (current: BaseDescriptor): string[] => {
51
52
  const ancestors: string[] = [];
52
- let nav = current.navigation.getParent();
53
+ const nav = current.navigation as any;
53
54
 
54
- while (nav) {
55
- const state = nav.getState();
55
+ // Safety check for navigators without getParent
56
+ if (typeof nav?.getParent !== "function") {
57
+ return ancestors;
58
+ }
59
+
60
+ let parent = nav.getParent();
61
+
62
+ while (parent) {
63
+ const state = parent.getState();
56
64
  if (state?.routes && state.index !== undefined) {
57
65
  const focusedRoute = state.routes[state.index];
58
66
  if (focusedRoute?.key) {
59
67
  ancestors.push(focusedRoute.key);
60
68
  }
61
69
  }
62
- nav = nav.getParent();
70
+ parent = parent.getParent();
63
71
  }
64
72
 
65
73
  return ancestors;
@@ -201,6 +209,7 @@ const { RegisterBoundsProvider, useRegisterBoundsContext } = createProvider(
201
209
  const { current } = useKeys();
202
210
  const currentScreenKey = current.route.key;
203
211
  const ancestorKeys = useMemo(() => getAncestorKeys(current), [current]);
212
+ const layoutAnchor = useLayoutAnchorContext();
204
213
 
205
214
  // Context & signals
206
215
  const parentContext: RegisterBoundsContextValue | null =
@@ -234,12 +243,17 @@ const { RegisterBoundsProvider, useRegisterBoundsContext } = createProvider(
234
243
  const measured = measure(animatedRef);
235
244
  if (!measured) return;
236
245
 
246
+ // Correct for parent transforms (e.g., when parent screen is animating)
247
+ const correctedMeasured = layoutAnchor
248
+ ? layoutAnchor.correctMeasurement(measured)
249
+ : measured;
250
+
237
251
  emitUpdate();
238
252
 
239
253
  BoundStore.registerSnapshot(
240
254
  sharedBoundTag,
241
255
  currentScreenKey,
242
- measured,
256
+ correctedMeasured,
243
257
  preparedStyles,
244
258
  ancestorKeys,
245
259
  );
@@ -266,7 +280,7 @@ const { RegisterBoundsProvider, useRegisterBoundsContext } = createProvider(
266
280
  BoundStore.setLinkSource(
267
281
  sharedBoundTag,
268
282
  currentScreenKey,
269
- measured,
283
+ correctedMeasured,
270
284
  preparedStyles,
271
285
  ancestorKeys,
272
286
  );
@@ -277,7 +291,7 @@ const { RegisterBoundsProvider, useRegisterBoundsContext } = createProvider(
277
291
  BoundStore.setLinkDestination(
278
292
  sharedBoundTag,
279
293
  currentScreenKey,
280
- measured,
294
+ correctedMeasured,
281
295
  preparedStyles,
282
296
  ancestorKeys,
283
297
  );
@@ -5,34 +5,49 @@ import type {
5
5
  RouteProp,
6
6
  } from "@react-navigation/native";
7
7
  import { createContext, useContext, useMemo } from "react";
8
- import type { ScreenTransitionConfig } from "../types/core.types";
8
+ import type { ScreenTransitionConfig } from "../../types/screen.types";
9
+ import type {
10
+ BaseStackDescriptor,
11
+ BaseStackNavigation,
12
+ BaseStackRoute,
13
+ } from "../../types/stack.types";
14
+
15
+ // Re-export for backward compatibility
16
+ export type { BaseStackNavigation as BaseNavigation };
17
+ export type { BaseStackRoute as BaseRoute };
18
+
19
+ /**
20
+ * Base descriptor interface - minimal contract for all stack types.
21
+ * This allows blank-stack and native-stack to work with the shared
22
+ * providers without tight coupling to React Navigation.
23
+ */
24
+ export type BaseDescriptor = BaseStackDescriptor;
9
25
 
26
+ /**
27
+ * React Navigation specific descriptor - extends base with full typing
28
+ */
10
29
  export type TransitionDescriptor = Descriptor<
11
30
  ScreenTransitionConfig,
12
31
  NavigationProp<ParamListBase>,
13
32
  RouteProp<ParamListBase>
14
33
  >;
15
34
 
16
- export interface KeysContextType<
17
- TDescriptor extends TransitionDescriptor = TransitionDescriptor,
18
- > {
35
+ interface KeysContextType<TDescriptor extends BaseDescriptor = BaseDescriptor> {
19
36
  previous?: TDescriptor;
20
37
  current: TDescriptor;
21
38
  next?: TDescriptor;
22
39
  }
23
40
 
24
- const KeysContext = createContext<
25
- KeysContextType<TransitionDescriptor> | undefined
26
- >(undefined);
41
+ const KeysContext = createContext<KeysContextType | undefined>(undefined);
27
42
 
28
- interface KeysProviderProps<TDescriptor extends TransitionDescriptor> {
43
+ interface KeysProviderProps<TDescriptor extends BaseDescriptor> {
29
44
  children: React.ReactNode;
30
45
  previous?: TDescriptor;
31
46
  current: TDescriptor;
32
47
  next?: TDescriptor;
33
48
  }
34
49
 
35
- export function KeysProvider<TDescriptor extends TransitionDescriptor>({
50
+ export function KeysProvider<TDescriptor extends BaseDescriptor>({
36
51
  children,
37
52
  previous,
38
53
  current,
@@ -47,7 +62,7 @@ export function KeysProvider<TDescriptor extends TransitionDescriptor>({
47
62
  }
48
63
 
49
64
  export function useKeys<
50
- TDescriptor extends TransitionDescriptor = TransitionDescriptor,
65
+ TDescriptor extends BaseDescriptor = BaseDescriptor,
51
66
  >(): KeysContextType<TDescriptor> {
52
67
  const context = useContext(KeysContext);
53
68
  if (context === undefined) {
@@ -0,0 +1,38 @@
1
+ import type React from "react";
2
+ import type { ComponentType } from "react";
3
+ import { RootTransitionAware } from "../../components/root-transition-aware";
4
+ import { ScreenGestureProvider } from "../gestures.provider";
5
+ import { type BaseDescriptor, KeysProvider } from "./keys.provider";
6
+ import { ScreenStylesProvider } from "./styles.provider";
7
+
8
+ type Props<TDescriptor extends BaseDescriptor> = {
9
+ previous?: TDescriptor;
10
+ current: TDescriptor;
11
+ next?: TDescriptor;
12
+ children: React.ReactNode;
13
+ LifecycleController: ComponentType<any>;
14
+ };
15
+
16
+ export function ScreenComposer<TDescriptor extends BaseDescriptor>({
17
+ previous,
18
+ current,
19
+ next,
20
+ children,
21
+ LifecycleController,
22
+ }: Props<TDescriptor>) {
23
+ return (
24
+ <KeysProvider<TDescriptor>
25
+ previous={previous}
26
+ current={current}
27
+ next={next}
28
+ >
29
+ <ScreenGestureProvider>
30
+ <LifecycleController>
31
+ <ScreenStylesProvider>
32
+ <RootTransitionAware>{children}</RootTransitionAware>
33
+ </ScreenStylesProvider>
34
+ </LifecycleController>
35
+ </ScreenGestureProvider>
36
+ </KeysProvider>
37
+ );
38
+ }
@@ -0,0 +1,120 @@
1
+ import { createContext, useContext, useMemo } from "react";
2
+ import {
3
+ type SharedValue,
4
+ useDerivedValue,
5
+ useSharedValue,
6
+ } from "react-native-reanimated";
7
+ import { NO_STYLES } from "../../constants";
8
+ import { _useScreenAnimation } from "../../hooks/animation/use-screen-animation";
9
+ import type { TransitionInterpolatedStyle } from "../../types/animation.types";
10
+ import { createBounds } from "../../utils/bounds";
11
+
12
+ type Props = {
13
+ children: React.ReactNode;
14
+ };
15
+
16
+ type ScreenStylesContextValue = {
17
+ stylesMap: SharedValue<TransitionInterpolatedStyle>;
18
+ ancestorStylesMaps: SharedValue<TransitionInterpolatedStyle>[];
19
+ };
20
+
21
+ const ScreenStylesContext = createContext<ScreenStylesContextValue | null>(
22
+ null,
23
+ );
24
+
25
+ export function ScreenStylesProvider({ children }: Props) {
26
+ const parentCtx = useContext(ScreenStylesContext);
27
+
28
+ const { screenInterpolatorProps, nextInterpolator, currentInterpolator } =
29
+ _useScreenAnimation();
30
+
31
+ // Track when a gesture is triggered while another screen is closing
32
+ const hasTriggeredGestureWhileInFlight = useSharedValue(false);
33
+
34
+ const stylesMap = useDerivedValue<TransitionInterpolatedStyle>(() => {
35
+ "worklet";
36
+ const props = screenInterpolatorProps.value;
37
+ const bounds = createBounds(props);
38
+
39
+ // Detect when user starts gesture on current screen while next screen is closing
40
+ if (props.current.gesture.isDragging && props.next?.closing) {
41
+ hasTriggeredGestureWhileInFlight.value = true;
42
+ }
43
+
44
+ // Reset the flag when no longer dragging and next screen is done closing
45
+ if (
46
+ !props.current.gesture.isDragging &&
47
+ !props.next?.closing &&
48
+ hasTriggeredGestureWhileInFlight.value
49
+ ) {
50
+ hasTriggeredGestureWhileInFlight.value = false;
51
+ }
52
+
53
+ // Use current interpolator when gesture triggered while in-flight,
54
+ // otherwise use next interpolator if available (normal case)
55
+ const shouldUseCurrentInterpolator =
56
+ props.current.gesture.isDragging ||
57
+ hasTriggeredGestureWhileInFlight.value;
58
+
59
+ const interpolator = shouldUseCurrentInterpolator
60
+ ? currentInterpolator
61
+ : (nextInterpolator ?? currentInterpolator);
62
+
63
+ /**
64
+ * Maintainer Note:
65
+ * To avoid unnecessary jumps in off directions, we have to snap back to the currents progress.
66
+ * While this still introduces a 'snap back' animation, it's still very rare that a user would encounter this unless
67
+ * they're spamming things out. Not ideal, but this is the best way to go about dealing with fast rapid gestures.
68
+ *
69
+ * The alternative was preventing users from actually being able to drag back while animation was still in flight. But there was a significant delay
70
+ * when waiting for gestures to register again.
71
+ */
72
+ const effectiveProps = shouldUseCurrentInterpolator
73
+ ? { ...props, progress: props.current.progress, next: undefined }
74
+ : props;
75
+
76
+ try {
77
+ if (!interpolator) return NO_STYLES;
78
+ return interpolator({
79
+ ...effectiveProps,
80
+ bounds,
81
+ });
82
+ } catch (err) {
83
+ if (__DEV__) {
84
+ console.warn(
85
+ "[react-native-screen-transitions] screenStyleInterpolator must be a worklet",
86
+ err,
87
+ );
88
+ }
89
+ return NO_STYLES;
90
+ }
91
+ });
92
+
93
+ const value = useMemo(() => {
94
+ // Build ancestor chain: [parent, grandparent, great-grandparent, ...]
95
+ const ancestorStylesMaps = parentCtx
96
+ ? [parentCtx.stylesMap, ...parentCtx.ancestorStylesMaps]
97
+ : [];
98
+
99
+ return {
100
+ stylesMap,
101
+ ancestorStylesMaps,
102
+ };
103
+ }, [stylesMap, parentCtx]);
104
+
105
+ return (
106
+ <ScreenStylesContext.Provider value={value}>
107
+ {children}
108
+ </ScreenStylesContext.Provider>
109
+ );
110
+ }
111
+
112
+ export function useScreenStyles() {
113
+ const ctx = useContext(ScreenStylesContext);
114
+ if (!ctx) {
115
+ throw new Error(
116
+ "useTransitionStyles must be used within a TransitionStylesProvider",
117
+ );
118
+ }
119
+ return ctx;
120
+ }
@@ -0,0 +1,87 @@
1
+ import { SafeAreaProviderCompat } from "@react-navigation/elements";
2
+ import type * as React from "react";
3
+ import { StyleSheet } from "react-native";
4
+ import { GestureHandlerRootView } from "react-native-gesture-handler";
5
+ import { StackType } from "../../types/stack.types";
6
+ import createProvider from "../../utils/create-provider";
7
+
8
+ export interface StackCoreConfig {
9
+ TRANSITIONS_ALWAYS_ON?: boolean;
10
+ STACK_TYPE?: StackType;
11
+ DISABLE_NATIVE_SCREENS?: boolean;
12
+ }
13
+
14
+ interface StackCoreProviderProps {
15
+ config: StackCoreConfig;
16
+ children: React.ReactNode;
17
+ }
18
+
19
+ export interface StackCoreContextValue {
20
+ flags: {
21
+ TRANSITIONS_ALWAYS_ON: boolean;
22
+ STACK_TYPE?: StackType;
23
+ DISABLE_NATIVE_SCREENS: boolean;
24
+ };
25
+ }
26
+
27
+ const { StackCoreProvider: InternalStackCoreProvider, useStackCoreContext } =
28
+ createProvider("StackCore", { guarded: true })<
29
+ StackCoreProviderProps,
30
+ StackCoreContextValue
31
+ >(({ config, children }) => {
32
+ const {
33
+ TRANSITIONS_ALWAYS_ON = false,
34
+ DISABLE_NATIVE_SCREENS = false,
35
+ STACK_TYPE = StackType.BLANK,
36
+ } = config;
37
+
38
+ return {
39
+ value: {
40
+ flags: {
41
+ TRANSITIONS_ALWAYS_ON,
42
+ STACK_TYPE,
43
+ DISABLE_NATIVE_SCREENS,
44
+ },
45
+ },
46
+ children: (
47
+ <GestureHandlerRootView style={styles.container}>
48
+ <SafeAreaProviderCompat>{children}</SafeAreaProviderCompat>
49
+ </GestureHandlerRootView>
50
+ ),
51
+ };
52
+ });
53
+
54
+ /**
55
+ * HOC that wraps a component with the StackCore provider.
56
+ * Just a simple open gate
57
+ */
58
+ export function withStackCore<TProps extends object>(
59
+ defaultConfig: StackCoreConfig,
60
+ Component: React.ComponentType<TProps>,
61
+ ): React.FC<TProps & StackCoreConfig> {
62
+ return function StackCoreWrapper({
63
+ DISABLE_NATIVE_SCREENS,
64
+ TRANSITIONS_ALWAYS_ON,
65
+ STACK_TYPE,
66
+ ...props
67
+ }: TProps & StackCoreConfig) {
68
+ // User props first, then defaultConfig overrides (config takes priority)
69
+ const config: StackCoreConfig = {
70
+ ...(DISABLE_NATIVE_SCREENS !== undefined && { DISABLE_NATIVE_SCREENS }),
71
+ ...(TRANSITIONS_ALWAYS_ON !== undefined && { TRANSITIONS_ALWAYS_ON }),
72
+ ...(STACK_TYPE !== undefined && { STACK_TYPE }),
73
+ ...defaultConfig,
74
+ };
75
+ return (
76
+ <InternalStackCoreProvider config={config}>
77
+ <Component {...(props as TProps)} />
78
+ </InternalStackCoreProvider>
79
+ );
80
+ };
81
+ }
82
+
83
+ const styles = StyleSheet.create({
84
+ container: { flex: 1 },
85
+ });
86
+
87
+ export { useStackCoreContext };