react-native-screen-transitions 3.13.0-beta.0 → 3.13.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 (433) hide show
  1. package/README.md +14 -0
  2. package/lib/commonjs/shared/adapters/with-screen-transitions/stack-layout.js +1 -2
  3. package/lib/commonjs/shared/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  4. package/lib/commonjs/shared/components/activity/helpers.js +50 -1
  5. package/lib/commonjs/shared/components/activity/helpers.js.map +1 -1
  6. package/lib/commonjs/shared/components/activity/variants/activity-screen.js +16 -67
  7. package/lib/commonjs/shared/components/activity/variants/activity-screen.js.map +1 -1
  8. package/lib/commonjs/shared/components/boundary/components/boundary-target.js +1 -1
  9. package/lib/commonjs/shared/components/boundary/components/boundary-target.js.map +1 -1
  10. package/lib/commonjs/shared/components/boundary/create-boundary-component.js +5 -1
  11. package/lib/commonjs/shared/components/boundary/create-boundary-component.js.map +1 -1
  12. package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js +2 -1
  13. package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  14. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js +8 -0
  15. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js.map +1 -1
  16. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +3 -4
  17. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  18. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +1 -6
  19. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  20. package/lib/commonjs/shared/components/boundary/portal/teleport.js +1 -13
  21. package/lib/commonjs/shared/components/boundary/portal/teleport.js.map +1 -1
  22. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js +6 -6
  23. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  24. package/lib/commonjs/shared/components/overlay/helpers/create-overlay-interpolator-frame.js +9 -2
  25. package/lib/commonjs/shared/components/overlay/helpers/create-overlay-interpolator-frame.js.map +1 -1
  26. package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js +16 -4
  27. package/lib/commonjs/shared/components/overlay/helpers/get-active-overlay.js.map +1 -1
  28. package/lib/commonjs/shared/components/overlay/hooks/use-overlay-slot.js +11 -6
  29. package/lib/commonjs/shared/components/overlay/hooks/use-overlay-slot.js.map +1 -1
  30. package/lib/commonjs/shared/components/overlay/variations/overlay-host.js +5 -4
  31. package/lib/commonjs/shared/components/overlay/variations/overlay-host.js.map +1 -1
  32. package/lib/commonjs/shared/components/screen-container/layers/content.js +1 -3
  33. package/lib/commonjs/shared/components/screen-container/layers/content.js.map +1 -1
  34. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +8 -6
  35. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  36. package/lib/commonjs/shared/factories/screen-topology/create-screen-topology.js +147 -0
  37. package/lib/commonjs/shared/factories/screen-topology/create-screen-topology.js.map +1 -0
  38. package/lib/commonjs/shared/factories/screen-topology/index.js +45 -0
  39. package/lib/commonjs/shared/factories/screen-topology/index.js.map +1 -0
  40. package/lib/commonjs/shared/factories/screen-topology/types.js +2 -0
  41. package/lib/commonjs/shared/factories/screen-topology/types.js.map +1 -0
  42. package/lib/commonjs/shared/factories/screen-topology/use-screen-relationships.js +15 -0
  43. package/lib/commonjs/shared/factories/screen-topology/use-screen-relationships.js.map +1 -0
  44. package/lib/commonjs/shared/factories/screen-topology/worklet.js +55 -0
  45. package/lib/commonjs/shared/factories/screen-topology/worklet.js.map +1 -0
  46. package/lib/commonjs/shared/hooks/navigation/use-screen-state.js.map +1 -1
  47. package/lib/commonjs/shared/hooks/navigation/use-stack.js +16 -16
  48. package/lib/commonjs/shared/hooks/navigation/use-stack.js.map +1 -1
  49. package/lib/commonjs/shared/providers/screen/animation/animation.provider.js +26 -98
  50. package/lib/commonjs/shared/providers/screen/animation/animation.provider.js.map +1 -1
  51. package/lib/commonjs/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +6 -52
  52. package/lib/commonjs/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
  53. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js +14 -25
  54. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  55. package/lib/commonjs/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js +4 -13
  56. package/lib/commonjs/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js.map +1 -1
  57. package/lib/commonjs/shared/providers/screen/animation/helpers/stack-progress.js +10 -26
  58. package/lib/commonjs/shared/providers/screen/animation/helpers/stack-progress.js.map +1 -1
  59. package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js +0 -1
  60. package/lib/commonjs/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
  61. package/lib/commonjs/shared/providers/screen/animation/index.js +6 -0
  62. package/lib/commonjs/shared/providers/screen/animation/index.js.map +1 -1
  63. package/lib/commonjs/shared/providers/screen/animation/use-screen-animation.js +8 -7
  64. package/lib/commonjs/shared/providers/screen/animation/use-screen-animation.js.map +1 -1
  65. package/lib/commonjs/shared/providers/screen/descriptors/descriptors.provider.js +40 -25
  66. package/lib/commonjs/shared/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  67. package/lib/commonjs/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.js +1 -4
  68. package/lib/commonjs/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.js.map +1 -1
  69. package/lib/commonjs/shared/providers/screen/gestures/gestures.provider.js +24 -19
  70. package/lib/commonjs/shared/providers/screen/gestures/gestures.provider.js.map +1 -1
  71. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js +3 -3
  72. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  73. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture.js +2 -3
  74. package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture.js.map +1 -1
  75. package/lib/commonjs/shared/providers/screen/gestures/index.js +8 -2
  76. package/lib/commonjs/shared/providers/screen/gestures/index.js.map +1 -1
  77. package/lib/commonjs/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js +11 -18
  78. package/lib/commonjs/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js.map +1 -1
  79. package/lib/commonjs/shared/providers/screen/gestures/ownership/resolve-ownership.js +5 -7
  80. package/lib/commonjs/shared/providers/screen/gestures/ownership/resolve-ownership.js.map +1 -1
  81. package/lib/commonjs/shared/providers/screen/gestures/pan/activation/use-pan-activation.js +4 -1
  82. package/lib/commonjs/shared/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  83. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js +5 -8
  84. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js.map +1 -1
  85. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +5 -4
  86. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  87. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js +1 -3
  88. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js.map +1 -1
  89. package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js +4 -4
  90. package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js.map +1 -1
  91. package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js +4 -2
  92. package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -1
  93. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +5 -8
  94. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  95. package/lib/commonjs/shared/providers/screen/styles/index.js +8 -2
  96. package/lib/commonjs/shared/providers/screen/styles/index.js.map +1 -1
  97. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js +17 -19
  98. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js.map +1 -1
  99. package/lib/commonjs/shared/providers/screen/use-current-screen-relationships.js +14 -0
  100. package/lib/commonjs/shared/providers/screen/use-current-screen-relationships.js.map +1 -0
  101. package/lib/commonjs/shared/providers/stack/blank-stack.provider.js +13 -5
  102. package/lib/commonjs/shared/providers/stack/blank-stack.provider.js.map +1 -1
  103. package/lib/commonjs/shared/providers/stack/core.provider.js +1 -3
  104. package/lib/commonjs/shared/providers/stack/core.provider.js.map +1 -1
  105. package/lib/commonjs/shared/providers/stack/direct.provider.js +2 -5
  106. package/lib/commonjs/shared/providers/stack/direct.provider.js.map +1 -1
  107. package/lib/commonjs/shared/stores/animation.store.js +0 -2
  108. package/lib/commonjs/shared/stores/animation.store.js.map +1 -1
  109. package/lib/commonjs/shared/stores/bounds/internals/coordinator.js +23 -9
  110. package/lib/commonjs/shared/stores/bounds/internals/coordinator.js.map +1 -1
  111. package/lib/commonjs/shared/stores/bounds/internals/links.js +2 -2
  112. package/lib/commonjs/shared/stores/bounds/internals/links.js.map +1 -1
  113. package/lib/commonjs/shared/stores/bounds/internals/state.js +1 -1
  114. package/lib/commonjs/shared/utils/create-provider.js +51 -100
  115. package/lib/commonjs/shared/utils/create-provider.js.map +1 -1
  116. package/lib/module/shared/adapters/with-screen-transitions/stack-layout.js +1 -2
  117. package/lib/module/shared/adapters/with-screen-transitions/stack-layout.js.map +1 -1
  118. package/lib/module/shared/components/activity/helpers.js +48 -0
  119. package/lib/module/shared/components/activity/helpers.js.map +1 -1
  120. package/lib/module/shared/components/activity/variants/activity-screen.js +17 -68
  121. package/lib/module/shared/components/activity/variants/activity-screen.js.map +1 -1
  122. package/lib/module/shared/components/boundary/components/boundary-target.js +2 -2
  123. package/lib/module/shared/components/boundary/components/boundary-target.js.map +1 -1
  124. package/lib/module/shared/components/boundary/create-boundary-component.js +6 -2
  125. package/lib/module/shared/components/boundary/create-boundary-component.js.map +1 -1
  126. package/lib/module/shared/components/boundary/hooks/use-measurer.js +3 -2
  127. package/lib/module/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  128. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js +8 -0
  129. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.js.map +1 -1
  130. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +4 -5
  131. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  132. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +2 -7
  133. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  134. package/lib/module/shared/components/boundary/portal/teleport.js +1 -14
  135. package/lib/module/shared/components/boundary/portal/teleport.js.map +1 -1
  136. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js +5 -6
  137. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  138. package/lib/module/shared/components/overlay/helpers/create-overlay-interpolator-frame.js +7 -1
  139. package/lib/module/shared/components/overlay/helpers/create-overlay-interpolator-frame.js.map +1 -1
  140. package/lib/module/shared/components/overlay/helpers/get-active-overlay.js +16 -4
  141. package/lib/module/shared/components/overlay/helpers/get-active-overlay.js.map +1 -1
  142. package/lib/module/shared/components/overlay/hooks/use-overlay-slot.js +12 -7
  143. package/lib/module/shared/components/overlay/hooks/use-overlay-slot.js.map +1 -1
  144. package/lib/module/shared/components/overlay/variations/overlay-host.js +7 -6
  145. package/lib/module/shared/components/overlay/variations/overlay-host.js.map +1 -1
  146. package/lib/module/shared/components/screen-container/layers/content.js +2 -3
  147. package/lib/module/shared/components/screen-container/layers/content.js.map +1 -1
  148. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +9 -7
  149. package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
  150. package/lib/module/shared/factories/screen-topology/create-screen-topology.js +142 -0
  151. package/lib/module/shared/factories/screen-topology/create-screen-topology.js.map +1 -0
  152. package/lib/module/shared/factories/screen-topology/index.js +6 -0
  153. package/lib/module/shared/factories/screen-topology/index.js.map +1 -0
  154. package/lib/module/shared/factories/screen-topology/types.js +2 -0
  155. package/lib/module/shared/factories/screen-topology/types.js.map +1 -0
  156. package/lib/module/shared/factories/screen-topology/use-screen-relationships.js +10 -0
  157. package/lib/module/shared/factories/screen-topology/use-screen-relationships.js.map +1 -0
  158. package/lib/module/shared/factories/screen-topology/worklet.js +48 -0
  159. package/lib/module/shared/factories/screen-topology/worklet.js.map +1 -0
  160. package/lib/module/shared/hooks/navigation/use-screen-state.js.map +1 -1
  161. package/lib/module/shared/hooks/navigation/use-stack.js +17 -18
  162. package/lib/module/shared/hooks/navigation/use-stack.js.map +1 -1
  163. package/lib/module/shared/providers/screen/animation/animation.provider.js +25 -98
  164. package/lib/module/shared/providers/screen/animation/animation.provider.js.map +1 -1
  165. package/lib/module/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +6 -52
  166. package/lib/module/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
  167. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js +16 -27
  168. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  169. package/lib/module/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js +4 -13
  170. package/lib/module/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js.map +1 -1
  171. package/lib/module/shared/providers/screen/animation/helpers/stack-progress.js +9 -24
  172. package/lib/module/shared/providers/screen/animation/helpers/stack-progress.js.map +1 -1
  173. package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js +0 -1
  174. package/lib/module/shared/providers/screen/animation/helpers/use-build-transition-state.js.map +1 -1
  175. package/lib/module/shared/providers/screen/animation/index.js +1 -1
  176. package/lib/module/shared/providers/screen/animation/index.js.map +1 -1
  177. package/lib/module/shared/providers/screen/animation/use-screen-animation.js +9 -8
  178. package/lib/module/shared/providers/screen/animation/use-screen-animation.js.map +1 -1
  179. package/lib/module/shared/providers/screen/descriptors/descriptors.provider.js +43 -27
  180. package/lib/module/shared/providers/screen/descriptors/descriptors.provider.js.map +1 -1
  181. package/lib/module/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.js +1 -4
  182. package/lib/module/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.js.map +1 -1
  183. package/lib/module/shared/providers/screen/gestures/gestures.provider.js +21 -17
  184. package/lib/module/shared/providers/screen/gestures/gestures.provider.js.map +1 -1
  185. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js +3 -3
  186. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
  187. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture.js +3 -4
  188. package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture.js.map +1 -1
  189. package/lib/module/shared/providers/screen/gestures/index.js +1 -1
  190. package/lib/module/shared/providers/screen/gestures/index.js.map +1 -1
  191. package/lib/module/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js +13 -20
  192. package/lib/module/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.js.map +1 -1
  193. package/lib/module/shared/providers/screen/gestures/ownership/resolve-ownership.js +5 -7
  194. package/lib/module/shared/providers/screen/gestures/ownership/resolve-ownership.js.map +1 -1
  195. package/lib/module/shared/providers/screen/gestures/pan/activation/use-pan-activation.js +4 -1
  196. package/lib/module/shared/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  197. package/lib/module/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js +4 -8
  198. package/lib/module/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.js.map +1 -1
  199. package/lib/module/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +7 -6
  200. package/lib/module/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  201. package/lib/module/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js +1 -3
  202. package/lib/module/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.js.map +1 -1
  203. package/lib/module/shared/providers/screen/gestures/shared/policy.js +4 -4
  204. package/lib/module/shared/providers/screen/gestures/shared/policy.js.map +1 -1
  205. package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js +5 -3
  206. package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -1
  207. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +5 -8
  208. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  209. package/lib/module/shared/providers/screen/styles/index.js +1 -1
  210. package/lib/module/shared/providers/screen/styles/index.js.map +1 -1
  211. package/lib/module/shared/providers/screen/styles/slot.provider.js +14 -16
  212. package/lib/module/shared/providers/screen/styles/slot.provider.js.map +1 -1
  213. package/lib/module/shared/providers/screen/use-current-screen-relationships.js +9 -0
  214. package/lib/module/shared/providers/screen/use-current-screen-relationships.js.map +1 -0
  215. package/lib/module/shared/providers/stack/blank-stack.provider.js +12 -5
  216. package/lib/module/shared/providers/stack/blank-stack.provider.js.map +1 -1
  217. package/lib/module/shared/providers/stack/core.provider.js +1 -3
  218. package/lib/module/shared/providers/stack/core.provider.js.map +1 -1
  219. package/lib/module/shared/providers/stack/direct.provider.js +2 -5
  220. package/lib/module/shared/providers/stack/direct.provider.js.map +1 -1
  221. package/lib/module/shared/stores/animation.store.js +0 -2
  222. package/lib/module/shared/stores/animation.store.js.map +1 -1
  223. package/lib/module/shared/stores/bounds/internals/coordinator.js +18 -4
  224. package/lib/module/shared/stores/bounds/internals/coordinator.js.map +1 -1
  225. package/lib/module/shared/stores/bounds/internals/links.js +1 -1
  226. package/lib/module/shared/stores/bounds/internals/links.js.map +1 -1
  227. package/lib/module/shared/stores/bounds/internals/state.js +1 -1
  228. package/lib/module/shared/utils/create-provider.js +51 -100
  229. package/lib/module/shared/utils/create-provider.js.map +1 -1
  230. package/lib/typescript/native-stack/views/useHeaderConfigProps.d.ts +1 -1
  231. package/lib/typescript/shared/adapters/with-screen-transitions/stack-layout.d.ts.map +1 -1
  232. package/lib/typescript/shared/components/activity/helpers.d.ts +16 -0
  233. package/lib/typescript/shared/components/activity/helpers.d.ts.map +1 -1
  234. package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts +2 -4
  235. package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts.map +1 -1
  236. package/lib/typescript/shared/components/boundary/create-boundary-component.d.ts.map +1 -1
  237. package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts.map +1 -1
  238. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.d.ts +2 -1
  239. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.d.ts.map +1 -1
  240. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts.map +1 -1
  241. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -1
  242. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-placeholder-styles.d.ts +2 -2
  243. package/lib/typescript/shared/components/boundary/portal/teleport.d.ts +1 -1
  244. package/lib/typescript/shared/components/boundary/portal/teleport.d.ts.map +1 -1
  245. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts +3 -0
  246. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
  247. package/lib/typescript/shared/components/overlay/helpers/create-overlay-interpolator-frame.d.ts +1 -0
  248. package/lib/typescript/shared/components/overlay/helpers/create-overlay-interpolator-frame.d.ts.map +1 -1
  249. package/lib/typescript/shared/components/overlay/helpers/get-active-overlay.d.ts.map +1 -1
  250. package/lib/typescript/shared/components/overlay/hooks/use-overlay-slot.d.ts +3 -2
  251. package/lib/typescript/shared/components/overlay/hooks/use-overlay-slot.d.ts.map +1 -1
  252. package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts.map +1 -1
  253. package/lib/typescript/shared/components/screen-container/layers/content.d.ts.map +1 -1
  254. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts +1 -1
  255. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts.map +1 -1
  256. package/lib/typescript/shared/factories/screen-topology/create-screen-topology.d.ts +4 -0
  257. package/lib/typescript/shared/factories/screen-topology/create-screen-topology.d.ts.map +1 -0
  258. package/lib/typescript/shared/factories/screen-topology/index.d.ts +5 -0
  259. package/lib/typescript/shared/factories/screen-topology/index.d.ts.map +1 -0
  260. package/lib/typescript/shared/factories/screen-topology/types.d.ts +20 -0
  261. package/lib/typescript/shared/factories/screen-topology/types.d.ts.map +1 -0
  262. package/lib/typescript/shared/factories/screen-topology/use-screen-relationships.d.ts +5 -0
  263. package/lib/typescript/shared/factories/screen-topology/use-screen-relationships.d.ts.map +1 -0
  264. package/lib/typescript/shared/factories/screen-topology/worklet.d.ts +5 -0
  265. package/lib/typescript/shared/factories/screen-topology/worklet.d.ts.map +1 -0
  266. package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts.map +1 -1
  267. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts +2 -0
  268. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts.map +1 -1
  269. package/lib/typescript/shared/index.d.ts +0 -6
  270. package/lib/typescript/shared/index.d.ts.map +1 -1
  271. package/lib/typescript/shared/providers/screen/animation/animation.provider.d.ts +14 -12
  272. package/lib/typescript/shared/providers/screen/animation/animation.provider.d.ts.map +1 -1
  273. package/lib/typescript/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts +4 -4
  274. package/lib/typescript/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts.map +1 -1
  275. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/types.d.ts +0 -1
  276. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/types.d.ts.map +1 -1
  277. package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts +1 -2
  278. package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
  279. package/lib/typescript/shared/providers/screen/animation/helpers/read-screen-animation-revisions.d.ts +2 -2
  280. package/lib/typescript/shared/providers/screen/animation/helpers/read-screen-animation-revisions.d.ts.map +1 -1
  281. package/lib/typescript/shared/providers/screen/animation/helpers/stack-progress.d.ts +5 -2
  282. package/lib/typescript/shared/providers/screen/animation/helpers/stack-progress.d.ts.map +1 -1
  283. package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts +0 -1
  284. package/lib/typescript/shared/providers/screen/animation/helpers/use-build-transition-state.d.ts.map +1 -1
  285. package/lib/typescript/shared/providers/screen/animation/index.d.ts +1 -1
  286. package/lib/typescript/shared/providers/screen/animation/index.d.ts.map +1 -1
  287. package/lib/typescript/shared/providers/screen/animation/types.d.ts +1 -13
  288. package/lib/typescript/shared/providers/screen/animation/types.d.ts.map +1 -1
  289. package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts +5 -2
  290. package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts.map +1 -1
  291. package/lib/typescript/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.d.ts +1 -4
  292. package/lib/typescript/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.d.ts.map +1 -1
  293. package/lib/typescript/shared/providers/screen/gestures/gestures.provider.d.ts +16 -4
  294. package/lib/typescript/shared/providers/screen/gestures/gestures.provider.d.ts.map +1 -1
  295. package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts +2 -2
  296. package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts.map +1 -1
  297. package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture.d.ts.map +1 -1
  298. package/lib/typescript/shared/providers/screen/gestures/index.d.ts +1 -1
  299. package/lib/typescript/shared/providers/screen/gestures/index.d.ts.map +1 -1
  300. package/lib/typescript/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.d.ts.map +1 -1
  301. package/lib/typescript/shared/providers/screen/gestures/ownership/resolve-ownership.d.ts +2 -3
  302. package/lib/typescript/shared/providers/screen/gestures/ownership/resolve-ownership.d.ts.map +1 -1
  303. package/lib/typescript/shared/providers/screen/gestures/pan/activation/use-pan-activation.d.ts.map +1 -1
  304. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.d.ts +5 -3
  305. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.d.ts.map +1 -1
  306. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.d.ts.map +1 -1
  307. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.d.ts +2 -2
  308. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.d.ts.map +1 -1
  309. package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts +3 -3
  310. package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts.map +1 -1
  311. package/lib/typescript/shared/providers/screen/gestures/types.d.ts +4 -2
  312. package/lib/typescript/shared/providers/screen/gestures/types.d.ts.map +1 -1
  313. package/lib/typescript/shared/providers/screen/styles/hooks/slot-resolvers.d.ts +4 -4
  314. package/lib/typescript/shared/providers/screen/styles/hooks/slot-resolvers.d.ts.map +1 -1
  315. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  316. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts +2 -2
  317. package/lib/typescript/shared/providers/screen/styles/index.d.ts +1 -1
  318. package/lib/typescript/shared/providers/screen/styles/index.d.ts.map +1 -1
  319. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts +9 -4
  320. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts.map +1 -1
  321. package/lib/typescript/shared/providers/screen/use-current-screen-relationships.d.ts +5 -0
  322. package/lib/typescript/shared/providers/screen/use-current-screen-relationships.d.ts.map +1 -0
  323. package/lib/typescript/shared/providers/stack/blank-stack.provider.d.ts +4 -1
  324. package/lib/typescript/shared/providers/stack/blank-stack.provider.d.ts.map +1 -1
  325. package/lib/typescript/shared/providers/stack/core.provider.d.ts.map +1 -1
  326. package/lib/typescript/shared/providers/stack/direct.provider.d.ts.map +1 -1
  327. package/lib/typescript/shared/stores/animation.store.d.ts +0 -1
  328. package/lib/typescript/shared/stores/animation.store.d.ts.map +1 -1
  329. package/lib/typescript/shared/stores/bounds/internals/coordinator.d.ts.map +1 -1
  330. package/lib/typescript/shared/stores/bounds/internals/links.d.ts.map +1 -1
  331. package/lib/typescript/shared/stores/bounds/internals/state.d.ts +1 -1
  332. package/lib/typescript/shared/stores/bounds/internals/state.d.ts.map +1 -1
  333. package/lib/typescript/shared/stores/bounds/types.d.ts +0 -1
  334. package/lib/typescript/shared/stores/bounds/types.d.ts.map +1 -1
  335. package/lib/typescript/shared/types/providers/blank-stack-provider.types.d.ts +1 -0
  336. package/lib/typescript/shared/types/providers/blank-stack-provider.types.d.ts.map +1 -1
  337. package/lib/typescript/shared/types/screen.types.d.ts +0 -9
  338. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  339. package/lib/typescript/shared/utils/create-provider.d.ts +24 -24
  340. package/lib/typescript/shared/utils/create-provider.d.ts.map +1 -1
  341. package/package.json +2 -2
  342. package/src/shared/adapters/with-screen-transitions/stack-layout.tsx +1 -2
  343. package/src/shared/components/activity/helpers.ts +59 -0
  344. package/src/shared/components/activity/variants/activity-screen.tsx +28 -93
  345. package/src/shared/components/boundary/components/boundary-target.tsx +2 -2
  346. package/src/shared/components/boundary/create-boundary-component.tsx +10 -2
  347. package/src/shared/components/boundary/hooks/use-measurer.ts +3 -2
  348. package/src/shared/components/boundary/portal/components/boundary-content-portal/helpers/active-handoff-receiver.ts +22 -0
  349. package/src/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.ts +7 -3
  350. package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +2 -6
  351. package/src/shared/components/boundary/portal/teleport.ts +2 -23
  352. package/src/shared/components/boundary/providers/boundary-root.provider.tsx +10 -6
  353. package/src/shared/components/overlay/helpers/create-overlay-interpolator-frame.ts +14 -1
  354. package/src/shared/components/overlay/helpers/get-active-overlay.ts +29 -4
  355. package/src/shared/components/overlay/hooks/use-overlay-slot.ts +26 -8
  356. package/src/shared/components/overlay/variations/overlay-host.tsx +11 -6
  357. package/src/shared/components/screen-container/layers/content.tsx +3 -4
  358. package/src/shared/components/screen-lifecycle/hooks/use-close-transition-intent.ts +8 -12
  359. package/src/shared/factories/screen-topology/create-screen-topology.ts +199 -0
  360. package/src/shared/factories/screen-topology/index.ts +16 -0
  361. package/src/shared/factories/screen-topology/types.ts +22 -0
  362. package/src/shared/factories/screen-topology/use-screen-relationships.ts +15 -0
  363. package/src/shared/factories/screen-topology/worklet.ts +60 -0
  364. package/src/shared/hooks/navigation/use-screen-state.ts +2 -7
  365. package/src/shared/hooks/navigation/use-stack.tsx +28 -31
  366. package/src/shared/providers/screen/animation/animation.provider.tsx +73 -212
  367. package/src/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.ts +10 -81
  368. package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/types.ts +0 -1
  369. package/src/shared/providers/screen/animation/helpers/pipeline.ts +45 -70
  370. package/src/shared/providers/screen/animation/helpers/read-screen-animation-revisions.ts +6 -30
  371. package/src/shared/providers/screen/animation/helpers/stack-progress.ts +13 -32
  372. package/src/shared/providers/screen/animation/helpers/use-build-transition-state.ts +0 -2
  373. package/src/shared/providers/screen/animation/index.tsx +1 -0
  374. package/src/shared/providers/screen/animation/types.ts +1 -23
  375. package/src/shared/providers/screen/animation/use-screen-animation.tsx +10 -14
  376. package/src/shared/providers/screen/descriptors/descriptors.provider.tsx +56 -35
  377. package/src/shared/providers/screen/descriptors/helpers/derive-descriptor-derivations.ts +0 -6
  378. package/src/shared/providers/screen/gestures/gestures.provider.tsx +96 -85
  379. package/src/shared/providers/screen/gestures/hooks/use-screen-gesture-config.ts +4 -4
  380. package/src/shared/providers/screen/gestures/hooks/use-screen-gesture.ts +3 -4
  381. package/src/shared/providers/screen/gestures/index.tsx +2 -1
  382. package/src/shared/providers/screen/gestures/ownership/gesture-ownership-bridge.tsx +16 -29
  383. package/src/shared/providers/screen/gestures/ownership/resolve-ownership.ts +5 -8
  384. package/src/shared/providers/screen/gestures/pan/activation/use-pan-activation.ts +2 -3
  385. package/src/shared/providers/screen/gestures/scroll-coordination/scroll-metadata-owner.tsx +6 -9
  386. package/src/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.ts +11 -7
  387. package/src/shared/providers/screen/gestures/scroll-coordination/walk-up-scroll-gesture-coordination.ts +12 -12
  388. package/src/shared/providers/screen/gestures/shared/policy.ts +7 -7
  389. package/src/shared/providers/screen/gestures/types.ts +5 -2
  390. package/src/shared/providers/screen/styles/hooks/slot-resolvers.tsx +10 -3
  391. package/src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +7 -17
  392. package/src/shared/providers/screen/styles/index.tsx +2 -1
  393. package/src/shared/providers/screen/styles/slot.provider.tsx +25 -24
  394. package/src/shared/providers/screen/use-current-screen-relationships.ts +10 -0
  395. package/src/shared/providers/stack/blank-stack.provider.tsx +19 -6
  396. package/src/shared/providers/stack/core.provider.tsx +0 -1
  397. package/src/shared/providers/stack/direct.provider.tsx +2 -4
  398. package/src/shared/stores/animation.store.ts +0 -3
  399. package/src/shared/stores/bounds/internals/coordinator.ts +20 -8
  400. package/src/shared/stores/bounds/internals/links.ts +1 -1
  401. package/src/shared/stores/bounds/internals/state.ts +1 -1
  402. package/src/shared/stores/bounds/types.ts +0 -1
  403. package/src/shared/types/providers/blank-stack-provider.types.ts +1 -0
  404. package/src/shared/types/screen.types.ts +0 -10
  405. package/src/shared/utils/create-provider.tsx +135 -200
  406. package/lib/commonjs/shared/providers/screen/animation/helpers/interpolator-participation.js +0 -9
  407. package/lib/commonjs/shared/providers/screen/animation/helpers/interpolator-participation.js.map +0 -1
  408. package/lib/commonjs/shared/providers/screen/descriptors/helpers/derive-structural-ancestor-keys.js +0 -12
  409. package/lib/commonjs/shared/providers/screen/descriptors/helpers/derive-structural-ancestor-keys.js.map +0 -1
  410. package/lib/commonjs/shared/providers/screen/gestures/shared/ancestors.js +0 -23
  411. package/lib/commonjs/shared/providers/screen/gestures/shared/ancestors.js.map +0 -1
  412. package/lib/commonjs/shared/stores/bounds/internals/screen-graph.js +0 -45
  413. package/lib/commonjs/shared/stores/bounds/internals/screen-graph.js.map +0 -1
  414. package/lib/module/shared/providers/screen/animation/helpers/interpolator-participation.js +0 -4
  415. package/lib/module/shared/providers/screen/animation/helpers/interpolator-participation.js.map +0 -1
  416. package/lib/module/shared/providers/screen/descriptors/helpers/derive-structural-ancestor-keys.js +0 -7
  417. package/lib/module/shared/providers/screen/descriptors/helpers/derive-structural-ancestor-keys.js.map +0 -1
  418. package/lib/module/shared/providers/screen/gestures/shared/ancestors.js +0 -19
  419. package/lib/module/shared/providers/screen/gestures/shared/ancestors.js.map +0 -1
  420. package/lib/module/shared/stores/bounds/internals/screen-graph.js +0 -39
  421. package/lib/module/shared/stores/bounds/internals/screen-graph.js.map +0 -1
  422. package/lib/typescript/shared/providers/screen/animation/helpers/interpolator-participation.d.ts +0 -3
  423. package/lib/typescript/shared/providers/screen/animation/helpers/interpolator-participation.d.ts.map +0 -1
  424. package/lib/typescript/shared/providers/screen/descriptors/helpers/derive-structural-ancestor-keys.d.ts +0 -5
  425. package/lib/typescript/shared/providers/screen/descriptors/helpers/derive-structural-ancestor-keys.d.ts.map +0 -1
  426. package/lib/typescript/shared/providers/screen/gestures/shared/ancestors.d.ts +0 -11
  427. package/lib/typescript/shared/providers/screen/gestures/shared/ancestors.d.ts.map +0 -1
  428. package/lib/typescript/shared/stores/bounds/internals/screen-graph.d.ts +0 -5
  429. package/lib/typescript/shared/stores/bounds/internals/screen-graph.d.ts.map +0 -1
  430. package/src/shared/providers/screen/animation/helpers/interpolator-participation.ts +0 -6
  431. package/src/shared/providers/screen/descriptors/helpers/derive-structural-ancestor-keys.ts +0 -13
  432. package/src/shared/providers/screen/gestures/shared/ancestors.ts +0 -27
  433. package/src/shared/stores/bounds/internals/screen-graph.ts +0 -45
