react-native-screen-transitions 4.0.0-alpha.1 → 4.0.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (398) hide show
  1. package/lib/commonjs/animation/snap-to.js +2 -0
  2. package/lib/commonjs/animation/snap-to.js.map +1 -1
  3. package/lib/commonjs/components/boundary/components/boundary-target.js +19 -20
  4. package/lib/commonjs/components/boundary/components/boundary-target.js.map +1 -1
  5. package/lib/commonjs/components/boundary/create-boundary-component.js +16 -2
  6. package/lib/commonjs/components/boundary/create-boundary-component.js.map +1 -1
  7. package/lib/commonjs/components/boundary/hooks/lifecycles/use-refresh-boundary.js +5 -0
  8. package/lib/commonjs/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
  9. package/lib/commonjs/components/boundary/hooks/use-boundary-measurement.js +1 -3
  10. package/lib/commonjs/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  11. package/lib/commonjs/components/boundary/index.js +4 -3
  12. package/lib/commonjs/components/boundary/index.js.map +1 -1
  13. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +47 -188
  14. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  15. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/index.js +21 -13
  16. package/lib/commonjs/components/boundary/portal/components/boundary-content-portal/index.js.map +1 -1
  17. package/lib/commonjs/components/boundary/portal/components/boundary-portal/components/host.js +1 -12
  18. package/lib/commonjs/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
  19. package/lib/commonjs/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +40 -33
  20. package/lib/commonjs/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
  21. package/lib/commonjs/components/boundary/portal/components/boundary-portal/helpers/offset-style.js +3 -4
  22. package/lib/commonjs/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -1
  23. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +46 -131
  24. package/lib/commonjs/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  25. package/lib/commonjs/components/boundary/portal/components/boundary-portal/index.js +45 -9
  26. package/lib/commonjs/components/boundary/portal/components/boundary-portal/index.js.map +1 -1
  27. package/lib/commonjs/components/boundary/portal/components/boundary-portal/stores/host-registry.store.js.map +1 -1
  28. package/lib/commonjs/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js +2 -29
  29. package/lib/commonjs/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -1
  30. package/lib/commonjs/components/boundary/portal/utils/handoff-target.js +33 -0
  31. package/lib/commonjs/components/boundary/portal/utils/handoff-target.js.map +1 -0
  32. package/lib/commonjs/components/boundary/portal/utils/resolve-portal.js +19 -15
  33. package/lib/commonjs/components/boundary/portal/utils/resolve-portal.js.map +1 -1
  34. package/lib/commonjs/components/boundary/portal/utils/teleport-control.js +1 -10
  35. package/lib/commonjs/components/boundary/portal/utils/teleport-control.js.map +1 -1
  36. package/lib/commonjs/components/boundary/providers/boundary-root.provider.js +18 -36
  37. package/lib/commonjs/components/boundary/providers/boundary-root.provider.js.map +1 -1
  38. package/lib/commonjs/components/boundary/utils/refresh-signals.js +7 -0
  39. package/lib/commonjs/components/boundary/utils/refresh-signals.js.map +1 -1
  40. package/lib/commonjs/components/boundary/utils/resolve-boundary-target.js +29 -0
  41. package/lib/commonjs/components/boundary/utils/resolve-boundary-target.js.map +1 -0
  42. package/lib/commonjs/components/masked-view.js +9 -1
  43. package/lib/commonjs/components/masked-view.js.map +1 -1
  44. package/lib/commonjs/components/screen-container/layers/backdrop.js +3 -1
  45. package/lib/commonjs/components/screen-container/layers/backdrop.js.map +1 -1
  46. package/lib/commonjs/components/screen-container/layers/maybe-masked-navigation-container.js +9 -1
  47. package/lib/commonjs/components/screen-container/layers/maybe-masked-navigation-container.js.map +1 -1
  48. package/lib/commonjs/components/screen-lifecycle/hooks/use-transition-start-controller.js +2 -0
  49. package/lib/commonjs/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
  50. package/lib/commonjs/navigators/react-navigation/index.js +7 -8
  51. package/lib/commonjs/navigators/react-navigation/index.js.map +1 -1
  52. package/lib/commonjs/providers/helpers/measured-bounds-writes.js +4 -1
  53. package/lib/commonjs/providers/helpers/measured-bounds-writes.js.map +1 -1
  54. package/lib/commonjs/providers/screen/gestures/gestures.provider.js +2 -8
  55. package/lib/commonjs/providers/screen/gestures/gestures.provider.js.map +1 -1
  56. package/lib/commonjs/providers/screen/gestures/pan/behavior/pan-lifecycle.js +1 -0
  57. package/lib/commonjs/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  58. package/lib/commonjs/providers/screen/gestures/pinch/activation/use-pinch-activation.js +37 -3
  59. package/lib/commonjs/providers/screen/gestures/pinch/activation/use-pinch-activation.js.map +1 -1
  60. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +1 -0
  61. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  62. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-release.js +3 -2
  63. package/lib/commonjs/providers/screen/gestures/pinch/behavior/pinch-release.js.map +1 -1
  64. package/lib/commonjs/providers/screen/gestures/types.js.map +1 -1
  65. package/lib/commonjs/providers/screen/styles/helpers/transition-visual-state.js +42 -0
  66. package/lib/commonjs/providers/screen/styles/helpers/transition-visual-state.js.map +1 -0
  67. package/lib/commonjs/providers/screen/styles/helpers/visibility-gate.js +11 -5
  68. package/lib/commonjs/providers/screen/styles/helpers/visibility-gate.js.map +1 -1
  69. package/lib/commonjs/providers/screen/styles/hooks/use-interpolated-style-maps.js +23 -10
  70. package/lib/commonjs/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  71. package/lib/commonjs/providers/screen/styles/hooks/use-maybe-block-visibility.js +10 -8
  72. package/lib/commonjs/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  73. package/lib/commonjs/stores/bounds/internals/links.js +4 -4
  74. package/lib/commonjs/stores/bounds/internals/links.js.map +1 -1
  75. package/lib/commonjs/stores/scroll.store.js +20 -2
  76. package/lib/commonjs/stores/scroll.store.js.map +1 -1
  77. package/lib/commonjs/stores/system.store.js +2 -0
  78. package/lib/commonjs/stores/system.store.js.map +1 -1
  79. package/lib/commonjs/utils/animation/animate-to-progress.js +23 -1
  80. package/lib/commonjs/utils/animation/animate-to-progress.js.map +1 -1
  81. package/lib/commonjs/utils/animation/animate.js +14 -2
  82. package/lib/commonjs/utils/animation/animate.js.map +1 -1
  83. package/lib/commonjs/utils/animation/spring/spring.js +22 -2
  84. package/lib/commonjs/utils/animation/spring/spring.js.map +1 -1
  85. package/lib/commonjs/utils/animation/spring/springUtils.js +96 -0
  86. package/lib/commonjs/utils/animation/spring/springUtils.js.map +1 -1
  87. package/lib/commonjs/utils/animation/state.js +4 -0
  88. package/lib/commonjs/utils/bounds/navigation/reveal/math.js +17 -5
  89. package/lib/commonjs/utils/bounds/navigation/reveal/math.js.map +1 -1
  90. package/lib/commonjs/utils/bounds/navigation/zoom/build.js +44 -20
  91. package/lib/commonjs/utils/bounds/navigation/zoom/build.js.map +1 -1
  92. package/lib/commonjs/utils/bounds/navigation/zoom/drag.js +2 -31
  93. package/lib/commonjs/utils/bounds/navigation/zoom/drag.js.map +1 -1
  94. package/lib/commonjs/utils/bounds/navigation/zoom/helpers.js +3 -17
  95. package/lib/commonjs/utils/bounds/navigation/zoom/helpers.js.map +1 -1
  96. package/lib/module/animation/snap-to.js +2 -0
  97. package/lib/module/animation/snap-to.js.map +1 -1
  98. package/lib/module/components/boundary/components/boundary-target.js +19 -20
  99. package/lib/module/components/boundary/components/boundary-target.js.map +1 -1
  100. package/lib/module/components/boundary/create-boundary-component.js +17 -3
  101. package/lib/module/components/boundary/create-boundary-component.js.map +1 -1
  102. package/lib/module/components/boundary/hooks/lifecycles/use-refresh-boundary.js +5 -0
  103. package/lib/module/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
  104. package/lib/module/components/boundary/hooks/use-boundary-measurement.js +1 -3
  105. package/lib/module/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  106. package/lib/module/components/boundary/index.js +3 -2
  107. package/lib/module/components/boundary/index.js.map +1 -1
  108. package/lib/module/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +49 -190
  109. package/lib/module/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  110. package/lib/module/components/boundary/portal/components/boundary-content-portal/index.js +21 -13
  111. package/lib/module/components/boundary/portal/components/boundary-content-portal/index.js.map +1 -1
  112. package/lib/module/components/boundary/portal/components/boundary-portal/components/host.js +2 -13
  113. package/lib/module/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
  114. package/lib/module/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +43 -36
  115. package/lib/module/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
  116. package/lib/module/components/boundary/portal/components/boundary-portal/helpers/offset-style.js +3 -4
  117. package/lib/module/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -1
  118. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +50 -135
  119. package/lib/module/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  120. package/lib/module/components/boundary/portal/components/boundary-portal/index.js +44 -9
  121. package/lib/module/components/boundary/portal/components/boundary-portal/index.js.map +1 -1
  122. package/lib/module/components/boundary/portal/components/boundary-portal/stores/host-registry.store.js.map +1 -1
  123. package/lib/module/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js +1 -27
  124. package/lib/module/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -1
  125. package/lib/module/components/boundary/portal/utils/handoff-target.js +28 -0
  126. package/lib/module/components/boundary/portal/utils/handoff-target.js.map +1 -0
  127. package/lib/module/components/boundary/portal/utils/resolve-portal.js +19 -15
  128. package/lib/module/components/boundary/portal/utils/resolve-portal.js.map +1 -1
  129. package/lib/module/components/boundary/portal/utils/teleport-control.js +0 -8
  130. package/lib/module/components/boundary/portal/utils/teleport-control.js.map +1 -1
  131. package/lib/module/components/boundary/providers/boundary-root.provider.js +19 -37
  132. package/lib/module/components/boundary/providers/boundary-root.provider.js.map +1 -1
  133. package/lib/module/components/boundary/utils/refresh-signals.js +7 -0
  134. package/lib/module/components/boundary/utils/refresh-signals.js.map +1 -1
  135. package/lib/module/components/boundary/utils/resolve-boundary-target.js +24 -0
  136. package/lib/module/components/boundary/utils/resolve-boundary-target.js.map +1 -0
  137. package/lib/module/components/masked-view.js +10 -2
  138. package/lib/module/components/masked-view.js.map +1 -1
  139. package/lib/module/components/screen-container/layers/backdrop.js +3 -1
  140. package/lib/module/components/screen-container/layers/backdrop.js.map +1 -1
  141. package/lib/module/components/screen-container/layers/maybe-masked-navigation-container.js +10 -2
  142. package/lib/module/components/screen-container/layers/maybe-masked-navigation-container.js.map +1 -1
  143. package/lib/module/components/screen-lifecycle/hooks/use-transition-start-controller.js +2 -0
  144. package/lib/module/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
  145. package/lib/module/navigators/react-navigation/index.js +4 -6
  146. package/lib/module/navigators/react-navigation/index.js.map +1 -1
  147. package/lib/module/providers/helpers/measured-bounds-writes.js +4 -1
  148. package/lib/module/providers/helpers/measured-bounds-writes.js.map +1 -1
  149. package/lib/module/providers/screen/gestures/gestures.provider.js +2 -8
  150. package/lib/module/providers/screen/gestures/gestures.provider.js.map +1 -1
  151. package/lib/module/providers/screen/gestures/pan/behavior/pan-lifecycle.js +1 -0
  152. package/lib/module/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  153. package/lib/module/providers/screen/gestures/pinch/activation/use-pinch-activation.js +35 -2
  154. package/lib/module/providers/screen/gestures/pinch/activation/use-pinch-activation.js.map +1 -1
  155. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +1 -0
  156. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  157. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-release.js +3 -2
  158. package/lib/module/providers/screen/gestures/pinch/behavior/pinch-release.js.map +1 -1
  159. package/lib/module/providers/screen/gestures/types.js.map +1 -1
  160. package/lib/module/providers/screen/styles/helpers/transition-visual-state.js +35 -0
  161. package/lib/module/providers/screen/styles/helpers/transition-visual-state.js.map +1 -0
  162. package/lib/module/providers/screen/styles/helpers/visibility-gate.js +11 -5
  163. package/lib/module/providers/screen/styles/helpers/visibility-gate.js.map +1 -1
  164. package/lib/module/providers/screen/styles/hooks/use-interpolated-style-maps.js +23 -10
  165. package/lib/module/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  166. package/lib/module/providers/screen/styles/hooks/use-maybe-block-visibility.js +10 -8
  167. package/lib/module/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  168. package/lib/module/stores/bounds/internals/links.js +4 -4
  169. package/lib/module/stores/bounds/internals/links.js.map +1 -1
  170. package/lib/module/stores/scroll.store.js +17 -0
  171. package/lib/module/stores/scroll.store.js.map +1 -1
  172. package/lib/module/stores/system.store.js +2 -0
  173. package/lib/module/stores/system.store.js.map +1 -1
  174. package/lib/module/utils/animation/animate-to-progress.js +21 -0
  175. package/lib/module/utils/animation/animate-to-progress.js.map +1 -1
  176. package/lib/module/utils/animation/animate.js +14 -2
  177. package/lib/module/utils/animation/animate.js.map +1 -1
  178. package/lib/module/utils/animation/spring/spring.js +23 -3
  179. package/lib/module/utils/animation/spring/spring.js.map +1 -1
  180. package/lib/module/utils/animation/spring/springUtils.js +95 -0
  181. package/lib/module/utils/animation/spring/springUtils.js.map +1 -1
  182. package/lib/module/utils/animation/state.js +2 -0
  183. package/lib/module/utils/bounds/navigation/reveal/math.js +16 -5
  184. package/lib/module/utils/bounds/navigation/reveal/math.js.map +1 -1
  185. package/lib/module/utils/bounds/navigation/zoom/build.js +46 -22
  186. package/lib/module/utils/bounds/navigation/zoom/build.js.map +1 -1
  187. package/lib/module/utils/bounds/navigation/zoom/drag.js +2 -30
  188. package/lib/module/utils/bounds/navigation/zoom/drag.js.map +1 -1
  189. package/lib/module/utils/bounds/navigation/zoom/helpers.js +4 -18
  190. package/lib/module/utils/bounds/navigation/zoom/helpers.js.map +1 -1
  191. package/lib/typescript/animation/snap-to.d.ts.map +1 -1
  192. package/lib/typescript/components/boundary/components/boundary-target.d.ts +2 -1
  193. package/lib/typescript/components/boundary/components/boundary-target.d.ts.map +1 -1
  194. package/lib/typescript/components/boundary/create-boundary-component.d.ts.map +1 -1
  195. package/lib/typescript/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts.map +1 -1
  196. package/lib/typescript/components/boundary/hooks/use-boundary-measurement.d.ts +3 -4
  197. package/lib/typescript/components/boundary/hooks/use-boundary-measurement.d.ts.map +1 -1
  198. package/lib/typescript/components/boundary/index.d.ts +6 -9
  199. package/lib/typescript/components/boundary/index.d.ts.map +1 -1
  200. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts +1 -3
  201. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts.map +1 -1
  202. package/lib/typescript/components/boundary/portal/components/boundary-content-portal/index.d.ts.map +1 -1
  203. package/lib/typescript/components/boundary/portal/components/boundary-portal/components/host.d.ts.map +1 -1
  204. package/lib/typescript/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.d.ts.map +1 -1
  205. package/lib/typescript/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts +1 -10
  206. package/lib/typescript/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts.map +1 -1
  207. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts +1 -3
  208. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -1
  209. package/lib/typescript/components/boundary/portal/components/boundary-portal/hooks/use-placeholder-styles.d.ts +2 -2
  210. package/lib/typescript/components/boundary/portal/components/boundary-portal/index.d.ts +2 -2
  211. package/lib/typescript/components/boundary/portal/components/boundary-portal/index.d.ts.map +1 -1
  212. package/lib/typescript/components/boundary/portal/components/boundary-portal/stores/host-registry.store.d.ts +0 -1
  213. package/lib/typescript/components/boundary/portal/components/boundary-portal/stores/host-registry.store.d.ts.map +1 -1
  214. package/lib/typescript/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts +1 -10
  215. package/lib/typescript/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts.map +1 -1
  216. package/lib/typescript/components/boundary/portal/utils/handoff-target.d.ts +12 -0
  217. package/lib/typescript/components/boundary/portal/utils/handoff-target.d.ts.map +1 -0
  218. package/lib/typescript/components/boundary/portal/utils/resolve-portal.d.ts +2 -3
  219. package/lib/typescript/components/boundary/portal/utils/resolve-portal.d.ts.map +1 -1
  220. package/lib/typescript/components/boundary/portal/utils/teleport-control.d.ts +0 -4
  221. package/lib/typescript/components/boundary/portal/utils/teleport-control.d.ts.map +1 -1
  222. package/lib/typescript/components/boundary/providers/boundary-root.provider.d.ts +8 -12
  223. package/lib/typescript/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
  224. package/lib/typescript/components/boundary/utils/refresh-signals.d.ts +1 -0
  225. package/lib/typescript/components/boundary/utils/refresh-signals.d.ts.map +1 -1
  226. package/lib/typescript/components/boundary/utils/resolve-boundary-target.d.ts +12 -0
  227. package/lib/typescript/components/boundary/utils/resolve-boundary-target.d.ts.map +1 -0
  228. package/lib/typescript/components/create-transition-aware-component.d.ts +5 -6
  229. package/lib/typescript/components/create-transition-aware-component.d.ts.map +1 -1
  230. package/lib/typescript/components/masked-view.d.ts.map +1 -1
  231. package/lib/typescript/components/screen-container/layers/backdrop.d.ts.map +1 -1
  232. package/lib/typescript/components/screen-container/layers/maybe-masked-navigation-container.d.ts.map +1 -1
  233. package/lib/typescript/components/screen-lifecycle/hooks/use-transition-start-controller.d.ts.map +1 -1
  234. package/lib/typescript/index.d.ts +650 -702
  235. package/lib/typescript/index.d.ts.map +1 -1
  236. package/lib/typescript/navigators/react-navigation/index.d.ts +6 -17
  237. package/lib/typescript/navigators/react-navigation/index.d.ts.map +1 -1
  238. package/lib/typescript/providers/helpers/measured-bounds-writes.d.ts.map +1 -1
  239. package/lib/typescript/providers/screen/gestures/gestures.provider.d.ts.map +1 -1
  240. package/lib/typescript/providers/screen/gestures/pan/behavior/pan-lifecycle.d.ts.map +1 -1
  241. package/lib/typescript/providers/screen/gestures/pinch/activation/use-pinch-activation.d.ts +2 -1
  242. package/lib/typescript/providers/screen/gestures/pinch/activation/use-pinch-activation.d.ts.map +1 -1
  243. package/lib/typescript/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts.map +1 -1
  244. package/lib/typescript/providers/screen/gestures/pinch/behavior/pinch-release.d.ts.map +1 -1
  245. package/lib/typescript/providers/screen/gestures/types.d.ts +1 -9
  246. package/lib/typescript/providers/screen/gestures/types.d.ts.map +1 -1
  247. package/lib/typescript/providers/screen/styles/helpers/transition-visual-state.d.ts +18 -0
  248. package/lib/typescript/providers/screen/styles/helpers/transition-visual-state.d.ts.map +1 -0
  249. package/lib/typescript/providers/screen/styles/helpers/visibility-gate.d.ts +2 -2
  250. package/lib/typescript/providers/screen/styles/helpers/visibility-gate.d.ts.map +1 -1
  251. package/lib/typescript/providers/screen/styles/hooks/slot-resolvers.d.ts +4 -4
  252. package/lib/typescript/providers/screen/styles/hooks/slot-resolvers.d.ts.map +1 -1
  253. package/lib/typescript/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  254. package/lib/typescript/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts +2 -2
  255. package/lib/typescript/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts.map +1 -1
  256. package/lib/typescript/stores/bounds/internals/links.d.ts +1 -1
  257. package/lib/typescript/stores/bounds/internals/links.d.ts.map +1 -1
  258. package/lib/typescript/stores/scroll.store.d.ts +7 -0
  259. package/lib/typescript/stores/scroll.store.d.ts.map +1 -1
  260. package/lib/typescript/stores/system.store.d.ts +5 -0
  261. package/lib/typescript/stores/system.store.d.ts.map +1 -1
  262. package/lib/typescript/utils/animation/animate-to-progress.d.ts +6 -1
  263. package/lib/typescript/utils/animation/animate-to-progress.d.ts.map +1 -1
  264. package/lib/typescript/utils/animation/animate.d.ts +2 -2
  265. package/lib/typescript/utils/animation/animate.d.ts.map +1 -1
  266. package/lib/typescript/utils/animation/spring/spring.d.ts +2 -2
  267. package/lib/typescript/utils/animation/spring/spring.d.ts.map +1 -1
  268. package/lib/typescript/utils/animation/spring/springUtils.d.ts +3 -0
  269. package/lib/typescript/utils/animation/spring/springUtils.d.ts.map +1 -1
  270. package/lib/typescript/utils/animation/state.d.ts +6 -0
  271. package/lib/typescript/utils/animation/state.d.ts.map +1 -1
  272. package/lib/typescript/utils/bounds/navigation/reveal/math.d.ts +9 -0
  273. package/lib/typescript/utils/bounds/navigation/reveal/math.d.ts.map +1 -1
  274. package/lib/typescript/utils/bounds/navigation/zoom/build.d.ts.map +1 -1
  275. package/lib/typescript/utils/bounds/navigation/zoom/drag.d.ts +2 -11
  276. package/lib/typescript/utils/bounds/navigation/zoom/drag.d.ts.map +1 -1
  277. package/lib/typescript/utils/bounds/navigation/zoom/helpers.d.ts +7 -4
  278. package/lib/typescript/utils/bounds/navigation/zoom/helpers.d.ts.map +1 -1
  279. package/package.json +1 -1
  280. package/src/animation/snap-to.ts +5 -0
  281. package/src/components/boundary/components/boundary-target.tsx +37 -23
  282. package/src/components/boundary/create-boundary-component.tsx +29 -3
  283. package/src/components/boundary/hooks/lifecycles/use-refresh-boundary.ts +11 -0
  284. package/src/components/boundary/hooks/use-boundary-measurement.ts +3 -9
  285. package/src/components/boundary/index.tsx +4 -8
  286. package/src/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.ts +73 -276
  287. package/src/components/boundary/portal/components/boundary-content-portal/index.tsx +31 -12
  288. package/src/components/boundary/portal/components/boundary-portal/components/host.tsx +2 -12
  289. package/src/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.tsx +64 -62
  290. package/src/components/boundary/portal/components/boundary-portal/helpers/offset-style.ts +2 -9
  291. package/src/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +73 -187
  292. package/src/components/boundary/portal/components/boundary-portal/index.tsx +72 -12
  293. package/src/components/boundary/portal/components/boundary-portal/stores/host-registry.store.ts +0 -1
  294. package/src/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.ts +2 -39
  295. package/src/components/boundary/portal/utils/handoff-target.ts +48 -0
  296. package/src/components/boundary/portal/utils/resolve-portal.ts +26 -18
  297. package/src/components/boundary/portal/utils/teleport-control.ts +0 -12
  298. package/src/components/boundary/providers/boundary-root.provider.tsx +28 -80
  299. package/src/components/boundary/utils/refresh-signals.ts +8 -0
  300. package/src/components/boundary/utils/resolve-boundary-target.tsx +39 -0
  301. package/src/components/masked-view.tsx +20 -4
  302. package/src/components/screen-container/layers/backdrop.tsx +3 -1
  303. package/src/components/screen-container/layers/maybe-masked-navigation-container.tsx +14 -4
  304. package/src/components/screen-lifecycle/hooks/use-transition-start-controller.ts +2 -0
  305. package/src/navigators/react-navigation/index.tsx +4 -48
  306. package/src/providers/helpers/measured-bounds-writes.ts +1 -0
  307. package/src/providers/screen/gestures/gestures.provider.tsx +2 -10
  308. package/src/providers/screen/gestures/pan/behavior/pan-lifecycle.ts +1 -0
  309. package/src/providers/screen/gestures/pinch/activation/use-pinch-activation.ts +74 -3
  310. package/src/providers/screen/gestures/pinch/behavior/pinch-lifecycle.ts +1 -0
  311. package/src/providers/screen/gestures/pinch/behavior/pinch-release.ts +2 -4
  312. package/src/providers/screen/gestures/types.ts +0 -14
  313. package/src/providers/screen/styles/helpers/transition-visual-state.ts +44 -0
  314. package/src/providers/screen/styles/helpers/visibility-gate.ts +17 -7
  315. package/src/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +30 -15
  316. package/src/providers/screen/styles/hooks/use-maybe-block-visibility.tsx +14 -13
  317. package/src/stores/bounds/internals/links.ts +13 -2
  318. package/src/stores/scroll.store.ts +23 -0
  319. package/src/stores/system.store.ts +8 -0
  320. package/src/utils/animation/animate-to-progress.ts +59 -28
  321. package/src/utils/animation/animate.ts +18 -2
  322. package/src/utils/animation/spring/spring.ts +36 -1
  323. package/src/utils/animation/spring/springUtils.ts +130 -0
  324. package/src/utils/animation/state.ts +8 -0
  325. package/src/utils/bounds/navigation/reveal/math.ts +21 -5
  326. package/src/utils/bounds/navigation/zoom/build.ts +77 -23
  327. package/src/utils/bounds/navigation/zoom/drag.ts +3 -42
  328. package/src/utils/bounds/navigation/zoom/helpers.ts +9 -23
  329. package/lib/commonjs/components/boundary/hooks/use-register-target.js +0 -32
  330. package/lib/commonjs/components/boundary/hooks/use-register-target.js.map +0 -1
  331. package/lib/commonjs/components/boundary/portal/components/boundary-portal/components/portal-slot.js +0 -52
  332. package/lib/commonjs/components/boundary/portal/components/boundary-portal/components/portal-slot.js.map +0 -1
  333. package/lib/commonjs/components/boundary/portal/utils/ownership.js +0 -220
  334. package/lib/commonjs/components/boundary/portal/utils/ownership.js.map +0 -1
  335. package/lib/commonjs/components/boundary/portal/utils/shallow-equal.js +0 -29
  336. package/lib/commonjs/components/boundary/portal/utils/shallow-equal.js.map +0 -1
  337. package/lib/commonjs/components/boundary/portal/utils/visible-host.js +0 -25
  338. package/lib/commonjs/components/boundary/portal/utils/visible-host.js.map +0 -1
  339. package/lib/commonjs/providers/screen/gestures/rotation/activation/use-rotation-activation.js +0 -64
  340. package/lib/commonjs/providers/screen/gestures/rotation/activation/use-rotation-activation.js.map +0 -1
  341. package/lib/commonjs/providers/screen/gestures/rotation/behavior/rotation-lifecycle.js +0 -21
  342. package/lib/commonjs/providers/screen/gestures/rotation/behavior/rotation-lifecycle.js.map +0 -1
  343. package/lib/commonjs/providers/screen/gestures/rotation/behavior/use-rotation-behavior.js +0 -29
  344. package/lib/commonjs/providers/screen/gestures/rotation/behavior/use-rotation-behavior.js.map +0 -1
  345. package/lib/commonjs/providers/screen/gestures/rotation/use-build-rotation-gesture.js +0 -38
  346. package/lib/commonjs/providers/screen/gestures/rotation/use-build-rotation-gesture.js.map +0 -1
  347. package/lib/commonjs/providers/screen/styles/helpers/opening-phase.js +0 -32
  348. package/lib/commonjs/providers/screen/styles/helpers/opening-phase.js.map +0 -1
  349. package/lib/module/components/boundary/hooks/use-register-target.js +0 -27
  350. package/lib/module/components/boundary/hooks/use-register-target.js.map +0 -1
  351. package/lib/module/components/boundary/portal/components/boundary-portal/components/portal-slot.js +0 -47
  352. package/lib/module/components/boundary/portal/components/boundary-portal/components/portal-slot.js.map +0 -1
  353. package/lib/module/components/boundary/portal/utils/ownership.js +0 -213
  354. package/lib/module/components/boundary/portal/utils/ownership.js.map +0 -1
  355. package/lib/module/components/boundary/portal/utils/shallow-equal.js +0 -24
  356. package/lib/module/components/boundary/portal/utils/shallow-equal.js.map +0 -1
  357. package/lib/module/components/boundary/portal/utils/visible-host.js +0 -20
  358. package/lib/module/components/boundary/portal/utils/visible-host.js.map +0 -1
  359. package/lib/module/providers/screen/gestures/rotation/activation/use-rotation-activation.js +0 -59
  360. package/lib/module/providers/screen/gestures/rotation/activation/use-rotation-activation.js.map +0 -1
  361. package/lib/module/providers/screen/gestures/rotation/behavior/rotation-lifecycle.js +0 -15
  362. package/lib/module/providers/screen/gestures/rotation/behavior/rotation-lifecycle.js.map +0 -1
  363. package/lib/module/providers/screen/gestures/rotation/behavior/use-rotation-behavior.js +0 -24
  364. package/lib/module/providers/screen/gestures/rotation/behavior/use-rotation-behavior.js.map +0 -1
  365. package/lib/module/providers/screen/gestures/rotation/use-build-rotation-gesture.js +0 -33
  366. package/lib/module/providers/screen/gestures/rotation/use-build-rotation-gesture.js.map +0 -1
  367. package/lib/module/providers/screen/styles/helpers/opening-phase.js +0 -26
  368. package/lib/module/providers/screen/styles/helpers/opening-phase.js.map +0 -1
  369. package/lib/typescript/components/boundary/hooks/use-register-target.d.ts +0 -10
  370. package/lib/typescript/components/boundary/hooks/use-register-target.d.ts.map +0 -1
  371. package/lib/typescript/components/boundary/portal/components/boundary-portal/components/portal-slot.d.ts +0 -13
  372. package/lib/typescript/components/boundary/portal/components/boundary-portal/components/portal-slot.d.ts.map +0 -1
  373. package/lib/typescript/components/boundary/portal/utils/ownership.d.ts +0 -34
  374. package/lib/typescript/components/boundary/portal/utils/ownership.d.ts.map +0 -1
  375. package/lib/typescript/components/boundary/portal/utils/shallow-equal.d.ts +0 -8
  376. package/lib/typescript/components/boundary/portal/utils/shallow-equal.d.ts.map +0 -1
  377. package/lib/typescript/components/boundary/portal/utils/visible-host.d.ts +0 -8
  378. package/lib/typescript/components/boundary/portal/utils/visible-host.d.ts.map +0 -1
  379. package/lib/typescript/providers/screen/gestures/rotation/activation/use-rotation-activation.d.ts +0 -15
  380. package/lib/typescript/providers/screen/gestures/rotation/activation/use-rotation-activation.d.ts.map +0 -1
  381. package/lib/typescript/providers/screen/gestures/rotation/behavior/rotation-lifecycle.d.ts +0 -4
  382. package/lib/typescript/providers/screen/gestures/rotation/behavior/rotation-lifecycle.d.ts.map +0 -1
  383. package/lib/typescript/providers/screen/gestures/rotation/behavior/use-rotation-behavior.d.ts +0 -5
  384. package/lib/typescript/providers/screen/gestures/rotation/behavior/use-rotation-behavior.d.ts.map +0 -1
  385. package/lib/typescript/providers/screen/gestures/rotation/use-build-rotation-gesture.d.ts +0 -9
  386. package/lib/typescript/providers/screen/gestures/rotation/use-build-rotation-gesture.d.ts.map +0 -1
  387. package/lib/typescript/providers/screen/styles/helpers/opening-phase.d.ts +0 -16
  388. package/lib/typescript/providers/screen/styles/helpers/opening-phase.d.ts.map +0 -1
  389. package/src/components/boundary/hooks/use-register-target.ts +0 -43
  390. package/src/components/boundary/portal/components/boundary-portal/components/portal-slot.tsx +0 -80
  391. package/src/components/boundary/portal/utils/ownership.ts +0 -319
  392. package/src/components/boundary/portal/utils/shallow-equal.ts +0 -25
  393. package/src/components/boundary/portal/utils/visible-host.ts +0 -24
  394. package/src/providers/screen/gestures/rotation/activation/use-rotation-activation.ts +0 -88
  395. package/src/providers/screen/gestures/rotation/behavior/rotation-lifecycle.ts +0 -19
  396. package/src/providers/screen/gestures/rotation/behavior/use-rotation-behavior.ts +0 -47
  397. package/src/providers/screen/gestures/rotation/use-build-rotation-gesture.ts +0 -50
  398. package/src/providers/screen/styles/helpers/opening-phase.ts +0 -25
