react-native-screen-transitions 3.6.0 → 3.7.0-alpha.0

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 (368) hide show
  1. package/README.md +2 -2
  2. package/lib/commonjs/blank-stack/components/stack-view.js +35 -39
  3. package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -1
  4. package/lib/commonjs/blank-stack/navigators/create-blank-stack-navigator.js +7 -14
  5. package/lib/commonjs/blank-stack/navigators/create-blank-stack-navigator.js.map +1 -1
  6. package/lib/commonjs/component-stack/components/stack-view.js +4 -11
  7. package/lib/commonjs/component-stack/components/stack-view.js.map +1 -1
  8. package/lib/commonjs/component-stack/navigators/create-component-stack-navigator.js +1 -1
  9. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +6 -0
  10. package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  11. package/lib/commonjs/shared/adapters/with-screen-transitions/context.js +28 -0
  12. package/lib/commonjs/shared/adapters/with-screen-transitions/context.js.map +1 -0
  13. package/lib/commonjs/shared/adapters/with-screen-transitions/index.js +75 -0
  14. package/lib/commonjs/shared/adapters/with-screen-transitions/index.js.map +1 -0
  15. package/lib/commonjs/shared/adapters/with-screen-transitions/options.js +103 -0
  16. package/lib/commonjs/shared/adapters/with-screen-transitions/options.js.map +1 -0
  17. package/lib/commonjs/shared/adapters/with-screen-transitions/stack-layout.js +143 -0
  18. package/lib/commonjs/shared/adapters/with-screen-transitions/stack-layout.js.map +1 -0
  19. package/lib/commonjs/shared/adapters/with-screen-transitions/types.js +6 -0
  20. package/lib/commonjs/shared/adapters/with-screen-transitions/types.js.map +1 -0
  21. package/lib/commonjs/shared/components/activity/helpers.js +9 -0
  22. package/lib/commonjs/shared/components/activity/helpers.js.map +1 -0
  23. package/lib/commonjs/shared/components/activity/index.js +20 -0
  24. package/lib/commonjs/shared/components/activity/index.js.map +1 -0
  25. package/lib/commonjs/shared/components/activity/variants/activity-container.js +29 -0
  26. package/lib/commonjs/shared/components/activity/variants/activity-container.js.map +1 -0
  27. package/lib/commonjs/shared/components/activity/variants/activity-screen.js +107 -0
  28. package/lib/commonjs/shared/components/activity/variants/activity-screen.js.map +1 -0
  29. package/lib/commonjs/shared/components/create-boundary-component/hooks/use-measurer.js +10 -4
  30. package/lib/commonjs/shared/components/create-boundary-component/hooks/use-measurer.js.map +1 -1
  31. package/lib/commonjs/shared/components/create-boundary-component/utils/measured-bounds.js +13 -1
  32. package/lib/commonjs/shared/components/create-boundary-component/utils/measured-bounds.js.map +1 -1
  33. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +8 -17
  34. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  35. package/lib/commonjs/shared/components/screen-lifecycle/index.js +1 -1
  36. package/lib/commonjs/shared/components/screen-lifecycle/index.js.map +1 -1
  37. package/lib/commonjs/shared/hooks/navigation/use-navigation-helpers.js +10 -4
  38. package/lib/commonjs/shared/hooks/navigation/use-navigation-helpers.js.map +1 -1
  39. package/lib/commonjs/shared/hooks/navigation/use-stack.js +63 -6
  40. package/lib/commonjs/shared/hooks/navigation/use-stack.js.map +1 -1
  41. package/lib/commonjs/shared/index.js +8 -0
  42. package/lib/commonjs/shared/index.js.map +1 -1
  43. package/lib/commonjs/shared/providers/screen/descriptors/descriptors.provider.js +18 -29
  44. package/lib/commonjs/shared/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  45. package/lib/commonjs/shared/providers/screen/descriptors/index.js +6 -0
  46. package/lib/commonjs/shared/providers/screen/descriptors/index.js.map +1 -1
  47. package/lib/commonjs/shared/providers/screen/gestures/ownership/resolve-ownership.js +2 -1
  48. package/lib/commonjs/shared/providers/screen/gestures/ownership/resolve-ownership.js.map +1 -1
  49. package/lib/commonjs/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js +1 -1
  50. package/lib/commonjs/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js.map +1 -1
  51. package/lib/commonjs/shared/providers/screen/gestures/pan/pan-lifecycle.js +4 -1
  52. package/lib/commonjs/shared/providers/screen/gestures/pan/pan-lifecycle.js.map +1 -1
  53. package/lib/commonjs/shared/providers/screen/gestures/pan/use-pan-behavior.js +4 -3
  54. package/lib/commonjs/shared/providers/screen/gestures/pan/use-pan-behavior.js.map +1 -1
  55. package/lib/commonjs/shared/providers/screen/gestures/pinch/pinch-lifecycle.js +4 -1
  56. package/lib/commonjs/shared/providers/screen/gestures/pinch/pinch-lifecycle.js.map +1 -1
  57. package/lib/commonjs/shared/providers/screen/gestures/pinch/use-pinch-behavior.js +4 -3
  58. package/lib/commonjs/shared/providers/screen/gestures/pinch/use-pinch-behavior.js.map +1 -1
  59. package/lib/commonjs/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js +16 -1
  60. package/lib/commonjs/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  61. package/lib/commonjs/shared/providers/stack/direct.provider.js +4 -3
  62. package/lib/commonjs/shared/providers/stack/direct.provider.js.map +1 -1
  63. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.js +199 -0
  64. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.js.map +1 -0
  65. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/derive-managed-stack-state.js +62 -0
  66. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/derive-managed-stack-state.js.map +1 -0
  67. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/helpers.js +81 -0
  68. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/helpers.js.map +1 -0
  69. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/reconcile-managed-routes.js +123 -0
  70. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/reconcile-managed-routes.js.map +1 -0
  71. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/types.js +6 -0
  72. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/types.js.map +1 -0
  73. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/index.js +24 -0
  74. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/index.js.map +1 -0
  75. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/managed-stack-controller.js +131 -0
  76. package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/managed-stack-controller.js.map +1 -0
  77. package/lib/commonjs/shared/providers/stack/managed.provider.js +18 -29
  78. package/lib/commonjs/shared/providers/stack/managed.provider.js.map +1 -1
  79. package/lib/commonjs/shared/types/stack.types.js.map +1 -1
  80. package/lib/commonjs/shared/utils/create-provider.js +99 -10
  81. package/lib/commonjs/shared/utils/create-provider.js.map +1 -1
  82. package/lib/commonjs/shared/utils/navigation/resolve-scene-neighbors.js +8 -5
  83. package/lib/commonjs/shared/utils/navigation/resolve-scene-neighbors.js.map +1 -1
  84. package/lib/commonjs/shared/utils/navigation/sync-routes-with-removed.js +23 -6
  85. package/lib/commonjs/shared/utils/navigation/sync-routes-with-removed.js.map +1 -1
  86. package/lib/commonjs/shared/utils/visibility-block-offset.js +13 -0
  87. package/lib/commonjs/shared/utils/visibility-block-offset.js.map +1 -0
  88. package/lib/module/blank-stack/components/stack-view.js +36 -40
  89. package/lib/module/blank-stack/components/stack-view.js.map +1 -1
  90. package/lib/module/blank-stack/navigators/create-blank-stack-navigator.js +7 -14
  91. package/lib/module/blank-stack/navigators/create-blank-stack-navigator.js.map +1 -1
  92. package/lib/module/component-stack/components/stack-view.js +4 -11
  93. package/lib/module/component-stack/components/stack-view.js.map +1 -1
  94. package/lib/module/component-stack/navigators/create-component-stack-navigator.js +1 -1
  95. package/lib/module/native-stack/navigators/createNativeStackNavigator.js +6 -0
  96. package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
  97. package/lib/module/shared/adapters/with-screen-transitions/context.js +23 -0
  98. package/lib/module/shared/adapters/with-screen-transitions/context.js.map +1 -0
  99. package/lib/module/shared/adapters/with-screen-transitions/index.js +66 -0
  100. package/lib/module/shared/adapters/with-screen-transitions/index.js.map +1 -0
  101. package/lib/module/shared/adapters/with-screen-transitions/options.js +98 -0
  102. package/lib/module/shared/adapters/with-screen-transitions/options.js.map +1 -0
  103. package/lib/module/shared/adapters/with-screen-transitions/stack-layout.js +138 -0
  104. package/lib/module/shared/adapters/with-screen-transitions/stack-layout.js.map +1 -0
  105. package/lib/module/shared/adapters/with-screen-transitions/types.js +4 -0
  106. package/lib/module/shared/adapters/with-screen-transitions/types.js.map +1 -0
  107. package/lib/module/shared/components/activity/helpers.js +5 -0
  108. package/lib/module/shared/components/activity/helpers.js.map +1 -0
  109. package/lib/module/shared/components/activity/index.js +5 -0
  110. package/lib/module/shared/components/activity/index.js.map +1 -0
  111. package/lib/module/shared/components/activity/variants/activity-container.js +24 -0
  112. package/lib/module/shared/components/activity/variants/activity-container.js.map +1 -0
  113. package/lib/module/shared/components/activity/variants/activity-screen.js +103 -0
  114. package/lib/module/shared/components/activity/variants/activity-screen.js.map +1 -0
  115. package/lib/module/shared/components/create-boundary-component/hooks/use-measurer.js +11 -5
  116. package/lib/module/shared/components/create-boundary-component/hooks/use-measurer.js.map +1 -1
  117. package/lib/module/shared/components/create-boundary-component/utils/measured-bounds.js +11 -0
  118. package/lib/module/shared/components/create-boundary-component/utils/measured-bounds.js.map +1 -1
  119. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +8 -17
  120. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  121. package/lib/module/shared/components/screen-lifecycle/index.js +1 -1
  122. package/lib/module/shared/components/screen-lifecycle/index.js.map +1 -1
  123. package/lib/module/shared/hooks/navigation/use-navigation-helpers.js +11 -5
  124. package/lib/module/shared/hooks/navigation/use-navigation-helpers.js.map +1 -1
  125. package/lib/module/shared/hooks/navigation/use-stack.js +63 -6
  126. package/lib/module/shared/hooks/navigation/use-stack.js.map +1 -1
  127. package/lib/module/shared/index.js +3 -0
  128. package/lib/module/shared/index.js.map +1 -1
  129. package/lib/module/shared/providers/screen/descriptors/descriptors.provider.js +17 -29
  130. package/lib/module/shared/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  131. package/lib/module/shared/providers/screen/descriptors/index.js +1 -1
  132. package/lib/module/shared/providers/screen/descriptors/index.js.map +1 -1
  133. package/lib/module/shared/providers/screen/gestures/ownership/resolve-ownership.js +2 -1
  134. package/lib/module/shared/providers/screen/gestures/ownership/resolve-ownership.js.map +1 -1
  135. package/lib/module/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js +2 -2
  136. package/lib/module/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js.map +1 -1
  137. package/lib/module/shared/providers/screen/gestures/pan/pan-lifecycle.js +5 -2
  138. package/lib/module/shared/providers/screen/gestures/pan/pan-lifecycle.js.map +1 -1
  139. package/lib/module/shared/providers/screen/gestures/pan/use-pan-behavior.js +4 -3
  140. package/lib/module/shared/providers/screen/gestures/pan/use-pan-behavior.js.map +1 -1
  141. package/lib/module/shared/providers/screen/gestures/pinch/pinch-lifecycle.js +5 -2
  142. package/lib/module/shared/providers/screen/gestures/pinch/pinch-lifecycle.js.map +1 -1
  143. package/lib/module/shared/providers/screen/gestures/pinch/use-pinch-behavior.js +4 -3
  144. package/lib/module/shared/providers/screen/gestures/pinch/use-pinch-behavior.js.map +1 -1
  145. package/lib/module/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js +16 -1
  146. package/lib/module/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  147. package/lib/module/shared/providers/stack/direct.provider.js +5 -4
  148. package/lib/module/shared/providers/stack/direct.provider.js.map +1 -1
  149. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.js +194 -0
  150. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.js.map +1 -0
  151. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/derive-managed-stack-state.js +57 -0
  152. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/derive-managed-stack-state.js.map +1 -0
  153. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/helpers.js +69 -0
  154. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/helpers.js.map +1 -0
  155. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/reconcile-managed-routes.js +118 -0
  156. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/reconcile-managed-routes.js.map +1 -0
  157. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/types.js +4 -0
  158. package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/types.js.map +1 -0
  159. package/lib/module/shared/providers/stack/helpers/managed-stack-state/index.js +19 -0
  160. package/lib/module/shared/providers/stack/helpers/managed-stack-state/index.js.map +1 -0
  161. package/lib/module/shared/providers/stack/helpers/managed-stack-state/managed-stack-controller.js +126 -0
  162. package/lib/module/shared/providers/stack/helpers/managed-stack-state/managed-stack-controller.js.map +1 -0
  163. package/lib/module/shared/providers/stack/managed.provider.js +19 -30
  164. package/lib/module/shared/providers/stack/managed.provider.js.map +1 -1
  165. package/lib/module/shared/types/stack.types.js.map +1 -1
  166. package/lib/module/shared/utils/create-provider.js +100 -11
  167. package/lib/module/shared/utils/create-provider.js.map +1 -1
  168. package/lib/module/shared/utils/navigation/resolve-scene-neighbors.js +8 -5
  169. package/lib/module/shared/utils/navigation/resolve-scene-neighbors.js.map +1 -1
  170. package/lib/module/shared/utils/navigation/sync-routes-with-removed.js +23 -6
  171. package/lib/module/shared/utils/navigation/sync-routes-with-removed.js.map +1 -1
  172. package/lib/module/shared/utils/visibility-block-offset.js +8 -0
  173. package/lib/module/shared/utils/visibility-block-offset.js.map +1 -0
  174. package/lib/typescript/blank-stack/components/stack-view.d.ts.map +1 -1
  175. package/lib/typescript/blank-stack/index.d.ts +1 -1
  176. package/lib/typescript/blank-stack/index.d.ts.map +1 -1
  177. package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts +4 -6
  178. package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts.map +1 -1
  179. package/lib/typescript/blank-stack/types.d.ts +41 -29
  180. package/lib/typescript/blank-stack/types.d.ts.map +1 -1
  181. package/lib/typescript/component-stack/components/stack-view.d.ts.map +1 -1
  182. package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts +1 -1
  183. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +5 -0
  184. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -1
  185. package/lib/typescript/native-stack/types.d.ts +25 -0
  186. package/lib/typescript/native-stack/types.d.ts.map +1 -1
  187. package/lib/typescript/shared/adapters/with-screen-transitions/context.d.ts +15 -0
  188. package/lib/typescript/shared/adapters/with-screen-transitions/context.d.ts.map +1 -0
  189. package/lib/typescript/shared/adapters/with-screen-transitions/index.d.ts +11 -0
  190. package/lib/typescript/shared/adapters/with-screen-transitions/index.d.ts.map +1 -0
  191. package/lib/typescript/shared/adapters/with-screen-transitions/options.d.ts +16 -0
  192. package/lib/typescript/shared/adapters/with-screen-transitions/options.d.ts.map +1 -0
  193. package/lib/typescript/shared/adapters/with-screen-transitions/stack-layout.d.ts +12 -0
  194. package/lib/typescript/shared/adapters/with-screen-transitions/stack-layout.d.ts.map +1 -0
  195. package/lib/typescript/shared/adapters/with-screen-transitions/types.d.ts +24 -0
  196. package/lib/typescript/shared/adapters/with-screen-transitions/types.d.ts.map +1 -0
  197. package/lib/typescript/shared/components/activity/helpers.d.ts +4 -0
  198. package/lib/typescript/shared/components/activity/helpers.d.ts.map +1 -0
  199. package/lib/typescript/shared/components/activity/index.d.ts +3 -0
  200. package/lib/typescript/shared/components/activity/index.d.ts.map +1 -0
  201. package/lib/typescript/shared/components/activity/variants/activity-container.d.ts +6 -0
  202. package/lib/typescript/shared/components/activity/variants/activity-container.d.ts.map +1 -0
  203. package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts +13 -0
  204. package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts.map +1 -0
  205. package/lib/typescript/shared/components/create-boundary-component/hooks/use-measurer.d.ts.map +1 -1
  206. package/lib/typescript/shared/components/create-boundary-component/index.d.ts +2 -2
  207. package/lib/typescript/shared/components/create-boundary-component/utils/measured-bounds.d.ts +1 -0
  208. package/lib/typescript/shared/components/create-boundary-component/utils/measured-bounds.d.ts.map +1 -1
  209. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts +1 -2
  210. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts.map +1 -1
  211. package/lib/typescript/shared/hooks/navigation/use-navigation-helpers.d.ts +1 -0
  212. package/lib/typescript/shared/hooks/navigation/use-navigation-helpers.d.ts.map +1 -1
  213. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts +13 -1
  214. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts.map +1 -1
  215. package/lib/typescript/shared/index.d.ts +15 -11
  216. package/lib/typescript/shared/index.d.ts.map +1 -1
  217. package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts +11 -3
  218. package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts.map +1 -1
  219. package/lib/typescript/shared/providers/screen/descriptors/index.d.ts +1 -1
  220. package/lib/typescript/shared/providers/screen/descriptors/index.d.ts.map +1 -1
  221. package/lib/typescript/shared/providers/screen/gestures/ownership/resolve-ownership.d.ts.map +1 -1
  222. package/lib/typescript/shared/providers/screen/gestures/pan/pan-lifecycle.d.ts +1 -1
  223. package/lib/typescript/shared/providers/screen/gestures/pan/pan-lifecycle.d.ts.map +1 -1
  224. package/lib/typescript/shared/providers/screen/gestures/pan/use-pan-behavior.d.ts.map +1 -1
  225. package/lib/typescript/shared/providers/screen/gestures/pinch/pinch-lifecycle.d.ts +1 -1
  226. package/lib/typescript/shared/providers/screen/gestures/pinch/pinch-lifecycle.d.ts.map +1 -1
  227. package/lib/typescript/shared/providers/screen/gestures/pinch/use-pinch-behavior.d.ts.map +1 -1
  228. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts +3 -1
  229. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts.map +1 -1
  230. package/lib/typescript/shared/providers/stack/direct.provider.d.ts.map +1 -1
  231. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.d.ts +13 -0
  232. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.d.ts.map +1 -0
  233. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/derive-managed-stack-state.d.ts +12 -0
  234. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/derive-managed-stack-state.d.ts.map +1 -0
  235. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/helpers.d.ts +11 -0
  236. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/helpers.d.ts.map +1 -0
  237. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/reconcile-managed-routes.d.ts +12 -0
  238. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/reconcile-managed-routes.d.ts.map +1 -0
  239. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/types.d.ts +40 -0
  240. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/types.d.ts.map +1 -0
  241. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/index.d.ts +12 -0
  242. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/index.d.ts.map +1 -0
  243. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/managed-stack-controller.d.ts +13 -0
  244. package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/managed-stack-controller.d.ts.map +1 -0
  245. package/lib/typescript/shared/providers/stack/managed.provider.d.ts.map +1 -1
  246. package/lib/typescript/shared/types/index.d.ts +2 -2
  247. package/lib/typescript/shared/types/index.d.ts.map +1 -1
  248. package/lib/typescript/shared/types/providers/managed-stack.types.d.ts +3 -9
  249. package/lib/typescript/shared/types/providers/managed-stack.types.d.ts.map +1 -1
  250. package/lib/typescript/shared/types/screen.types.d.ts +24 -0
  251. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  252. package/lib/typescript/shared/types/stack.types.d.ts +7 -0
  253. package/lib/typescript/shared/types/stack.types.d.ts.map +1 -1
  254. package/lib/typescript/shared/utils/create-provider.d.ts +17 -3
  255. package/lib/typescript/shared/utils/create-provider.d.ts.map +1 -1
  256. package/lib/typescript/shared/utils/navigation/resolve-scene-neighbors.d.ts +2 -1
  257. package/lib/typescript/shared/utils/navigation/resolve-scene-neighbors.d.ts.map +1 -1
  258. package/lib/typescript/shared/utils/navigation/sync-routes-with-removed.d.ts +2 -1
  259. package/lib/typescript/shared/utils/navigation/sync-routes-with-removed.d.ts.map +1 -1
  260. package/lib/typescript/shared/utils/visibility-block-offset.d.ts +2 -0
  261. package/lib/typescript/shared/utils/visibility-block-offset.d.ts.map +1 -0
  262. package/package.json +11 -1
  263. package/src/blank-stack/components/stack-view.tsx +54 -48
  264. package/src/blank-stack/index.ts +1 -0
  265. package/src/blank-stack/navigators/create-blank-stack-navigator.tsx +7 -15
  266. package/src/blank-stack/types.ts +44 -29
  267. package/src/component-stack/components/stack-view.tsx +4 -11
  268. package/src/component-stack/navigators/create-component-stack-navigator.tsx +1 -1
  269. package/src/native-stack/navigators/createNativeStackNavigator.tsx +5 -0
  270. package/src/native-stack/types.ts +25 -0
  271. package/src/shared/adapters/with-screen-transitions/context.tsx +42 -0
  272. package/src/shared/adapters/with-screen-transitions/index.tsx +155 -0
  273. package/src/shared/adapters/with-screen-transitions/options.ts +172 -0
  274. package/src/shared/adapters/with-screen-transitions/stack-layout.tsx +233 -0
  275. package/src/shared/adapters/with-screen-transitions/types.ts +28 -0
  276. package/src/shared/components/activity/helpers.ts +8 -0
  277. package/src/shared/components/activity/index.tsx +2 -0
  278. package/src/shared/components/activity/variants/activity-container.tsx +25 -0
  279. package/src/shared/components/activity/variants/activity-screen.tsx +133 -0
  280. package/src/shared/components/create-boundary-component/hooks/use-measurer.ts +23 -4
  281. package/src/shared/components/create-boundary-component/utils/measured-bounds.ts +15 -0
  282. package/src/shared/components/screen-lifecycle/hooks/use-close-transition-intent.ts +9 -26
  283. package/src/shared/components/screen-lifecycle/index.tsx +1 -1
  284. package/src/shared/hooks/navigation/use-navigation-helpers.ts +9 -3
  285. package/src/shared/hooks/navigation/use-stack.tsx +115 -6
  286. package/src/shared/index.ts +9 -0
  287. package/src/shared/providers/screen/descriptors/descriptors.provider.tsx +31 -31
  288. package/src/shared/providers/screen/descriptors/index.tsx +1 -0
  289. package/src/shared/providers/screen/gestures/ownership/resolve-ownership.ts +2 -1
  290. package/src/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.ts +2 -2
  291. package/src/shared/providers/screen/gestures/pan/pan-lifecycle.ts +7 -2
  292. package/src/shared/providers/screen/gestures/pan/use-pan-behavior.ts +10 -2
  293. package/src/shared/providers/screen/gestures/pinch/pinch-lifecycle.ts +7 -2
  294. package/src/shared/providers/screen/gestures/pinch/use-pinch-behavior.ts +8 -3
  295. package/src/shared/providers/screen/styles/hooks/use-maybe-block-visibility.tsx +17 -1
  296. package/src/shared/providers/stack/direct.provider.tsx +13 -4
  297. package/src/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.ts +368 -0
  298. package/src/shared/providers/stack/helpers/managed-stack-state/helpers/derive-managed-stack-state.ts +129 -0
  299. package/src/shared/providers/stack/helpers/managed-stack-state/helpers/helpers.ts +139 -0
  300. package/src/shared/providers/stack/helpers/managed-stack-state/helpers/reconcile-managed-routes.ts +198 -0
  301. package/src/shared/providers/stack/helpers/managed-stack-state/helpers/types.ts +57 -0
  302. package/src/shared/providers/stack/helpers/managed-stack-state/index.ts +40 -0
  303. package/src/shared/providers/stack/helpers/managed-stack-state/managed-stack-controller.ts +160 -0
  304. package/src/shared/providers/stack/managed.provider.tsx +23 -39
  305. package/src/shared/types/index.ts +3 -0
  306. package/src/shared/types/providers/managed-stack.types.ts +6 -8
  307. package/src/shared/types/screen.types.ts +25 -0
  308. package/src/shared/types/stack.types.ts +11 -0
  309. package/src/shared/utils/create-provider.tsx +183 -8
  310. package/src/shared/utils/navigation/resolve-scene-neighbors.ts +9 -4
  311. package/src/shared/utils/navigation/sync-routes-with-removed.ts +38 -7
  312. package/src/shared/utils/visibility-block-offset.ts +4 -0
  313. package/lib/commonjs/blank-stack/components/stack-view.native.js +0 -64
  314. package/lib/commonjs/blank-stack/components/stack-view.native.js.map +0 -1
  315. package/lib/commonjs/shared/components/native-screen-container.js +0 -42
  316. package/lib/commonjs/shared/components/native-screen-container.js.map +0 -1
  317. package/lib/commonjs/shared/components/native-screen.js +0 -125
  318. package/lib/commonjs/shared/components/native-screen.js.map +0 -1
  319. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/helpers/align-routes-with-latest.js +0 -51
  320. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/helpers/align-routes-with-latest.js.map +0 -1
  321. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/helpers/are-descriptors-equal.js +0 -15
  322. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/helpers/are-descriptors-equal.js.map +0 -1
  323. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/helpers/have-same-route-keys.js +0 -14
  324. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/helpers/have-same-route-keys.js.map +0 -1
  325. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/helpers/routes-are-identical.js +0 -13
  326. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/helpers/routes-are-identical.js.map +0 -1
  327. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/index.js +0 -101
  328. package/lib/commonjs/shared/providers/stack/helpers/use-local-routes/index.js.map +0 -1
  329. package/lib/module/blank-stack/components/stack-view.native.js +0 -60
  330. package/lib/module/blank-stack/components/stack-view.native.js.map +0 -1
  331. package/lib/module/shared/components/native-screen-container.js +0 -37
  332. package/lib/module/shared/components/native-screen-container.js.map +0 -1
  333. package/lib/module/shared/components/native-screen.js +0 -119
  334. package/lib/module/shared/components/native-screen.js.map +0 -1
  335. package/lib/module/shared/providers/stack/helpers/use-local-routes/helpers/align-routes-with-latest.js +0 -47
  336. package/lib/module/shared/providers/stack/helpers/use-local-routes/helpers/align-routes-with-latest.js.map +0 -1
  337. package/lib/module/shared/providers/stack/helpers/use-local-routes/helpers/are-descriptors-equal.js +0 -10
  338. package/lib/module/shared/providers/stack/helpers/use-local-routes/helpers/are-descriptors-equal.js.map +0 -1
  339. package/lib/module/shared/providers/stack/helpers/use-local-routes/helpers/have-same-route-keys.js +0 -9
  340. package/lib/module/shared/providers/stack/helpers/use-local-routes/helpers/have-same-route-keys.js.map +0 -1
  341. package/lib/module/shared/providers/stack/helpers/use-local-routes/helpers/routes-are-identical.js +0 -8
  342. package/lib/module/shared/providers/stack/helpers/use-local-routes/helpers/routes-are-identical.js.map +0 -1
  343. package/lib/module/shared/providers/stack/helpers/use-local-routes/index.js +0 -95
  344. package/lib/module/shared/providers/stack/helpers/use-local-routes/index.js.map +0 -1
  345. package/lib/typescript/blank-stack/components/stack-view.native.d.ts +0 -3
  346. package/lib/typescript/blank-stack/components/stack-view.native.d.ts.map +0 -1
  347. package/lib/typescript/shared/components/native-screen-container.d.ts +0 -6
  348. package/lib/typescript/shared/components/native-screen-container.d.ts.map +0 -1
  349. package/lib/typescript/shared/components/native-screen.d.ts +0 -12
  350. package/lib/typescript/shared/components/native-screen.d.ts.map +0 -1
  351. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/helpers/align-routes-with-latest.d.ts +0 -10
  352. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/helpers/align-routes-with-latest.d.ts.map +0 -1
  353. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/helpers/are-descriptors-equal.d.ts +0 -2
  354. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/helpers/are-descriptors-equal.d.ts.map +0 -1
  355. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/helpers/have-same-route-keys.d.ts +0 -3
  356. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/helpers/have-same-route-keys.d.ts.map +0 -1
  357. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/helpers/routes-are-identical.d.ts +0 -3
  358. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/helpers/routes-are-identical.d.ts.map +0 -1
  359. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/index.d.ts +0 -19
  360. package/lib/typescript/shared/providers/stack/helpers/use-local-routes/index.d.ts.map +0 -1
  361. package/src/blank-stack/components/stack-view.native.tsx +0 -74
  362. package/src/shared/components/native-screen-container.tsx +0 -33
  363. package/src/shared/components/native-screen.tsx +0 -176
  364. package/src/shared/providers/stack/helpers/use-local-routes/helpers/align-routes-with-latest.ts +0 -65
  365. package/src/shared/providers/stack/helpers/use-local-routes/helpers/are-descriptors-equal.ts +0 -15
  366. package/src/shared/providers/stack/helpers/use-local-routes/helpers/have-same-route-keys.ts +0 -12
  367. package/src/shared/providers/stack/helpers/use-local-routes/helpers/routes-are-identical.ts +0 -11
  368. package/src/shared/providers/stack/helpers/use-local-routes/index.ts +0 -147