@@ -10,7 +10,6 @@ import { createStore } from "../utils/create-store";
10
10
  export type AnimationStoreMap = {
11
11
  transitionProgress: SharedValue<number>;
12
12
  visualProgress: SharedValue<number>;
13
- stackProgress: SharedValue<number>;
14
13
  willAnimate: SharedValue<number>;
15
14
  progressAnimating: SharedValue<number>;
16
15
  progressSettled: SharedValue<number>;
@@ -39,7 +38,6 @@ function createAnimationBag(): AnimationStoreMap {
39
38
  return {
40
39
  transitionProgress: makeMutable(0),
41
40
  visualProgress: makeMutable(0),
42
- stackProgress: makeMutable(0),
43
41
  willAnimate: makeMutable(0),
44
42
  closing: makeMutable(0),
45
43
  progressAnimating: makeMutable(0),
@@ -58,7 +56,6 @@ export const AnimationStore = createStore<AnimationStoreMap>({
58
56
  disposeBag: (bag) => {
59
57
  cancelAnimation(bag.transitionProgress);
60
58
  cancelAnimation(bag.visualProgress);
61
- cancelAnimation(bag.stackProgress);
62
59
  cancelAnimation(bag.willAnimate);
63
60
  cancelAnimation(bag.progressAnimating);
64
61
  cancelAnimation(bag.progressSettled);
@@ -1,4 +1,9 @@
1
1
  import type { SharedValue } from "react-native-reanimated";
2
+ import {
3
+ registerWorkletScreen,
4
+ screenBelongsToScope,
5
+ unregisterWorkletScreen,
6
+ } from "../../../factories/screen-topology";
2
7
  import {
3
8
  ensurePairDestinationRequests,
4
9
  ensurePairGroups,
@@ -20,11 +25,6 @@ import type {
20
25
  TagID,
21
26
  } from "../types";
22
27
  import { removeEntry, setEntry } from "./entries";
23
- import {
24
- registerBoundsScreen,
25
- screenBelongsToScope,
26
- unregisterBoundsScreen,
27
- } from "./screen-graph";
28
28
  import { boundaryRegistry, boundsScreens, pairs } from "./state";
29
29
 
30
30
  type MeasurementRequest = {
@@ -184,11 +184,18 @@ const releaseDestinationBlockWhenReady = (
184
184
  export function registerScreen(params: RegisterScreenParams) {
185
185
  "worklet";
186
186
  const node: BoundsScreenNode = {
187
- parentScreenKey: params.parentScreenKey,
188
187
  animationProgress: params.animationProgress,
189
188
  pendingLifecycleStartBlockCount: params.pendingLifecycleStartBlockCount,
190
189
  };
191
- registerBoundsScreen(params.screenKey, node);
190
+ registerWorkletScreen({
191
+ screenKey: params.screenKey,
192
+ parentScreenKey: params.parentScreenKey,
193
+ });
194
+ boundsScreens.modify(<T extends typeof boundsScreens.value>(state: T): T => {
195
+ "worklet";
196
+ (state as typeof boundsScreens.value)[params.screenKey] = node;
197
+ return state;
198
+ });
192
199
 
193
200
  const state = pairs.get();
194
201
  for (const pairKey in state) {
@@ -201,7 +208,12 @@ export function registerScreen(params: RegisterScreenParams) {
201
208
 
202
209
  export function unregisterScreen(screenKey: ScreenKey) {
203
210
  "worklet";
204
- unregisterBoundsScreen(screenKey);
211
+ unregisterWorkletScreen(screenKey);
212
+ boundsScreens.modify(<T extends typeof boundsScreens.value>(state: T): T => {
213
+ "worklet";
214
+ delete state[screenKey];
215
+ return state;
216
+ });
205
217
  }
206
218
 
207
219
  export function registerBoundary({
@@ -1,4 +1,5 @@
1
1
  import type { MeasuredDimensions, StyleProps } from "react-native-reanimated";
2
+ import { screenBelongsToScope } from "../../../factories/screen-topology";
2
3
  import {
3
4
  createGroupTag,
4
5
  ensurePairGroups,
@@ -23,7 +24,6 @@ import type {
23
24
  TagID,
24
25
  TagLink,
25
26
  } from "../types";
26
- import { screenBelongsToScope } from "./screen-graph";
27
27
  import { pairs } from "./state";
28
28
 
29
29
  const syncLinkStatus = (link: TagLink) => {
@@ -38,5 +38,5 @@ export const boundaryRegistry = makeMutable<BoundaryEntriesState>({});
38
38
  */
39
39
  export const pairs = makeMutable<LinkPairsState>({});
40
40
 
41
- /** Stable ownership graph used to match leaf boundaries to transition roots. */
41
+ /** Bounds-only runtime values keyed by screen. Relationships live in topology. */
42
42
  export const boundsScreens = makeMutable<BoundsScreenState>({});
@@ -143,7 +143,6 @@ export type LinkPairState = {
143
143
  export type LinkPairsState = Record<ScreenPairKey, LinkPairState>;
144
144
 
145
145
  export type BoundsScreenNode = {
146
- parentScreenKey?: ScreenKey;
147
146
  animationProgress: SharedValue<number>;
148
147
  pendingLifecycleStartBlockCount: SharedValue<number>;
149
148
  };
@@ -36,6 +36,7 @@ export interface BlankStackStoreValue<
36
36
  routes: TDescriptor["route"][];
37
37
  scenes: BaseStackScene<TDescriptor>[];
38
38
  scenesByKey: Record<string, BaseStackScene<TDescriptor>>;
39
+ paintDriverRouteKeyByRouteKey: ReadonlyMap<string, string>;
39
40
  focusedIndex: number;
40
41
  requestDismiss: (payload: { route: BaseStackRoute }) => boolean;
41
42
  shouldShowFloatOverlay: boolean;
@@ -180,16 +180,6 @@ export type ScreenTransitionConfig = {
180
180
  */
181
181
  screenStyleInterpolator?: ScreenStyleInterpolator;
182
182
 
183
- /**
184
- * Allows this screen's interpolator to keep updating while the screen is
185
- * inactive. This is useful for flows that intentionally animate screens more
186
- * than one level behind the active route with values such as `stackProgress`.
187
- *
188
- * @experimental This API may change in future versions.
189
- * @default false
190
- */
191
- experimental_updateInactiveInterpolators?: boolean;
192
-
193
183
  /**
194
184
  * The Reanimated animation config for opening and closing transitions.
195
185
  */
@@ -3,9 +3,11 @@
3
3
  * https://github.com/MatiPl01/react-native-sortables/blob/main/packages/react-native-sortables/src/providers/utils/createProvider.tsx
4
4
  * SUPER COOL AMAZING UTILITY
5
5
  *
6
- * Store-only provider: values propagate exclusively through a subscription
7
- * store read with `use${Name}Store(selector)`. There is intentionally no raw
8
- * context channel, so consumers subscribe only to the values they render.
6
+ * Store-only provider: values propagate exclusively through subscription
7
+ * selectors. `use${Name}Store` requires an available store, while
8
+ * `useOptional${Name}Store` preserves nullable bootstrap and outer-context
9
+ * access. There is intentionally no raw context channel, so consumers
10
+ * subscribe only to the values they render.
9
11
  *
10
12
  * Factories do not memoize what they return:
11
13
  * - `value`: the store shallow-compares snapshots and keeps the previous
@@ -16,7 +18,7 @@
16
18
  * module-level memoized component for the wrapper.
17
19
  *
18
20
  * Providers created with `global: true` return a `key` from their factory.
19
- * Their generated store hook accepts that key to subscribe to the original
21
+ * Both generated store hooks accept that key to subscribe to the original
20
22
  * provider store from outside its React context.
21
23
  */
22
24
  import {
@@ -29,48 +31,52 @@ import {
29
31
  useSyncExternalStore,
30
32
  } from "react";
31
33
 
32
- type ProviderSnapshot<
33
- ContextValue,
34
- Guarded extends boolean,
35
- > = Guarded extends true ? ContextValue : ContextValue | null;
36
-
37
- type ProviderSelector<ContextValue, Guarded extends boolean, Selected> = (
38
- value: ProviderSnapshot<ContextValue, Guarded>,
39
- ) => Selected;
34
+ type ProviderStoreHook<ContextValue> = {
35
+ (): ContextValue;
36
+ <Selected>(selector: (value: ContextValue) => Selected): Selected;
37
+ };
40
38
 
41
- type ProviderStoreHook<ContextValue, Guarded extends boolean> = {
42
- (): ProviderSnapshot<ContextValue, Guarded>;
39
+ type GlobalProviderStoreHook<ContextValue> = {
40
+ (key: string): ContextValue;
43
41
  <Selected>(
44
- selector: ProviderSelector<ContextValue, Guarded, Selected>,
42
+ key: string,
43
+ selector: (value: ContextValue) => Selected,
45
44
  ): Selected;
46
45
  };
47
46
 
48
- type GlobalProviderStoreHook<ContextValue> = {
49
- (key: string): ContextValue | null;
47
+ type OptionalProviderStoreHook<ContextValue> = {
48
+ (): ContextValue | null;
49
+ <Selected>(selector: (value: ContextValue | null) => Selected): Selected;
50
+ };
51
+
52
+ type OptionalGlobalProviderStoreHook<ContextValue> = {
53
+ (key: string | null): ContextValue | null;
50
54
  <Selected>(
51
- key: string,
55
+ key: string | null,
52
56
  selector: (value: ContextValue) => Selected,
53
57
  ): Selected | null;
54
58
  };
55
59
 
56
60
  type ResolvedProviderStoreHook<
57
61
  ContextValue,
58
- Guarded extends boolean,
59
62
  Global extends boolean,
60
- > = ProviderStoreHook<ContextValue, Guarded> &
63
+ > = ProviderStoreHook<ContextValue> &
61
64
  (Global extends true ? GlobalProviderStoreHook<ContextValue> : unknown);
62
65
 
66
+ type ResolvedOptionalProviderStoreHook<
67
+ ContextValue,
68
+ Global extends boolean,
69
+ > = OptionalProviderStoreHook<ContextValue> &
70
+ (Global extends true
71
+ ? OptionalGlobalProviderStoreHook<ContextValue>
72
+ : unknown);
73
+
63
74
  type ProviderFactoryResult<ContextValue, Global extends boolean> = {
64
- value?: ContextValue;
65
- enabled?: boolean;
75
+ value: ContextValue;
66
76
  children?: ReactNode;
67
77
  } & (Global extends true ? { key: string } : { key?: never });
68
78
 
69
- export type ProviderFactoryInternals<ContextValue> = {
70
- useParentStore: ProviderStoreHook<ContextValue, false>;
71
- };
72
-
73
- export interface ProviderStoreApi<ContextValue> {
79
+ interface ProviderStoreApi<ContextValue> {
74
80
  getSnapshot: () => ContextValue | null;
75
81
  subscribe: (listener: () => void) => () => void;
76
82
  }
@@ -161,17 +167,8 @@ const createProviderStore = <ContextValue,>(
161
167
  const createProviderStoreRegistry = <
162
168
  ContextValue,
163
169
  >(): ProviderStoreRegistry<ContextValue> => {
164
- type Registration = {
165
- store: ProviderStoreApi<ContextValue>;
166
- };
167
-
168
170
  const listenersByKey = new Map<string, Set<() => void>>();
169
- const registrationsByKey = new Map<string, Registration[]>();
170
-
171
- const getStore = (key: string) => {
172
- const registrations = registrationsByKey.get(key);
173
- return registrations?.[registrations.length - 1]?.store ?? null;
174
- };
171
+ const storesByKey = new Map<string, ProviderStoreApi<ContextValue>>();
175
172
 
176
173
  const notify = (key: string) => {
177
174
  for (const listener of listenersByKey.get(key) ?? []) {
@@ -180,33 +177,14 @@ const createProviderStoreRegistry = <
180
177
  };
181
178
 
182
179
  return {
183
- getStore,
180
+ getStore: (key) => storesByKey.get(key) ?? null,
184
181
  register: (key, store) => {
185
- const registration: Registration = { store };
186
- const registrations = registrationsByKey.get(key) ?? [];
187
- registrationsByKey.set(key, [...registrations, registration]);
182
+ storesByKey.set(key, store);
188
183
  notify(key);
189
184
 
190
185
  return () => {
191
- const currentRegistrations = registrationsByKey.get(key);
192
- if (!currentRegistrations?.includes(registration)) {
193
- return;
194
- }
195
-
196
- const previousStore = getStore(key);
197
- const nextRegistrations = currentRegistrations.filter(
198
- (currentRegistration) => currentRegistration !== registration,
199
- );
200
-
201
- if (nextRegistrations.length === 0) {
202
- registrationsByKey.delete(key);
203
- } else {
204
- registrationsByKey.set(key, nextRegistrations);
205
- }
206
-
207
- if (getStore(key) !== previousStore) {
208
- notify(key);
209
- }
186
+ storesByKey.delete(key);
187
+ notify(key);
210
188
  };
211
189
  },
212
190
  subscribe: (key, listener) => {
@@ -226,183 +204,135 @@ const createProviderStoreRegistry = <
226
204
 
227
205
  export default function createProvider<
228
206
  ProviderName extends string,
229
- Guarded extends boolean = true,
230
207
  Global extends boolean = false,
231
- >(name: ProviderName, options?: { guarded?: Guarded; global?: Global }) {
208
+ >(name: ProviderName, options?: { global?: Global }) {
232
209
  return <ProviderProps extends object, ContextValue>(
233
210
  factory: (
234
211
  props: ProviderProps,
235
- internals: ProviderFactoryInternals<ContextValue>,
236
212
  ) => ProviderFactoryResult<ContextValue, Global>,
237
213
  ) => {
238
- const { guarded = true, global = false } = options ?? {};
214
+ const { global = false } = options ?? {};
239
215
  const providerDisplayName = `${name}Provider`;
240
216
  const globalRegistry = global
241
217
  ? createProviderStoreRegistry<ContextValue>()
242
218
  : null;
243
- const keyByStore = global
244
- ? new WeakMap<ProviderStoreApi<ContextValue>, string>()
245
- : null;
246
219
 
247
220
  const StoreContext = createContext<ProviderStoreApi<ContextValue> | null>(
248
221
  null,
249
222
  );
250
223
  StoreContext.displayName = `${name}Store`;
251
224
 
252
- const useRegisteredStore = (
253
- key: string | null,
254
- fallbackStore: ProviderStoreApi<ContextValue> | null = null,
255
- ) => {
225
+ const useStoreSelection = <Selected,>(
226
+ required: boolean,
227
+ selectorOrKey?:
228
+ | string
229
+ | null
230
+ | ((value: ContextValue | null) => Selected),
231
+ globalSelector?: (value: ContextValue) => Selected,
232
+ ): Selected | ContextValue | null => {
233
+ const isGlobalLookup =
234
+ global && (typeof selectorOrKey === "string" || selectorOrKey === null);
235
+ const key = isGlobalLookup ? selectorOrKey : null;
236
+ const selector = (isGlobalLookup ? globalSelector : selectorOrKey) as
237
+ | ((value: ContextValue | null) => Selected)
238
+ | undefined;
239
+ const contextStore = useContext(StoreContext);
240
+ const selectorRef = useRef(selector);
241
+ selectorRef.current = selector;
242
+ const getStore = useCallback(() => {
243
+ if (isGlobalLookup) {
244
+ return key !== null && globalRegistry
245
+ ? globalRegistry.getStore(key)
246
+ : null;
247
+ }
248
+
249
+ return contextStore;
250
+ }, [contextStore, isGlobalLookup, key]);
256
251
  const subscribe = useCallback(
257
252
  (listener: () => void) => {
258
- if (key === null || !globalRegistry) {
259
- return () => {};
260
- }
261
-
262
- return globalRegistry.subscribe(key, listener);
253
+ let unsubscribeStore = (
254
+ getStore() ?? (NullProviderStore as ProviderStoreApi<ContextValue>)
255
+ ).subscribe(listener);
256
+ const unsubscribeRegistry =
257
+ isGlobalLookup && key !== null && globalRegistry
258
+ ? globalRegistry.subscribe(key, () => {
259
+ unsubscribeStore();
260
+ unsubscribeStore = (
261
+ getStore() ??
262
+ (NullProviderStore as ProviderStoreApi<ContextValue>)
263
+ ).subscribe(listener);
264
+ listener();
265
+ })
266
+ : () => {};
267
+
268
+ return () => {
269
+ unsubscribeRegistry();
270
+ unsubscribeStore();
271
+ };
263
272
  },
264
- [key],
265
- );
266
- const getSnapshot = useCallback(
267
- () =>
268
- key !== null && globalRegistry
269
- ? (globalRegistry.getStore(key) ?? fallbackStore)
270
- : null,
271
- [key, fallbackStore],
273
+ [getStore, isGlobalLookup, key],
272
274
  );
273
275
 
274
- return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
275
- };
276
+ const getSelectedSnapshot = useCallback(() => {
277
+ const snapshot = getStore()?.getSnapshot() ?? null;
276
278
 
277
- const createStoreHook = (strict: boolean, allowGlobalLookup: boolean) => {
278
- if (!allowGlobalLookup || !globalRegistry) {
279
- return <Selected,>(
280
- selector?: (value: ContextValue | null) => Selected,
281
- ): Selected | ContextValue | null => {
282
- const store = useContext(StoreContext);
283
- const resolvedStore =
284
- store ?? (NullProviderStore as ProviderStoreApi<ContextValue>);
285
- const selectorRef = useRef(selector);
286
- selectorRef.current = selector;
287
-
288
- const getSelectedSnapshot = useCallback(() => {
289
- if (strict && store === null) {
290
- throw new Error(
291
- `${name} store must be used within a ${name}Provider`,
292
- );
293
- }
294
-
295
- const snapshot = resolvedStore.getSnapshot();
296
-
297
- if (strict && snapshot === null) {
298
- throw new Error(
299
- `${name} store must be used within an enabled ${name}Provider`,
300
- );
301
- }
302
-
303
- return selectorRef.current
304
- ? selectorRef.current(snapshot)
305
- : snapshot;
306
- }, [resolvedStore, store]);
307
-
308
- return useSyncExternalStore(
309
- resolvedStore.subscribe,
310
- getSelectedSnapshot,
311
- getSelectedSnapshot,
279
+ if (required && snapshot === null) {
280
+ throw new Error(
281
+ key === null
282
+ ? `${name}Store is unavailable`
283
+ : `${name}Store is unavailable for key "${key}"`,
312
284
  );
313
- };
314
- }
285
+ }
315
286
 
316
- return <Selected,>(
317
- selectorOrKey?: string | ((value: ContextValue | null) => Selected),
318
- globalSelector?: (value: ContextValue) => Selected,
319
- ): Selected | ContextValue | null => {
320
- const isGlobalLookup = typeof selectorOrKey === "string";
321
- const key = isGlobalLookup ? selectorOrKey : null;
322
- const selector = (isGlobalLookup ? globalSelector : selectorOrKey) as
323
- | ((value: ContextValue | null) => Selected)
324
- | undefined;
325
- const contextStore = useContext(StoreContext);
326
- const matchingContextStore =
327
- key !== null &&
328
- contextStore !== null &&
329
- keyByStore?.get(contextStore) === key
330
- ? contextStore
331
- : null;
332
- const registeredStore = useRegisteredStore(key, matchingContextStore);
333
- const store = isGlobalLookup ? registeredStore : contextStore;
334
- const resolvedStore =
335
- store ?? (NullProviderStore as ProviderStoreApi<ContextValue>);
336
- const selectorRef = useRef(selector);
337
- selectorRef.current = selector;
338
-
339
- const getSelectedSnapshot = useCallback(() => {
340
- if (!isGlobalLookup && strict && store === null) {
341
- throw new Error(
342
- `${name} store must be used within a ${name}Provider`,
343
- );
344
- }
345
-
346
- const snapshot = resolvedStore.getSnapshot();
347
-
348
- if (isGlobalLookup && snapshot === null) {
349
- return null;
350
- }
351
-
352
- if (!isGlobalLookup && strict && snapshot === null) {
353
- throw new Error(
354
- `${name} store must be used within an enabled ${name}Provider`,
355
- );
356
- }
357
-
358
- return typeof selectorRef.current === "function"
359
- ? selectorRef.current(snapshot)
360
- : snapshot;
361
- }, [isGlobalLookup, resolvedStore, store]);
362
-
363
- return useSyncExternalStore(
364
- resolvedStore.subscribe,
365
- getSelectedSnapshot,
366
- getSelectedSnapshot,
367
- );
368
- };
369
- };
287
+ if (isGlobalLookup && snapshot === null) {
288
+ return null;
289
+ }
370
290
 
371
- const useStoreSelector = createStoreHook(guarded, global);
372
- const factoryInternals: ProviderFactoryInternals<ContextValue> = {
373
- useParentStore: createStoreHook(false, false) as ProviderStoreHook<
374
- ContextValue,
375
- false
376
- >,
377
- };
291
+ return typeof selectorRef.current === "function"
292
+ ? selectorRef.current(snapshot)
293
+ : snapshot;
294
+ }, [getStore, isGlobalLookup, key, required]);
378
295
 
296
+ return useSyncExternalStore(
297
+ subscribe,
298
+ getSelectedSnapshot,
299
+ getSelectedSnapshot,
300
+ );
301
+ };
302
+ const useOptionalStoreSelector = <Selected,>(
303
+ selectorOrKey?:
304
+ | string
305
+ | null
306
+ | ((value: ContextValue | null) => Selected),
307
+ globalSelector?: (value: ContextValue) => Selected,
308
+ ) => useStoreSelection(false, selectorOrKey, globalSelector);
309
+ const useStoreSelector = <Selected,>(
310
+ selectorOrKey?: string | ((value: ContextValue) => Selected),
311
+ globalSelector?: (value: ContextValue) => Selected,
312
+ ) =>
313
+ useStoreSelection(
314
+ true,
315
+ selectorOrKey as
316
+ | string
317
+ | ((value: ContextValue | null) => Selected)
318
+ | undefined,
319
+ globalSelector,
320
+ );
379
321
  const Provider: React.FC<ProviderProps> = (props) => {
380
322
  const {
381
323
  children = (props as { children?: ReactNode }).children,
382
- enabled = true,
383
324
  key,
384
325
  value,
385
- } = factory(props, factoryInternals);
386
-
387
- if (!value) {
388
- throw new Error(
389
- `${name}Context value must be provided. You likely forgot to return it from the factory function.`,
390
- );
391
- }
392
-
393
- const snapshotValue = enabled ? value : null;
326
+ } = factory(props);
394
327
  const storeRef = useRef<MutableProviderStoreApi<ContextValue> | null>(
395
328
  null,
396
329
  );
397
330
  const pendingNotifyRef = useRef(false);
398
331
 
399
332
  if (storeRef.current === null) {
400
- storeRef.current = createProviderStore<ContextValue>(snapshotValue);
333
+ storeRef.current = createProviderStore<ContextValue>(value);
401
334
  }
402
335
  const store = storeRef.current;
403
- if (keyByStore && typeof key === "string") {
404
- keyByStore.set(store, key);
405
- }
406
336
 
407
337
  useLayoutEffect(() => {
408
338
  if (!globalRegistry) {
@@ -419,7 +349,7 @@ export default function createProvider<
419
349
  }, [key, store]);
420
350
 
421
351
  pendingNotifyRef.current =
422
- store.setSnapshot(snapshotValue) || pendingNotifyRef.current;
352
+ store.setSnapshot(value) || pendingNotifyRef.current;
423
353
 
424
354
  useLayoutEffect(() => {
425
355
  if (!pendingNotifyRef.current) {
@@ -438,13 +368,18 @@ export default function createProvider<
438
368
 
439
369
  return {
440
370
  [`${name}Provider`]: Provider,
371
+ [`useOptional${name}Store`]: useOptionalStoreSelector,
441
372
  [`use${name}Store`]: useStoreSelector,
442
373
  } as {
443
374
  [P in ProviderName as `${P}Provider`]: React.FC<ProviderProps>;
375
+ } & {
376
+ [P in ProviderName as `useOptional${P}Store`]: ResolvedOptionalProviderStoreHook<
377
+ ContextValue,
378
+ Global
379
+ >;
444
380
  } & {
445
381
  [P in ProviderName as `use${P}Store`]: ResolvedProviderStoreHook<
446
382
  ContextValue,
447
- Guarded,
448
383
  Global
449
384
  >;
450
385
  };
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.shouldUpdateScreenInterpolator = void 0;
7
- const shouldUpdateScreenInterpolator = (activity, updateInactiveInterpolators) => activity !== "inactive" || updateInactiveInterpolators;
8
- exports.shouldUpdateScreenInterpolator = shouldUpdateScreenInterpolator;
9
- //# sourceMappingURL=interpolator-participation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["shouldUpdateScreenInterpolator","activity","updateInactiveInterpolators","exports"],"sourceRoot":"../../../../../../../src","sources":["shared/providers/screen/animation/helpers/interpolator-participation.ts"],"mappings":";;;;;;AAEO,MAAMA,8BAA8B,GAAGA,CAC7CC,QAA4B,EAC5BC,2BAAoC,KAChCD,QAAQ,KAAK,UAAU,IAAIC,2BAA2B;AAACC,OAAA,CAAAH,8BAAA,GAAAA,8BAAA","ignoreList":[]}
@@ -1,12 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.deriveStructuralAncestorKeys = void 0;
7
- const deriveStructuralAncestorKeys = parent => {
8
- if (!parent) return [];
9
- return [parent.currentScreenKey, ...parent.ancestorKeys];
10
- };
11
- exports.deriveStructuralAncestorKeys = deriveStructuralAncestorKeys;
12
- //# sourceMappingURL=derive-structural-ancestor-keys.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["deriveStructuralAncestorKeys","parent","currentScreenKey","ancestorKeys","exports"],"sourceRoot":"../../../../../../../src","sources":["shared/providers/screen/descriptors/helpers/derive-structural-ancestor-keys.ts"],"mappings":";;;;;;AAOO,MAAMA,4BAA4B,GACxCC,MAAoC,IACtB;EACd,IAAI,CAACA,MAAM,EAAE,OAAO,EAAE;EACtB,OAAO,CAACA,MAAM,CAACC,gBAAgB,EAAE,GAAGD,MAAM,CAACE,YAAY,CAAC;AACzD,CAAC;AAACC,OAAA,CAAAJ,4BAAA,GAAAA,4BAAA","ignoreList":[]}
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.walkGestureAncestors = walkGestureAncestors;
7
- /**
8
- * Returns the gesture context chain, starting at `context`, then walking upward.
9
- * When `isIsolated` is provided, the walk stops at a stack isolation boundary.
10
- */
11
- function walkGestureAncestors(context, isIsolated) {
12
- const ancestors = [];
13
- let ancestor = context ?? null;
14
- while (ancestor) {
15
- if (isIsolated !== undefined && ancestor.isIsolated !== isIsolated) {
16
- break;
17
- }
18
- ancestors.push(ancestor);
19
- ancestor = ancestor.gestureContext;
20
- }
21
- return ancestors;
22
- }
23
- //# sourceMappingURL=ancestors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["walkGestureAncestors","context","isIsolated","ancestors","ancestor","undefined","push","gestureContext"],"sourceRoot":"../../../../../../../src","sources":["shared/providers/screen/gestures/shared/ancestors.ts"],"mappings":";;;;;;AAKA;AACA;AACA;AACA;AACO,SAASA,oBAAoBA,CACnCC,OAA6B,EAC7BC,UAAoB,EACd;EACN,MAAMC,SAAc,GAAG,EAAE;EACzB,IAAIC,QAAQ,GAAGH,OAAO,IAAI,IAAI;EAE9B,OAAOG,QAAQ,EAAE;IAChB,IAAIF,UAAU,KAAKG,SAAS,IAAID,QAAQ,CAACF,UAAU,KAAKA,UAAU,EAAE;MACnE;IACD;IAEAC,SAAS,CAACG,IAAI,CAACF,QAAQ,CAAC;IACxBA,QAAQ,GAAGA,QAAQ,CAACG,cAAc;EACnC;EAEA,OAAOJ,SAAS;AACjB","ignoreList":[]}