@@ -1,16 +0,0 @@
1
- /**
2
- * The "pre-start" window of an opening transition: the screen has committed to
3
- * opening (`entering`) but `transitionProgress` has not yet moved past 0, so no
4
- * transformed frame has been produced yet.
5
- *
6
- * This window is a quarantine, and two source-level guards key off it:
7
- * - the visibility gate keeps the entering screen hidden (it must not be SEEN), and
8
- * - interpolator ownership stays on "current" so the entering screen does not
9
- * DRIVE other screens' styles until its transition is actually live.
10
- *
11
- * Both must agree on when the open transition has started, so the threshold
12
- * lives here in one place rather than being re-derived at each site.
13
- */
14
- export declare const hasOpenTransitionStarted: (transitionProgress: number) => boolean;
15
- export declare const isOpeningBeforeStart: (entering: number, transitionProgress: number) => boolean;
16
- //# sourceMappingURL=opening-phase.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"opening-phase.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/screen/styles/helpers/opening-phase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,GAAI,oBAAoB,MAAM,YAGlE,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAChC,UAAU,MAAM,EAChB,oBAAoB,MAAM,YAI1B,CAAC"}
@@ -1,43 +0,0 @@
1
- import { useLayoutEffect } from "react";
2
- import type { View } from "react-native";
3
- import type { AnimatedRef } from "react-native-reanimated";
4
- import { logger } from "../../../utils/logger";
5
- import {
6
- TARGET_OUTSIDE_ROOT_WARNING,
7
- useBoundaryRootContext,
8
- } from "../providers/boundary-root.provider";
9
-
10
- interface RegisterTargetProps {
11
- targetAnimatedRef: AnimatedRef<View>;
12
- preparedStyles: Record<string, any>;
13
- measurementRef: AnimatedRef<View>;
14
- }
15
-
16
- export const useRegisterTarget = ({
17
- targetAnimatedRef,
18
- preparedStyles,
19
- measurementRef,
20
- }: RegisterTargetProps) => {
21
- const rootContext = useBoundaryRootContext();
22
- const registerTargetRef = rootContext?.registerTargetRef;
23
- const unregisterTargetRef = rootContext?.unregisterTargetRef;
24
- useLayoutEffect(() => {
25
- if (!registerTargetRef || !unregisterTargetRef) {
26
- if (__DEV__) {
27
- logger.warn(TARGET_OUTSIDE_ROOT_WARNING);
28
- }
29
- return;
30
- }
31
-
32
- registerTargetRef(targetAnimatedRef, preparedStyles, measurementRef);
33
- return () => {
34
- unregisterTargetRef(targetAnimatedRef);
35
- };
36
- }, [
37
- registerTargetRef,
38
- unregisterTargetRef,
39
- targetAnimatedRef,
40
- preparedStyles,
41
- measurementRef,
42
- ]);
43
- };
@@ -1,80 +0,0 @@
1
- import {
2
- type ComponentProps,
3
- type ComponentType,
4
- memo,
5
- type ReactNode,
6
- } from "react";
7
- import type { View } from "react-native";
8
- import Animated, { type AnimatedRef } from "react-native-reanimated";
9
- import { scheduleOnUI } from "react-native-worklets";
10
- import { logger } from "../../../../../../utils/logger";
11
- import {
12
- isTeleportAvailable,
13
- PORTAL_POINTER_EVENTS,
14
- NativePortal as TeleportPortal,
15
- } from "../../../teleport";
16
- import { usePlaceholderStyles } from "../hooks/use-placeholder-styles";
17
-
18
- type NullableHostNamePortalProps = Omit<
19
- ComponentProps<NonNullable<typeof TeleportPortal>>,
20
- "hostName"
21
- > & {
22
- hostName?: string | null;
23
- };
24
-
25
- const AnimatedNativePortal = TeleportPortal
26
- ? Animated.createAnimatedComponent(
27
- TeleportPortal as ComponentType<NullableHostNamePortalProps>,
28
- )
29
- : null;
30
-
31
- type BoundaryPortalSlotProps = {
32
- id: string;
33
- children: ReactNode;
34
- enabled: boolean;
35
- animatedProps: any;
36
- placeholderRef?: AnimatedRef<View>;
37
- };
38
-
39
- export const BoundaryPortalSlot = memo(function BoundaryPortalSlot({
40
- id,
41
- children,
42
- enabled,
43
- animatedProps,
44
- placeholderRef,
45
- }: BoundaryPortalSlotProps) {
46
- const isPortalEnabled = enabled && isTeleportAvailable;
47
-
48
- if (__DEV__ && enabled && !id) {
49
- logger.warnOnce(
50
- "portal:missing-id",
51
- "A boundary portal was rendered without an id; rendering inline.",
52
- );
53
- }
54
-
55
- const { handleOnLayout, placeholderStyle } = usePlaceholderStyles();
56
-
57
- if (isPortalEnabled && AnimatedNativePortal) {
58
- return (
59
- <Animated.View
60
- ref={placeholderRef}
61
- onLayout={({ nativeEvent: { layout } }) =>
62
- scheduleOnUI(handleOnLayout, layout)
63
- }
64
- style={placeholderStyle}
65
- pointerEvents={PORTAL_POINTER_EVENTS}
66
- collapsable={false}
67
- >
68
- <AnimatedNativePortal
69
- animatedProps={animatedProps}
70
- name={id}
71
- pointerEvents={PORTAL_POINTER_EVENTS}
72
- >
73
- {children}
74
- </AnimatedNativePortal>
75
- </Animated.View>
76
- );
77
- }
78
-
79
- return children;
80
- });
@@ -1,319 +0,0 @@
1
- import {
2
- getDestinationScreenKeyFromPairKey,
3
- getLinkKeyFromTag,
4
- getLink as getPairLink,
5
- getSourceScreenKeyFromPairKey,
6
- } from "../../../../stores/bounds/helpers/link-pairs.helpers";
7
- import type {
8
- LinkKey,
9
- LinkPairsState,
10
- ScreenKey,
11
- ScreenPairKey,
12
- TagLink,
13
- } from "../../../../stores/bounds/types";
14
-
15
- export type PortalOwnershipSignal =
16
- | {
17
- hostScreenKey: null;
18
- ownerPairKey?: ScreenPairKey;
19
- ownerScreenKey: null;
20
- status: "clear" | "pending";
21
- }
22
- | {
23
- hostScreenKey: ScreenKey;
24
- ownerPairKey: ScreenPairKey;
25
- ownerScreenKey: ScreenKey;
26
- status: "complete";
27
- };
28
-
29
- export const isHandoffHostClosingComplete = ({
30
- closing,
31
- progressAnimating,
32
- progressSettled,
33
- willAnimate,
34
- }: {
35
- closing: number;
36
- progressAnimating: number;
37
- progressSettled: number;
38
- willAnimate: number;
39
- }) => {
40
- "worklet";
41
-
42
- // A close request marks `closing` before its animation starts. Springs can
43
- // also enter their settle-distance threshold before their final frame.
44
- return (
45
- !!closing &&
46
- willAnimate === 0 &&
47
- progressSettled === 1 &&
48
- progressAnimating === 0
49
- );
50
- };
51
-
52
- const hasSeenScreenKey = (screenKeys: ScreenKey[], screenKey: ScreenKey) => {
53
- "worklet";
54
- for (let index = 0; index < screenKeys.length; index++) {
55
- if (screenKeys[index] === screenKey) {
56
- return true;
57
- }
58
- }
59
- return false;
60
- };
61
-
62
- const isReturningToPreviousSourceHost = ({
63
- hostScreenKey,
64
- ownerPairKey,
65
- previousOwnerPairKey,
66
- }: {
67
- hostScreenKey: ScreenKey;
68
- ownerPairKey: ScreenPairKey;
69
- previousOwnerPairKey: ScreenPairKey;
70
- }) => {
71
- "worklet";
72
- const previousSourceScreenKey =
73
- getSourceScreenKeyFromPairKey(previousOwnerPairKey);
74
- const previousDestinationScreenKey =
75
- getDestinationScreenKeyFromPairKey(previousOwnerPairKey);
76
- const ownerDestinationScreenKey =
77
- getDestinationScreenKeyFromPairKey(ownerPairKey);
78
-
79
- return (
80
- previousDestinationScreenKey !== "" &&
81
- ownerDestinationScreenKey !== "" &&
82
- previousDestinationScreenKey !== previousSourceScreenKey &&
83
- ownerDestinationScreenKey === previousSourceScreenKey &&
84
- hostScreenKey === previousSourceScreenKey
85
- );
86
- };
87
-
88
- export const canSwitchHandoffHostImmediately = ({
89
- hostScreenKey,
90
- ownerPairKey,
91
- previousOwnerPairKey,
92
- }: {
93
- hostScreenKey: ScreenKey | null;
94
- ownerPairKey?: ScreenPairKey;
95
- previousOwnerPairKey?: ScreenPairKey;
96
- }) => {
97
- "worklet";
98
- if (!hostScreenKey || !ownerPairKey) {
99
- return false;
100
- }
101
-
102
- if (hostScreenKey === getSourceScreenKeyFromPairKey(ownerPairKey)) {
103
- return true;
104
- }
105
-
106
- if (!previousOwnerPairKey) {
107
- return false;
108
- }
109
-
110
- return isReturningToPreviousSourceHost({
111
- hostScreenKey,
112
- ownerPairKey,
113
- previousOwnerPairKey,
114
- });
115
- };
116
-
117
- const isActiveHandoffLink = ({
118
- link,
119
- linkKey,
120
- pairKey,
121
- pairsState,
122
- }: {
123
- link: TagLink;
124
- linkKey: LinkKey;
125
- pairKey: ScreenPairKey;
126
- pairsState: LinkPairsState;
127
- }) => {
128
- "worklet";
129
- if (!link.group) {
130
- return true;
131
- }
132
-
133
- const activeId = pairsState[pairKey]?.groups?.[link.group]?.activeId;
134
- return !activeId || activeId === linkKey;
135
- };
136
-
137
- const resolveHandoffStyleOwnerScreenKey = ({
138
- hostScreenKey,
139
- isSettledHostReady,
140
- settledHostScreenKey,
141
- sourceScreenKey,
142
- }: {
143
- hostScreenKey: ScreenKey;
144
- isSettledHostReady: boolean;
145
- settledHostScreenKey?: ScreenKey | null;
146
- sourceScreenKey: ScreenKey;
147
- }): ScreenKey => {
148
- "worklet";
149
- if (settledHostScreenKey === hostScreenKey && isSettledHostReady) {
150
- return hostScreenKey;
151
- }
152
-
153
- return sourceScreenKey;
154
- };
155
-
156
- const pendingSignal = (sourcePairKey: ScreenPairKey): PortalOwnershipSignal => {
157
- "worklet";
158
- return {
159
- hostScreenKey: null,
160
- ownerPairKey: sourcePairKey,
161
- ownerScreenKey: null,
162
- status: "pending",
163
- };
164
- };
165
-
166
- const clearSignal = (sourcePairKey: ScreenPairKey): PortalOwnershipSignal => {
167
- "worklet";
168
- return {
169
- hostScreenKey: null,
170
- ownerPairKey: sourcePairKey,
171
- ownerScreenKey: null,
172
- status: "clear",
173
- };
174
- };
175
-
176
- export const resolveBoundaryPortalOwnership = ({
177
- boundaryId,
178
- currentScreenKey,
179
- handoff,
180
- isSettledHostClosingComplete = false,
181
- isSettledHostReady = false,
182
- pairsState,
183
- settledHostScreenKey = null,
184
- sourcePairKey,
185
- }: {
186
- boundaryId: string;
187
- currentScreenKey: ScreenKey;
188
- handoff: boolean;
189
- isSettledHostClosingComplete?: boolean;
190
- isSettledHostReady?: boolean;
191
- pairsState: LinkPairsState;
192
- settledHostScreenKey?: ScreenKey | null;
193
- sourcePairKey: ScreenPairKey;
194
- }): PortalOwnershipSignal => {
195
- "worklet";
196
- const linkKey = getLinkKeyFromTag(boundaryId);
197
- const link = getPairLink(pairsState, sourcePairKey, linkKey);
198
-
199
- if (!link?.source) {
200
- return pendingSignal(sourcePairKey);
201
- }
202
-
203
- if (
204
- !isActiveHandoffLink({
205
- link,
206
- linkKey,
207
- pairKey: sourcePairKey,
208
- pairsState,
209
- })
210
- ) {
211
- return clearSignal(sourcePairKey);
212
- }
213
-
214
- if (!handoff) {
215
- return {
216
- hostScreenKey: currentScreenKey,
217
- ownerPairKey: sourcePairKey,
218
- ownerScreenKey: currentScreenKey,
219
- status: "complete",
220
- };
221
- }
222
-
223
- if (link.status !== "complete") {
224
- return pendingSignal(sourcePairKey);
225
- }
226
-
227
- let hostScreenKey = link.destination.screenKey;
228
- let ownerPairKey = sourcePairKey;
229
- const seenScreenKeys: ScreenKey[] = [
230
- getSourceScreenKeyFromPairKey(sourcePairKey),
231
- hostScreenKey,
232
- ];
233
-
234
- const pairKeys = Object.keys(pairsState);
235
-
236
- for (let hop = 0; hop < pairKeys.length; hop++) {
237
- let didAdvance = false;
238
- let hasPendingNextHop = false;
239
- let didHitVisitedScreen = false;
240
-
241
- for (let index = 0; index < pairKeys.length; index++) {
242
- const candidatePairKey = pairKeys[index];
243
- if (!candidatePairKey || candidatePairKey === ownerPairKey) {
244
- continue;
245
- }
246
-
247
- const candidate = getPairLink(pairsState, candidatePairKey, linkKey);
248
- if (!candidate?.source || candidate.source.screenKey !== hostScreenKey) {
249
- continue;
250
- }
251
-
252
- if (!candidate.source.handoff) {
253
- continue;
254
- }
255
-
256
- if (
257
- !isActiveHandoffLink({
258
- link: candidate,
259
- linkKey,
260
- pairKey: candidatePairKey,
261
- pairsState,
262
- })
263
- ) {
264
- continue;
265
- }
266
-
267
- if (candidate.status !== "complete") {
268
- hasPendingNextHop = true;
269
- continue;
270
- }
271
-
272
- const nextHostScreenKey = candidate.destination.screenKey;
273
-
274
- ownerPairKey = candidatePairKey;
275
- hostScreenKey = nextHostScreenKey;
276
-
277
- if (hasSeenScreenKey(seenScreenKeys, nextHostScreenKey)) {
278
- didHitVisitedScreen = true;
279
- break;
280
- }
281
-
282
- seenScreenKeys.push(nextHostScreenKey);
283
- didAdvance = true;
284
- break;
285
- }
286
-
287
- if (didHitVisitedScreen) {
288
- break;
289
- }
290
-
291
- if (didAdvance) {
292
- continue;
293
- }
294
-
295
- if (hasPendingNextHop) {
296
- return pendingSignal(ownerPairKey);
297
- }
298
-
299
- break;
300
- }
301
-
302
- if (isSettledHostClosingComplete && settledHostScreenKey === hostScreenKey) {
303
- hostScreenKey = getSourceScreenKeyFromPairKey(ownerPairKey);
304
- }
305
-
306
- const ownerScreenKey = resolveHandoffStyleOwnerScreenKey({
307
- hostScreenKey,
308
- isSettledHostReady,
309
- settledHostScreenKey,
310
- sourceScreenKey: getSourceScreenKeyFromPairKey(ownerPairKey),
311
- });
312
-
313
- return {
314
- hostScreenKey,
315
- ownerPairKey,
316
- ownerScreenKey,
317
- status: "complete",
318
- };
319
- };
@@ -1,25 +0,0 @@
1
- /**
2
- * Shallow equality for the flat signal objects produced by the portal
3
- * `useAnimatedReaction` blocks. Both sides always carry the same fixed key set,
4
- * so iterating one side's keys is sufficient. A `null`/`undefined` operand
5
- * (the first reaction run) is treated as not-equal so the reaction proceeds.
6
- */
7
- export const shallowEqual = (
8
- a: Record<string, unknown> | null | undefined,
9
- b: Record<string, unknown> | null | undefined,
10
- ) => {
11
- "worklet";
12
- if (!a || !b) {
13
- return false;
14
- }
15
-
16
- const keys = Object.keys(a);
17
- for (let index = 0; index < keys.length; index++) {
18
- const key = keys[index];
19
- if (a[key] !== b[key]) {
20
- return false;
21
- }
22
- }
23
-
24
- return true;
25
- };
@@ -1,24 +0,0 @@
1
- export const resolveNextVisiblePortalHostName = ({
2
- canSwitchImmediately,
3
- isInterpolatorReady,
4
- requestedName,
5
- shouldTeleport,
6
- visibleName,
7
- }: {
8
- canSwitchImmediately?: boolean;
9
- isInterpolatorReady: boolean;
10
- requestedName: string | null;
11
- shouldTeleport: boolean;
12
- visibleName: string | null;
13
- }) => {
14
- "worklet";
15
- if (!shouldTeleport) {
16
- return null;
17
- }
18
-
19
- if (requestedName && (canSwitchImmediately || isInterpolatorReady)) {
20
- return requestedName;
21
- }
22
-
23
- return visibleName;
24
- };
@@ -1,88 +0,0 @@
1
- import { useCallback, useMemo } from "react";
2
- import type {
3
- GestureStateManager,
4
- GestureTouchEvent,
5
- } from "react-native-gesture-handler";
6
- import type { SharedValue } from "react-native-reanimated";
7
- import type { ScreenOptionsContextValue } from "../../../options";
8
- import { resolvePinchRuntime } from "../../shared/runtime";
9
- import type {
10
- GestureCompositionOwner,
11
- RotationGestureRuntime,
12
- } from "../../types";
13
-
14
- interface UseRotationActivationProps {
15
- runtime: SharedValue<RotationGestureRuntime>;
16
- screenOptions: ScreenOptionsContextValue;
17
- gestureCompositionOwner: SharedValue<GestureCompositionOwner>;
18
- }
19
-
20
- export const useRotationActivation = ({
21
- runtime,
22
- screenOptions,
23
- gestureCompositionOwner,
24
- }: UseRotationActivationProps) => {
25
- const onTouchesDown = useCallback(
26
- (
27
- event: GestureTouchEvent,
28
- stateManager: GestureStateManager | undefined,
29
- ) => {
30
- "worklet";
31
- const { participation, policy } = resolvePinchRuntime(
32
- runtime.get(),
33
- screenOptions.get(),
34
- );
35
-
36
- if (!participation.canTrackGesture || !policy.enabled) {
37
- stateManager?.fail();
38
- return;
39
- }
40
-
41
- if (event.numberOfTouches === 2) {
42
- if (gestureCompositionOwner.get() === null) {
43
- gestureCompositionOwner.set("pinch");
44
- }
45
- stateManager?.activate();
46
- return;
47
- }
48
-
49
- if (event.numberOfTouches > 2) {
50
- stateManager?.fail();
51
- }
52
- },
53
- [runtime, screenOptions, gestureCompositionOwner],
54
- );
55
-
56
- const onTouchesMove = useCallback(
57
- (event: GestureTouchEvent, stateManager: GestureStateManager) => {
58
- "worklet";
59
- const { participation, policy } = resolvePinchRuntime(
60
- runtime.get(),
61
- screenOptions.get(),
62
- );
63
-
64
- if (!participation.canTrackGesture || !policy.enabled) {
65
- stateManager.fail();
66
- return;
67
- }
68
-
69
- if (event.numberOfTouches === 2) {
70
- if (gestureCompositionOwner.get() === null) {
71
- gestureCompositionOwner.set("pinch");
72
- }
73
- stateManager.activate();
74
- return;
75
- }
76
-
77
- if (event.numberOfTouches > 2) {
78
- stateManager.fail();
79
- }
80
- },
81
- [runtime, screenOptions, gestureCompositionOwner],
82
- );
83
-
84
- return useMemo(
85
- () => ({ onTouchesDown, onTouchesMove }),
86
- [onTouchesDown, onTouchesMove],
87
- );
88
- };
@@ -1,19 +0,0 @@
1
- import type { RotationGestureEvent, RotationGestureRuntime } from "../../types";
2
-
3
- export const startRotationGesture = (
4
- gestures: RotationGestureRuntime["stores"]["gestures"],
5
- ) => {
6
- "worklet";
7
- gestures.rotation.set(0);
8
- gestures.raw.rotation.set(0);
9
- };
10
-
11
- export const trackRotationGesture = (
12
- event: RotationGestureEvent,
13
- rawEvent: RotationGestureEvent,
14
- gestures: RotationGestureRuntime["stores"]["gestures"],
15
- ) => {
16
- "worklet";
17
- gestures.rotation.set(event.rotation);
18
- gestures.raw.rotation.set(rawEvent.rotation);
19
- };
@@ -1,47 +0,0 @@
1
- import { useCallback, useMemo } from "react";
2
- import type { SharedValue } from "react-native-reanimated";
3
- import type { ScreenOptionsContextValue } from "../../../options";
4
- import { resolvePinchRuntime } from "../../shared/runtime";
5
- import type {
6
- RotationBehavior,
7
- RotationGestureEvent,
8
- RotationGestureRuntime,
9
- } from "../../types";
10
- import {
11
- startRotationGesture,
12
- trackRotationGesture,
13
- } from "./rotation-lifecycle";
14
-
15
- export const useRotationBehavior = (
16
- runtime: SharedValue<RotationGestureRuntime>,
17
- screenOptions: ScreenOptionsContextValue,
18
- ): RotationBehavior => {
19
- const onStart = useCallback(() => {
20
- "worklet";
21
- const latestRuntime = resolvePinchRuntime(
22
- runtime.get(),
23
- screenOptions.get(),
24
- );
25
- startRotationGesture(latestRuntime.stores.gestures);
26
- }, [runtime, screenOptions]);
27
-
28
- const onUpdate = useCallback(
29
- (rawEvent: RotationGestureEvent) => {
30
- "worklet";
31
- const latestRuntime = resolvePinchRuntime(
32
- runtime.get(),
33
- screenOptions.get(),
34
- );
35
- trackRotationGesture(rawEvent, rawEvent, latestRuntime.stores.gestures);
36
- },
37
- [runtime, screenOptions],
38
- );
39
-
40
- return useMemo(
41
- () => ({
42
- onStart,
43
- onUpdate,
44
- }),
45
- [onStart, onUpdate],
46
- );
47
- };