@@ -0,0 +1,194 @@
1
+ "use strict";
2
+
3
+ import { resolveSceneNeighbors } from "../../../../../utils/navigation/resolve-scene-neighbors";
4
+ import { isOverlayVisible } from "../../../../../utils/overlay/visibility";
5
+ import { areDescriptorSourcesEquivalent, areDescriptorsEqual, areRouteChildStateMapsEqual, getRouteChildState, setsAreEqual } from "./helpers";
6
+ const areRouteKeysEqual = (a, b) => {
7
+ if (a === b) return true;
8
+ if (a.length !== b.length) return false;
9
+ return a.every((key, index) => key === b[index]);
10
+ };
11
+ const resolveStableDescriptorSource = ({
12
+ routeKey,
13
+ sourceDescriptor,
14
+ previousState
15
+ }) => {
16
+ const previousSourceDescriptor = previousState?.sourceDescriptors[routeKey];
17
+ if (previousSourceDescriptor && areDescriptorSourcesEquivalent(previousSourceDescriptor, sourceDescriptor)) {
18
+ return previousSourceDescriptor;
19
+ }
20
+ return sourceDescriptor;
21
+ };
22
+ const getSceneActivity = ({
23
+ focusedIndex,
24
+ isClosing,
25
+ sceneIndex,
26
+ topIndex,
27
+ topIsClosing
28
+ }) => {
29
+ if (isClosing) {
30
+ return "closing";
31
+ }
32
+ if (topIsClosing) {
33
+ return sceneIndex === focusedIndex ? "inert" : "inactive";
34
+ }
35
+ if (sceneIndex === topIndex) {
36
+ return "active";
37
+ }
38
+ if (sceneIndex === topIndex - 1) {
39
+ return "inert";
40
+ }
41
+ return "inactive";
42
+ };
43
+ const getSceneActivityWindow = ({
44
+ props,
45
+ routes,
46
+ closingRouteKeys
47
+ }) => {
48
+ const focusedRouteKey = props.state.routes[props.state.index]?.key;
49
+ let focusedIndex = Math.max(0, routes.findIndex(route => route.key === focusedRouteKey));
50
+ while (focusedIndex > 0 && closingRouteKeys.has(routes[focusedIndex]?.key)) {
51
+ focusedIndex--;
52
+ }
53
+ const topIndex = routes.length - 1;
54
+ const topRoute = routes[topIndex];
55
+ const topIsClosing = topRoute !== undefined && closingRouteKeys.has(topRoute.key);
56
+ return {
57
+ focusedIndex,
58
+ topIndex,
59
+ topIsClosing
60
+ };
61
+ };
62
+ const withDescriptorActivityState = (descriptor, activity) => {
63
+ if (descriptor.activity === activity) {
64
+ return descriptor;
65
+ }
66
+ return {
67
+ ...descriptor,
68
+ activity
69
+ };
70
+ };
71
+ const buildBaseScenes = ({
72
+ routes,
73
+ descriptors,
74
+ closingRouteKeys,
75
+ previousState,
76
+ activityWindow
77
+ }) => {
78
+ const routeKeys = [];
79
+ const scenes = [];
80
+ const routeChildStates = {};
81
+ const sourceDescriptors = {};
82
+ const managedDescriptors = {};
83
+ let shouldShowFloatOverlay = false;
84
+ for (let sceneIndex = 0; sceneIndex < routes.length; sceneIndex++) {
85
+ const route = routes[sceneIndex];
86
+ const rawSourceDescriptor = descriptors[route.key];
87
+ if (!rawSourceDescriptor) {
88
+ throw new Error(`Missing descriptor for route "${route.key}"`);
89
+ }
90
+ const routeChildState = getRouteChildState(route);
91
+ const childStateUnchanged = !previousState || Object.is(previousState.routeChildStates[route.key], routeChildState);
92
+ const sourceDescriptor = childStateUnchanged ? resolveStableDescriptorSource({
93
+ routeKey: route.key,
94
+ sourceDescriptor: rawSourceDescriptor,
95
+ previousState
96
+ }) : rawSourceDescriptor;
97
+ const activity = getSceneActivity({
98
+ ...activityWindow,
99
+ isClosing: closingRouteKeys.has(route.key),
100
+ sceneIndex
101
+ });
102
+ const previousDescriptor = previousState?.descriptors[route.key];
103
+ const descriptor = previousDescriptor && childStateUnchanged && previousDescriptor.route === sourceDescriptor.route && previousDescriptor.navigation === sourceDescriptor.navigation && previousDescriptor.options === sourceDescriptor.options && previousDescriptor.activity === activity ? previousDescriptor : withDescriptorActivityState(sourceDescriptor, activity);
104
+ routeKeys.push(route.key);
105
+ routeChildStates[route.key] = routeChildState;
106
+ sourceDescriptors[route.key] = sourceDescriptor;
107
+ managedDescriptors[route.key] = descriptor;
108
+ if (!shouldShowFloatOverlay) {
109
+ shouldShowFloatOverlay = isOverlayVisible(sourceDescriptor?.options);
110
+ }
111
+ scenes.push({
112
+ route: descriptor.route,
113
+ descriptor
114
+ });
115
+ }
116
+ return {
117
+ scenes,
118
+ routeChildStates,
119
+ sourceDescriptors,
120
+ descriptors: managedDescriptors,
121
+ routeKeys,
122
+ shouldShowFloatOverlay
123
+ };
124
+ };
125
+ const withSceneRelationships = ({
126
+ scenes,
127
+ sourceDescriptors,
128
+ closingRouteKeys,
129
+ previousState
130
+ }) => {
131
+ const isRouteClosing = routeKey => closingRouteKeys.has(routeKey);
132
+ const closingRouteOrder = new Map(Array.from(closingRouteKeys, (routeKey, index) => [routeKey, index]));
133
+ const previousScenesByRouteKey = previousState ? new Map(previousState.scenes.map(scene => [scene.route.key, scene])) : undefined;
134
+ let reusedEveryScene = previousState !== undefined && scenes.length === previousState.scenes.length;
135
+ const relationshipScenes = scenes.map(scene => ({
136
+ route: scene.route,
137
+ descriptor: sourceDescriptors[scene.route.key] ?? scene.descriptor
138
+ }));
139
+ const nextScenes = scenes.map((scene, sceneIndex) => {
140
+ const {
141
+ previousDescriptor,
142
+ nextDescriptor
143
+ } = resolveSceneNeighbors(relationshipScenes, sceneIndex, isRouteClosing, routeKey => closingRouteOrder.get(routeKey));
144
+ const nextScene = {
145
+ ...scene,
146
+ previousDescriptor,
147
+ nextDescriptor
148
+ };
149
+ const previousScene = previousState?.scenes[sceneIndex]?.route === scene.route ? previousState.scenes[sceneIndex] : previousScenesByRouteKey?.get(scene.route.key);
150
+ if (previousScene && previousScene.route === nextScene.route && previousScene.descriptor === nextScene.descriptor && previousScene.previousDescriptor === nextScene.previousDescriptor && previousScene.nextDescriptor === nextScene.nextDescriptor) {
151
+ return previousScene;
152
+ }
153
+ reusedEveryScene = false;
154
+ return nextScene;
155
+ });
156
+ if (reusedEveryScene && previousState) {
157
+ return previousState.scenes;
158
+ }
159
+ return nextScenes;
160
+ };
161
+ export const buildManagedStackState = params => {
162
+ const activityWindow = getSceneActivityWindow(params);
163
+ const focusedRouteKey = params.props.state.routes[params.props.state.index]?.key;
164
+ const {
165
+ scenes: baseScenes,
166
+ routeChildStates,
167
+ sourceDescriptors,
168
+ descriptors: managedDescriptors,
169
+ routeKeys,
170
+ shouldShowFloatOverlay
171
+ } = buildBaseScenes({
172
+ ...params,
173
+ activityWindow
174
+ });
175
+ const scenes = withSceneRelationships({
176
+ scenes: baseScenes,
177
+ sourceDescriptors,
178
+ closingRouteKeys: params.closingRouteKeys,
179
+ previousState: params.previousState
180
+ });
181
+ const closingRouteKeys = new Set(params.closingRouteKeys);
182
+ return {
183
+ routes: params.routes,
184
+ descriptors: params.previousState && areDescriptorsEqual(params.previousState.descriptors, managedDescriptors) ? params.previousState.descriptors : managedDescriptors,
185
+ sourceDescriptors: params.previousState && areDescriptorsEqual(params.previousState.sourceDescriptors, sourceDescriptors) ? params.previousState.sourceDescriptors : sourceDescriptors,
186
+ focusedRouteKey,
187
+ routeChildStates: params.previousState && areRouteChildStateMapsEqual(params.previousState.routeChildStates, routeChildStates) ? params.previousState.routeChildStates : routeChildStates,
188
+ scenes,
189
+ routeKeys: params.previousState && areRouteKeysEqual(params.previousState.routeKeys, routeKeys) ? params.previousState.routeKeys : routeKeys,
190
+ shouldShowFloatOverlay,
191
+ closingRouteKeys: params.previousState && setsAreEqual(params.previousState.closingRouteKeys, closingRouteKeys) ? params.previousState.closingRouteKeys : closingRouteKeys
192
+ };
193
+ };
194
+ //# sourceMappingURL=build-managed-stack-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["resolveSceneNeighbors","isOverlayVisible","areDescriptorSourcesEquivalent","areDescriptorsEqual","areRouteChildStateMapsEqual","getRouteChildState","setsAreEqual","areRouteKeysEqual","a","b","length","every","key","index","resolveStableDescriptorSource","routeKey","sourceDescriptor","previousState","previousSourceDescriptor","sourceDescriptors","getSceneActivity","focusedIndex","isClosing","sceneIndex","topIndex","topIsClosing","getSceneActivityWindow","props","routes","closingRouteKeys","focusedRouteKey","state","Math","max","findIndex","route","has","topRoute","undefined","withDescriptorActivityState","descriptor","activity","buildBaseScenes","descriptors","activityWindow","routeKeys","scenes","routeChildStates","managedDescriptors","shouldShowFloatOverlay","rawSourceDescriptor","Error","routeChildState","childStateUnchanged","Object","is","previousDescriptor","navigation","options","push","withSceneRelationships","isRouteClosing","closingRouteOrder","Map","Array","from","previousScenesByRouteKey","map","scene","reusedEveryScene","relationshipScenes","nextScenes","nextDescriptor","get","nextScene","previousScene","buildManagedStackState","params","baseScenes","Set"],"sourceRoot":"../../../../../../../../src","sources":["shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ import { buildManagedStackState } from "./build-managed-stack-state";
4
+ import { areDescriptorSourceMapsEquivalent, areDescriptorsEqual, areRouteChildStateMapsEqual, getRouteChildStateMap, setsAreEqual } from "./helpers";
5
+ import { reconcileManagedRoutes } from "./reconcile-managed-routes";
6
+ const routesAreIdentical = (a, b) => {
7
+ if (a === b) return true;
8
+ if (a.length !== b.length) return false;
9
+ return a.every((route, index) => route === b[index]);
10
+ };
11
+ const routeKeysAreEqual = (a, b) => {
12
+ if (a.length !== b.length) return false;
13
+ return a.every((route, index) => route.key === b[index]?.key);
14
+ };
15
+ export const deriveManagedStackState = ({
16
+ props,
17
+ current,
18
+ previousRoutesSnapshot,
19
+ closingRouteKeys
20
+ }) => {
21
+ const nextRoutesSnapshot = props.state.routes;
22
+ const nextDescriptors = props.descriptors;
23
+ const nextRouteChildStates = getRouteChildStateMap(nextRoutesSnapshot);
24
+ const nextFocusedRouteKey = nextRoutesSnapshot[props.state.index]?.key;
25
+ const focusedRouteUnchanged = current.focusedRouteKey === nextFocusedRouteKey;
26
+ const closingRouteKeysUnchanged = setsAreEqual(current.closingRouteKeys, closingRouteKeys);
27
+ const routeChildStatesUnchanged = areRouteChildStateMapsEqual(current.routeChildStates, nextRouteChildStates);
28
+ const alreadyAligned = focusedRouteUnchanged && closingRouteKeysUnchanged && routeChildStatesUnchanged && routesAreIdentical(current.routes, nextRoutesSnapshot) && areDescriptorsEqual(current.sourceDescriptors, nextDescriptors);
29
+ if (alreadyAligned) {
30
+ return current;
31
+ }
32
+ const logicallyAligned = focusedRouteUnchanged && closingRouteKeysUnchanged && routeChildStatesUnchanged && routeKeysAreEqual(current.routes, nextRoutesSnapshot) && areDescriptorSourceMapsEquivalent(current.sourceDescriptors, nextDescriptors);
33
+ if (logicallyAligned) {
34
+ return current;
35
+ }
36
+ const result = reconcileManagedRoutes({
37
+ current,
38
+ previousRoutesSnapshot,
39
+ nextRoutesSnapshot,
40
+ nextDescriptors,
41
+ closingRouteKeys
42
+ });
43
+ const routesChanged = !routesAreIdentical(current.routes, result.routes);
44
+ const descriptorsChanged = !areDescriptorsEqual(current.sourceDescriptors, result.descriptors);
45
+ const closingRouteKeysChanged = !setsAreEqual(current.closingRouteKeys, closingRouteKeys);
46
+ if (!routesChanged && !descriptorsChanged && !closingRouteKeysChanged) {
47
+ return current;
48
+ }
49
+ return buildManagedStackState({
50
+ props,
51
+ routes: routesChanged ? result.routes : current.routes,
52
+ descriptors: descriptorsChanged ? result.descriptors : current.sourceDescriptors,
53
+ closingRouteKeys,
54
+ previousState: current
55
+ });
56
+ };
57
+ //# sourceMappingURL=derive-managed-stack-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["buildManagedStackState","areDescriptorSourceMapsEquivalent","areDescriptorsEqual","areRouteChildStateMapsEqual","getRouteChildStateMap","setsAreEqual","reconcileManagedRoutes","routesAreIdentical","a","b","length","every","route","index","routeKeysAreEqual","key","deriveManagedStackState","props","current","previousRoutesSnapshot","closingRouteKeys","nextRoutesSnapshot","state","routes","nextDescriptors","descriptors","nextRouteChildStates","nextFocusedRouteKey","focusedRouteUnchanged","focusedRouteKey","closingRouteKeysUnchanged","routeChildStatesUnchanged","routeChildStates","alreadyAligned","sourceDescriptors","logicallyAligned","result","routesChanged","descriptorsChanged","closingRouteKeysChanged","previousState"],"sourceRoot":"../../../../../../../../src","sources":["shared/providers/stack/helpers/managed-stack-state/helpers/derive-managed-stack-state.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ export const areDescriptorsEqual = (a, b) => {
4
+ if (a === b) return true;
5
+ const aKeys = Object.keys(a);
6
+ const bKeys = Object.keys(b);
7
+ if (aKeys.length !== bKeys.length) return false;
8
+ return aKeys.every(key => a[key] === b[key]);
9
+ };
10
+ export const setsAreEqual = (left, right) => {
11
+ if (left.size !== right.size) {
12
+ return false;
13
+ }
14
+ for (const value of left) {
15
+ if (!right.has(value)) {
16
+ return false;
17
+ }
18
+ }
19
+ return true;
20
+ };
21
+ export const getRouteChildState = route => {
22
+ if (!route || typeof route !== "object") {
23
+ return undefined;
24
+ }
25
+ const childStateSymbol = Object.getOwnPropertySymbols(route).find(symbol => symbol.description === "CHILD_STATE");
26
+ if (childStateSymbol && childStateSymbol in route) {
27
+ return route[childStateSymbol];
28
+ }
29
+ return route.state;
30
+ };
31
+ export const getRouteChildStateMap = routes => {
32
+ const childStates = {};
33
+ for (const route of routes) {
34
+ childStates[route.key] = getRouteChildState(route);
35
+ }
36
+ return childStates;
37
+ };
38
+ export const areRouteChildStateMapsEqual = (previous, next) => {
39
+ if (previous === next) return true;
40
+ const previousKeys = Object.keys(previous);
41
+ const nextKeys = Object.keys(next);
42
+ if (previousKeys.length !== nextKeys.length) return false;
43
+ return previousKeys.every(key => Object.is(previous[key], next[key]));
44
+ };
45
+ export const areRecordsShallowEqual = (a, b) => {
46
+ if (a === b) return true;
47
+ const aKeys = Object.keys(a);
48
+ const bKeys = Object.keys(b);
49
+ if (aKeys.length !== bKeys.length) return false;
50
+ return aKeys.every(key => Object.is(a[key], b[key]));
51
+ };
52
+ export const areDescriptorSourcesEquivalent = (previous, next) => {
53
+ return previous.navigation === next.navigation && areRecordsShallowEqual(previous.route, next.route) && areRecordsShallowEqual(previous.options, next.options);
54
+ };
55
+ export const areDescriptorSourceMapsEquivalent = (previous, next) => {
56
+ if (previous === next) return true;
57
+ const previousKeys = Object.keys(previous);
58
+ const nextKeys = Object.keys(next);
59
+ if (previousKeys.length !== nextKeys.length) return false;
60
+ return previousKeys.every(key => {
61
+ const previousDescriptor = previous[key];
62
+ const nextDescriptor = next[key];
63
+ if (!previousDescriptor || !nextDescriptor) {
64
+ return false;
65
+ }
66
+ return areDescriptorSourcesEquivalent(previousDescriptor, nextDescriptor);
67
+ });
68
+ };
69
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["areDescriptorsEqual","a","b","aKeys","Object","keys","bKeys","length","every","key","setsAreEqual","left","right","size","value","has","getRouteChildState","route","undefined","childStateSymbol","getOwnPropertySymbols","find","symbol","description","state","getRouteChildStateMap","routes","childStates","areRouteChildStateMapsEqual","previous","next","previousKeys","nextKeys","is","areRecordsShallowEqual","areDescriptorSourcesEquivalent","navigation","options","areDescriptorSourceMapsEquivalent","previousDescriptor","nextDescriptor"],"sourceRoot":"../../../../../../../../src","sources":["shared/providers/stack/helpers/managed-stack-state/helpers/helpers.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ import { composeDescriptors } from "../../../../../utils/navigation/compose-descriptors";
4
+ import { syncRoutesWithRemoved } from "../../../../../utils/navigation/sync-routes-with-removed";
5
+ const haveSameRouteKeys = (previous, next) => {
6
+ if (previous.length !== next.length) {
7
+ return false;
8
+ }
9
+ return previous.every((route, index) => route?.key === next[index]?.key);
10
+ };
11
+ const alignRoutesWithLatest = (currentRoutes, currentDescriptors, nextRoutes, nextDescriptors) => {
12
+ if (currentRoutes.length === 0) {
13
+ return {
14
+ routes: nextRoutes,
15
+ descriptors: composeDescriptors(nextRoutes, nextDescriptors, currentDescriptors)
16
+ };
17
+ }
18
+ const nextRouteLookup = new Map();
19
+ for (const route of nextRoutes) {
20
+ nextRouteLookup.set(route.key, route);
21
+ }
22
+ let didChange = currentRoutes.length !== nextRoutes.length;
23
+ const alignedRoutes = currentRoutes.map(route => {
24
+ const nextRoute = nextRouteLookup.get(route.key);
25
+ if (!nextRoute) {
26
+ return route;
27
+ }
28
+ if (nextRoute !== route) {
29
+ didChange = true;
30
+ return nextRoute;
31
+ }
32
+ return route;
33
+ });
34
+ const routesResult = didChange ? alignedRoutes : currentRoutes;
35
+ return {
36
+ routes: routesResult,
37
+ descriptors: composeDescriptors(routesResult, nextDescriptors, currentDescriptors)
38
+ };
39
+ };
40
+ const acceptAlreadyClosingRouteRemovals = ({
41
+ current,
42
+ previousRoutesSnapshot,
43
+ nextRoutesSnapshot,
44
+ nextDescriptors,
45
+ closingRouteKeys
46
+ }) => {
47
+ const nextRouteKeys = new Set(nextRoutesSnapshot.map(route => route.key));
48
+ const acceptedRemovedKeys = new Set();
49
+ for (const route of previousRoutesSnapshot) {
50
+ if (nextRouteKeys.has(route.key)) {
51
+ continue;
52
+ }
53
+ if (!closingRouteKeys.has(route.key)) {
54
+ continue;
55
+ }
56
+ acceptedRemovedKeys.add(route.key);
57
+ closingRouteKeys.delete(route.key);
58
+ }
59
+ if (acceptedRemovedKeys.size === 0) {
60
+ return null;
61
+ }
62
+ const remainingClosingRoutes = current.routes.filter(route => {
63
+ if (nextRouteKeys.has(route.key)) {
64
+ return false;
65
+ }
66
+ if (acceptedRemovedKeys.has(route.key)) {
67
+ return false;
68
+ }
69
+ return closingRouteKeys.has(route.key);
70
+ });
71
+ const routes = [...nextRoutesSnapshot, ...remainingClosingRoutes];
72
+ const descriptors = {
73
+ ...nextDescriptors
74
+ };
75
+ for (const route of remainingClosingRoutes) {
76
+ const descriptor = current.sourceDescriptors[route.key];
77
+ if (descriptor) {
78
+ descriptors[route.key] = descriptor;
79
+ }
80
+ }
81
+ return {
82
+ routes,
83
+ descriptors
84
+ };
85
+ };
86
+ export const reconcileManagedRoutes = params => {
87
+ const {
88
+ current,
89
+ previousRoutesSnapshot,
90
+ nextRoutesSnapshot,
91
+ nextDescriptors,
92
+ closingRouteKeys
93
+ } = params;
94
+ const routeKeysUnchanged = haveSameRouteKeys(previousRoutesSnapshot, nextRoutesSnapshot);
95
+ if (routeKeysUnchanged) {
96
+ const result = alignRoutesWithLatest(current.routes, current.sourceDescriptors, nextRoutesSnapshot, nextDescriptors);
97
+ return {
98
+ routes: result.routes,
99
+ descriptors: result.descriptors
100
+ };
101
+ }
102
+ const acceptedRemoval = acceptAlreadyClosingRouteRemovals(params);
103
+ if (acceptedRemoval) {
104
+ return acceptedRemoval;
105
+ }
106
+ const result = syncRoutesWithRemoved({
107
+ prevRoutes: previousRoutesSnapshot.length > 0 ? previousRoutesSnapshot : current.routes,
108
+ prevDescriptors: current.sourceDescriptors,
109
+ nextRoutes: nextRoutesSnapshot,
110
+ nextDescriptors,
111
+ closingRouteKeys
112
+ });
113
+ return {
114
+ routes: result.routes,
115
+ descriptors: result.descriptors
116
+ };
117
+ };
118
+ //# sourceMappingURL=reconcile-managed-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["composeDescriptors","syncRoutesWithRemoved","haveSameRouteKeys","previous","next","length","every","route","index","key","alignRoutesWithLatest","currentRoutes","currentDescriptors","nextRoutes","nextDescriptors","routes","descriptors","nextRouteLookup","Map","set","didChange","alignedRoutes","map","nextRoute","get","routesResult","acceptAlreadyClosingRouteRemovals","current","previousRoutesSnapshot","nextRoutesSnapshot","closingRouteKeys","nextRouteKeys","Set","acceptedRemovedKeys","has","add","delete","size","remainingClosingRoutes","filter","descriptor","sourceDescriptors","reconcileManagedRoutes","params","routeKeysUnchanged","result","acceptedRemoval","prevRoutes","prevDescriptors"],"sourceRoot":"../../../../../../../../src","sources":["shared/providers/stack/helpers/managed-stack-state/helpers/reconcile-managed-routes.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../../../../../../src","sources":["shared/providers/stack/helpers/managed-stack-state/helpers/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ import { useRef, useSyncExternalStore } from "react";
4
+ import { createManagedStackController } from "./managed-stack-controller";
5
+ export const useManagedStackState = props => {
6
+ const controllerRef = useRef(undefined);
7
+ if (!controllerRef.current) {
8
+ controllerRef.current = createManagedStackController(props);
9
+ }
10
+ const controller = controllerRef.current;
11
+ controller.update(props);
12
+ const snapshot = useSyncExternalStore(controller.subscribe, controller.getSnapshot, controller.getSnapshot);
13
+ return {
14
+ state: snapshot.state,
15
+ handleCloseRoute: controller.handleCloseRoute,
16
+ requestDismiss: controller.requestDismiss
17
+ };
18
+ };
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useRef","useSyncExternalStore","createManagedStackController","useManagedStackState","props","controllerRef","undefined","current","controller","update","snapshot","subscribe","getSnapshot","state","handleCloseRoute","requestDismiss"],"sourceRoot":"../../../../../../../src","sources":["shared/providers/stack/helpers/managed-stack-state/index.ts"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,oBAAoB,QAAQ,OAAO;AAMpD,SACCC,4BAA4B,QAEtB,4BAA4B;AAEnC,OAAO,MAAMC,oBAAoB,GAIhCC,KAAkD,IAC9C;EACJ,MAAMC,aAAa,GAAGL,MAAM,CAE1BM,SAAS,CAAC;EAEZ,IAAI,CAACD,aAAa,CAACE,OAAO,EAAE;IAC3BF,aAAa,CAACE,OAAO,GAAGL,4BAA4B,CAACE,KAAK,CAAC;EAC5D;EAEA,MAAMI,UAAU,GAAGH,aAAa,CAACE,OAAO;EACxCC,UAAU,CAACC,MAAM,CAACL,KAAK,CAAC;EAExB,MAAMM,QAAQ,GAAGT,oBAAoB,CACpCO,UAAU,CAACG,SAAS,EACpBH,UAAU,CAACI,WAAW,EACtBJ,UAAU,CAACI,WACZ,CAAC;EAED,OAAO;IACNC,KAAK,EAAEH,QAAQ,CAACG,KAAK;IACrBC,gBAAgB,EAAEN,UAAU,CAACM,gBAAgB;IAC7CC,cAAc,EAAEP,UAAU,CAACO;EAC5B,CAAC;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+
3
+ import { StackActions } from "@react-navigation/native";
4
+ import { buildManagedStackState } from "./helpers/build-managed-stack-state";
5
+ import { deriveManagedStackState } from "./helpers/derive-managed-stack-state";
6
+ /**
7
+ * Maintains the stack-local route snapshot used while managed transitions run.
8
+ *
9
+ * React Navigation remains the source of truth for settled routes, but it can
10
+ * remove descriptors before our close animation has finished. This controller
11
+ * keeps those closing routes locally until their lifecycle reports completion.
12
+ */
13
+ export const createManagedStackController = initialProps => {
14
+ const closingRouteKeys = new Set();
15
+ let props = initialProps;
16
+ let previousPropRoutes = initialProps.state.routes;
17
+ let snapshot = {
18
+ state: buildManagedStackState({
19
+ props,
20
+ routes: initialProps.state.routes,
21
+ descriptors: initialProps.descriptors,
22
+ closingRouteKeys
23
+ })
24
+ };
25
+ const listeners = new Set();
26
+ const emit = () => {
27
+ for (const listener of listeners) {
28
+ listener();
29
+ }
30
+ };
31
+ const subscribe = listener => {
32
+ listeners.add(listener);
33
+ return () => {
34
+ listeners.delete(listener);
35
+ };
36
+ };
37
+ const getSnapshot = () => {
38
+ return snapshot;
39
+ };
40
+ const update = nextProps => {
41
+ const previousRoutesSnapshot = previousPropRoutes;
42
+ props = nextProps;
43
+ const nextState = deriveManagedStackState({
44
+ props,
45
+ current: snapshot.state,
46
+ previousRoutesSnapshot,
47
+ closingRouteKeys
48
+ });
49
+ previousPropRoutes = nextProps.state.routes;
50
+ if (nextState === snapshot.state) {
51
+ return;
52
+ }
53
+ snapshot = {
54
+ state: nextState
55
+ };
56
+ };
57
+ const handleCloseRoute = ({
58
+ route
59
+ }) => {
60
+ const {
61
+ state,
62
+ navigation
63
+ } = props;
64
+ if (state.routes.some(candidate => candidate.key === route.key)) {
65
+ navigation.dispatch({
66
+ ...StackActions.pop(),
67
+ source: route.key,
68
+ target: state.key
69
+ });
70
+ return;
71
+ }
72
+ closingRouteKeys.delete(route.key);
73
+ const current = snapshot.state;
74
+ const routeExists = current.routes.some(candidate => candidate.key === route.key);
75
+ if (!routeExists) {
76
+ return;
77
+ }
78
+ const nextRoutes = current.routes.filter(candidate => candidate.key !== route.key);
79
+ const nextDescriptors = {
80
+ ...current.sourceDescriptors
81
+ };
82
+ delete nextDescriptors[route.key];
83
+ snapshot = {
84
+ state: buildManagedStackState({
85
+ props,
86
+ routes: nextRoutes,
87
+ descriptors: nextDescriptors,
88
+ closingRouteKeys,
89
+ previousState: current
90
+ })
91
+ };
92
+ emit();
93
+ };
94
+ const requestDismiss = ({
95
+ route
96
+ }) => {
97
+ const current = snapshot.state;
98
+ const routeIndex = current.routes.findIndex(candidate => candidate.key === route.key);
99
+ if (routeIndex <= 0) {
100
+ return false;
101
+ }
102
+ if (closingRouteKeys.has(route.key)) {
103
+ return true;
104
+ }
105
+ closingRouteKeys.add(route.key);
106
+ snapshot = {
107
+ state: buildManagedStackState({
108
+ props,
109
+ routes: current.routes,
110
+ descriptors: current.sourceDescriptors,
111
+ closingRouteKeys,
112
+ previousState: current
113
+ })
114
+ };
115
+ emit();
116
+ return true;
117
+ };
118
+ return {
119
+ subscribe,
120
+ getSnapshot,
121
+ update,
122
+ handleCloseRoute,
123
+ requestDismiss
124
+ };
125
+ };
126
+ //# sourceMappingURL=managed-stack-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StackActions","buildManagedStackState","deriveManagedStackState","createManagedStackController","initialProps","closingRouteKeys","Set","props","previousPropRoutes","state","routes","snapshot","descriptors","listeners","emit","listener","subscribe","add","delete","getSnapshot","update","nextProps","previousRoutesSnapshot","nextState","current","handleCloseRoute","route","navigation","some","candidate","key","dispatch","pop","source","target","routeExists","nextRoutes","filter","nextDescriptors","sourceDescriptors","previousState","requestDismiss","routeIndex","findIndex","has"],"sourceRoot":"../../../../../../../src","sources":["shared/providers/stack/helpers/managed-stack-state/managed-stack-controller.ts"],"mappings":"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","ignoreList":[]}