react-native-screen-transitions 3.9.0 → 3.10.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 (383) hide show
  1. package/lib/commonjs/shared/animation/snap-to.js +2 -0
  2. package/lib/commonjs/shared/animation/snap-to.js.map +1 -1
  3. package/lib/commonjs/shared/components/boundary/components/boundary-target.js +19 -20
  4. package/lib/commonjs/shared/components/boundary/components/boundary-target.js.map +1 -1
  5. package/lib/commonjs/shared/components/boundary/create-boundary-component.js +16 -2
  6. package/lib/commonjs/shared/components/boundary/create-boundary-component.js.map +1 -1
  7. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js +5 -0
  8. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
  9. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js +1 -3
  10. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  11. package/lib/commonjs/shared/components/boundary/index.js +4 -3
  12. package/lib/commonjs/shared/components/boundary/index.js.map +1 -1
  13. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +47 -187
  14. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  15. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/index.js +21 -13
  16. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/index.js.map +1 -1
  17. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/host.js +1 -12
  18. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
  19. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +40 -33
  20. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
  21. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js +3 -4
  22. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -1
  23. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +46 -130
  24. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  25. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/index.js +45 -9
  26. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/index.js.map +1 -1
  27. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/host-registry.store.js.map +1 -1
  28. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js +2 -29
  29. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -1
  30. package/lib/commonjs/shared/components/boundary/portal/utils/handoff-target.js +33 -0
  31. package/lib/commonjs/shared/components/boundary/portal/utils/handoff-target.js.map +1 -0
  32. package/lib/commonjs/shared/components/boundary/portal/utils/resolve-portal.js +19 -15
  33. package/lib/commonjs/shared/components/boundary/portal/utils/resolve-portal.js.map +1 -1
  34. package/lib/commonjs/shared/components/boundary/portal/utils/teleport-control.js +1 -10
  35. package/lib/commonjs/shared/components/boundary/portal/utils/teleport-control.js.map +1 -1
  36. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js +18 -36
  37. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  38. package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js +7 -0
  39. package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js.map +1 -1
  40. package/lib/commonjs/shared/components/boundary/utils/resolve-boundary-target.js +29 -0
  41. package/lib/commonjs/shared/components/boundary/utils/resolve-boundary-target.js.map +1 -0
  42. package/lib/commonjs/shared/components/masked-view.js +9 -1
  43. package/lib/commonjs/shared/components/masked-view.js.map +1 -1
  44. package/lib/commonjs/shared/components/screen-container/layers/backdrop.js +3 -1
  45. package/lib/commonjs/shared/components/screen-container/layers/backdrop.js.map +1 -1
  46. package/lib/commonjs/shared/components/screen-container/layers/maybe-masked-navigation-container.js +9 -1
  47. package/lib/commonjs/shared/components/screen-container/layers/maybe-masked-navigation-container.js.map +1 -1
  48. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js +2 -0
  49. package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
  50. package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js +4 -1
  51. package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
  52. package/lib/commonjs/shared/providers/screen/gestures/gestures.provider.js +2 -8
  53. package/lib/commonjs/shared/providers/screen/gestures/gestures.provider.js.map +1 -1
  54. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js +1 -0
  55. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  56. package/lib/commonjs/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.js +37 -3
  57. package/lib/commonjs/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.js.map +1 -1
  58. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +1 -0
  59. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  60. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-release.js +3 -2
  61. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-release.js.map +1 -1
  62. package/lib/commonjs/shared/providers/screen/gestures/types.js.map +1 -1
  63. package/lib/commonjs/shared/providers/screen/styles/helpers/transition-visual-state.js +42 -0
  64. package/lib/commonjs/shared/providers/screen/styles/helpers/transition-visual-state.js.map +1 -0
  65. package/lib/commonjs/shared/providers/screen/styles/helpers/visibility-gate.js +11 -5
  66. package/lib/commonjs/shared/providers/screen/styles/helpers/visibility-gate.js.map +1 -1
  67. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +23 -10
  68. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  69. package/lib/commonjs/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js +10 -8
  70. package/lib/commonjs/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  71. package/lib/commonjs/shared/stores/bounds/internals/links.js +4 -4
  72. package/lib/commonjs/shared/stores/bounds/internals/links.js.map +1 -1
  73. package/lib/commonjs/shared/stores/scroll.store.js +20 -2
  74. package/lib/commonjs/shared/stores/scroll.store.js.map +1 -1
  75. package/lib/commonjs/shared/stores/system.store.js +2 -0
  76. package/lib/commonjs/shared/stores/system.store.js.map +1 -1
  77. package/lib/commonjs/shared/utils/animation/animate-to-progress.js +23 -1
  78. package/lib/commonjs/shared/utils/animation/animate-to-progress.js.map +1 -1
  79. package/lib/commonjs/shared/utils/animation/animate.js +14 -2
  80. package/lib/commonjs/shared/utils/animation/animate.js.map +1 -1
  81. package/lib/commonjs/shared/utils/animation/spring/spring.js +22 -2
  82. package/lib/commonjs/shared/utils/animation/spring/spring.js.map +1 -1
  83. package/lib/commonjs/shared/utils/animation/spring/springUtils.js +96 -0
  84. package/lib/commonjs/shared/utils/animation/spring/springUtils.js.map +1 -1
  85. package/lib/commonjs/shared/utils/animation/state.js +4 -0
  86. package/lib/commonjs/shared/utils/bounds/navigation/reveal/math.js +17 -5
  87. package/lib/commonjs/shared/utils/bounds/navigation/reveal/math.js.map +1 -1
  88. package/lib/commonjs/shared/utils/bounds/navigation/zoom/build.js +44 -20
  89. package/lib/commonjs/shared/utils/bounds/navigation/zoom/build.js.map +1 -1
  90. package/lib/commonjs/shared/utils/bounds/navigation/zoom/drag.js +2 -31
  91. package/lib/commonjs/shared/utils/bounds/navigation/zoom/drag.js.map +1 -1
  92. package/lib/commonjs/shared/utils/bounds/navigation/zoom/helpers.js +3 -17
  93. package/lib/commonjs/shared/utils/bounds/navigation/zoom/helpers.js.map +1 -1
  94. package/lib/module/shared/animation/snap-to.js +2 -0
  95. package/lib/module/shared/animation/snap-to.js.map +1 -1
  96. package/lib/module/shared/components/boundary/components/boundary-target.js +19 -20
  97. package/lib/module/shared/components/boundary/components/boundary-target.js.map +1 -1
  98. package/lib/module/shared/components/boundary/create-boundary-component.js +17 -3
  99. package/lib/module/shared/components/boundary/create-boundary-component.js.map +1 -1
  100. package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js +5 -0
  101. package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
  102. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js +1 -3
  103. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  104. package/lib/module/shared/components/boundary/index.js +3 -2
  105. package/lib/module/shared/components/boundary/index.js.map +1 -1
  106. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +49 -189
  107. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -1
  108. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/index.js +21 -13
  109. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/index.js.map +1 -1
  110. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/host.js +2 -13
  111. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
  112. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +43 -36
  113. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
  114. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js +3 -4
  115. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -1
  116. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +50 -134
  117. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
  118. package/lib/module/shared/components/boundary/portal/components/boundary-portal/index.js +44 -9
  119. package/lib/module/shared/components/boundary/portal/components/boundary-portal/index.js.map +1 -1
  120. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/host-registry.store.js.map +1 -1
  121. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js +1 -27
  122. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -1
  123. package/lib/module/shared/components/boundary/portal/utils/handoff-target.js +28 -0
  124. package/lib/module/shared/components/boundary/portal/utils/handoff-target.js.map +1 -0
  125. package/lib/module/shared/components/boundary/portal/utils/resolve-portal.js +19 -15
  126. package/lib/module/shared/components/boundary/portal/utils/resolve-portal.js.map +1 -1
  127. package/lib/module/shared/components/boundary/portal/utils/teleport-control.js +0 -8
  128. package/lib/module/shared/components/boundary/portal/utils/teleport-control.js.map +1 -1
  129. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js +19 -37
  130. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  131. package/lib/module/shared/components/boundary/utils/refresh-signals.js +7 -0
  132. package/lib/module/shared/components/boundary/utils/refresh-signals.js.map +1 -1
  133. package/lib/module/shared/components/boundary/utils/resolve-boundary-target.js +24 -0
  134. package/lib/module/shared/components/boundary/utils/resolve-boundary-target.js.map +1 -0
  135. package/lib/module/shared/components/masked-view.js +10 -2
  136. package/lib/module/shared/components/masked-view.js.map +1 -1
  137. package/lib/module/shared/components/screen-container/layers/backdrop.js +3 -1
  138. package/lib/module/shared/components/screen-container/layers/backdrop.js.map +1 -1
  139. package/lib/module/shared/components/screen-container/layers/maybe-masked-navigation-container.js +10 -2
  140. package/lib/module/shared/components/screen-container/layers/maybe-masked-navigation-container.js.map +1 -1
  141. package/lib/module/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js +2 -0
  142. package/lib/module/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
  143. package/lib/module/shared/providers/helpers/measured-bounds-writes.js +4 -1
  144. package/lib/module/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
  145. package/lib/module/shared/providers/screen/gestures/gestures.provider.js +2 -8
  146. package/lib/module/shared/providers/screen/gestures/gestures.provider.js.map +1 -1
  147. package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js +1 -0
  148. package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
  149. package/lib/module/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.js +35 -2
  150. package/lib/module/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.js.map +1 -1
  151. package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +1 -0
  152. package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  153. package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-release.js +3 -2
  154. package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-release.js.map +1 -1
  155. package/lib/module/shared/providers/screen/gestures/types.js.map +1 -1
  156. package/lib/module/shared/providers/screen/styles/helpers/transition-visual-state.js +35 -0
  157. package/lib/module/shared/providers/screen/styles/helpers/transition-visual-state.js.map +1 -0
  158. package/lib/module/shared/providers/screen/styles/helpers/visibility-gate.js +11 -5
  159. package/lib/module/shared/providers/screen/styles/helpers/visibility-gate.js.map +1 -1
  160. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +23 -10
  161. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  162. package/lib/module/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js +10 -8
  163. package/lib/module/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  164. package/lib/module/shared/stores/bounds/internals/links.js +4 -4
  165. package/lib/module/shared/stores/bounds/internals/links.js.map +1 -1
  166. package/lib/module/shared/stores/scroll.store.js +17 -0
  167. package/lib/module/shared/stores/scroll.store.js.map +1 -1
  168. package/lib/module/shared/stores/system.store.js +2 -0
  169. package/lib/module/shared/stores/system.store.js.map +1 -1
  170. package/lib/module/shared/utils/animation/animate-to-progress.js +21 -0
  171. package/lib/module/shared/utils/animation/animate-to-progress.js.map +1 -1
  172. package/lib/module/shared/utils/animation/animate.js +14 -2
  173. package/lib/module/shared/utils/animation/animate.js.map +1 -1
  174. package/lib/module/shared/utils/animation/spring/spring.js +23 -3
  175. package/lib/module/shared/utils/animation/spring/spring.js.map +1 -1
  176. package/lib/module/shared/utils/animation/spring/springUtils.js +95 -0
  177. package/lib/module/shared/utils/animation/spring/springUtils.js.map +1 -1
  178. package/lib/module/shared/utils/animation/state.js +2 -0
  179. package/lib/module/shared/utils/bounds/navigation/reveal/math.js +16 -5
  180. package/lib/module/shared/utils/bounds/navigation/reveal/math.js.map +1 -1
  181. package/lib/module/shared/utils/bounds/navigation/zoom/build.js +46 -22
  182. package/lib/module/shared/utils/bounds/navigation/zoom/build.js.map +1 -1
  183. package/lib/module/shared/utils/bounds/navigation/zoom/drag.js +2 -30
  184. package/lib/module/shared/utils/bounds/navigation/zoom/drag.js.map +1 -1
  185. package/lib/module/shared/utils/bounds/navigation/zoom/helpers.js +4 -18
  186. package/lib/module/shared/utils/bounds/navigation/zoom/helpers.js.map +1 -1
  187. package/lib/typescript/shared/animation/snap-to.d.ts.map +1 -1
  188. package/lib/typescript/shared/components/boundary/components/boundary-target.d.ts +2 -1
  189. package/lib/typescript/shared/components/boundary/components/boundary-target.d.ts.map +1 -1
  190. package/lib/typescript/shared/components/boundary/create-boundary-component.d.ts.map +1 -1
  191. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts.map +1 -1
  192. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts +3 -4
  193. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts.map +1 -1
  194. package/lib/typescript/shared/components/boundary/index.d.ts +6 -9
  195. package/lib/typescript/shared/components/boundary/index.d.ts.map +1 -1
  196. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts +1 -3
  197. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts.map +1 -1
  198. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/index.d.ts.map +1 -1
  199. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/host.d.ts.map +1 -1
  200. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.d.ts.map +1 -1
  201. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts +1 -10
  202. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts.map +1 -1
  203. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts +1 -3
  204. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -1
  205. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/index.d.ts +2 -2
  206. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/index.d.ts.map +1 -1
  207. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/host-registry.store.d.ts +0 -1
  208. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/host-registry.store.d.ts.map +1 -1
  209. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts +1 -10
  210. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts.map +1 -1
  211. package/lib/typescript/shared/components/boundary/portal/utils/handoff-target.d.ts +12 -0
  212. package/lib/typescript/shared/components/boundary/portal/utils/handoff-target.d.ts.map +1 -0
  213. package/lib/typescript/shared/components/boundary/portal/utils/resolve-portal.d.ts +2 -3
  214. package/lib/typescript/shared/components/boundary/portal/utils/resolve-portal.d.ts.map +1 -1
  215. package/lib/typescript/shared/components/boundary/portal/utils/teleport-control.d.ts +0 -4
  216. package/lib/typescript/shared/components/boundary/portal/utils/teleport-control.d.ts.map +1 -1
  217. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts +8 -12
  218. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
  219. package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts +1 -0
  220. package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts.map +1 -1
  221. package/lib/typescript/shared/components/boundary/utils/resolve-boundary-target.d.ts +12 -0
  222. package/lib/typescript/shared/components/boundary/utils/resolve-boundary-target.d.ts.map +1 -0
  223. package/lib/typescript/shared/components/masked-view.d.ts.map +1 -1
  224. package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts.map +1 -1
  225. package/lib/typescript/shared/components/screen-container/layers/maybe-masked-navigation-container.d.ts.map +1 -1
  226. package/lib/typescript/shared/components/screen-lifecycle/hooks/use-transition-start-controller.d.ts.map +1 -1
  227. package/lib/typescript/shared/providers/helpers/measured-bounds-writes.d.ts.map +1 -1
  228. package/lib/typescript/shared/providers/screen/gestures/gestures.provider.d.ts.map +1 -1
  229. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.d.ts.map +1 -1
  230. package/lib/typescript/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.d.ts +2 -1
  231. package/lib/typescript/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.d.ts.map +1 -1
  232. package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts.map +1 -1
  233. package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/pinch-release.d.ts.map +1 -1
  234. package/lib/typescript/shared/providers/screen/gestures/types.d.ts +1 -9
  235. package/lib/typescript/shared/providers/screen/gestures/types.d.ts.map +1 -1
  236. package/lib/typescript/shared/providers/screen/styles/helpers/transition-visual-state.d.ts +18 -0
  237. package/lib/typescript/shared/providers/screen/styles/helpers/transition-visual-state.d.ts.map +1 -0
  238. package/lib/typescript/shared/providers/screen/styles/helpers/visibility-gate.d.ts +2 -2
  239. package/lib/typescript/shared/providers/screen/styles/helpers/visibility-gate.d.ts.map +1 -1
  240. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  241. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts.map +1 -1
  242. package/lib/typescript/shared/stores/bounds/internals/links.d.ts +1 -1
  243. package/lib/typescript/shared/stores/bounds/internals/links.d.ts.map +1 -1
  244. package/lib/typescript/shared/stores/scroll.store.d.ts +7 -0
  245. package/lib/typescript/shared/stores/scroll.store.d.ts.map +1 -1
  246. package/lib/typescript/shared/stores/system.store.d.ts +5 -0
  247. package/lib/typescript/shared/stores/system.store.d.ts.map +1 -1
  248. package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts +6 -1
  249. package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts.map +1 -1
  250. package/lib/typescript/shared/utils/animation/animate.d.ts +2 -2
  251. package/lib/typescript/shared/utils/animation/animate.d.ts.map +1 -1
  252. package/lib/typescript/shared/utils/animation/spring/spring.d.ts +2 -2
  253. package/lib/typescript/shared/utils/animation/spring/spring.d.ts.map +1 -1
  254. package/lib/typescript/shared/utils/animation/spring/springUtils.d.ts +3 -0
  255. package/lib/typescript/shared/utils/animation/spring/springUtils.d.ts.map +1 -1
  256. package/lib/typescript/shared/utils/animation/state.d.ts +6 -0
  257. package/lib/typescript/shared/utils/animation/state.d.ts.map +1 -1
  258. package/lib/typescript/shared/utils/bounds/navigation/reveal/math.d.ts +9 -0
  259. package/lib/typescript/shared/utils/bounds/navigation/reveal/math.d.ts.map +1 -1
  260. package/lib/typescript/shared/utils/bounds/navigation/zoom/build.d.ts.map +1 -1
  261. package/lib/typescript/shared/utils/bounds/navigation/zoom/drag.d.ts +2 -11
  262. package/lib/typescript/shared/utils/bounds/navigation/zoom/drag.d.ts.map +1 -1
  263. package/lib/typescript/shared/utils/bounds/navigation/zoom/helpers.d.ts +7 -4
  264. package/lib/typescript/shared/utils/bounds/navigation/zoom/helpers.d.ts.map +1 -1
  265. package/package.json +1 -1
  266. package/src/shared/animation/snap-to.ts +5 -0
  267. package/src/shared/components/boundary/components/boundary-target.tsx +37 -23
  268. package/src/shared/components/boundary/create-boundary-component.tsx +29 -3
  269. package/src/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.ts +11 -0
  270. package/src/shared/components/boundary/hooks/use-boundary-measurement.ts +3 -9
  271. package/src/shared/components/boundary/index.tsx +4 -8
  272. package/src/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.ts +73 -275
  273. package/src/shared/components/boundary/portal/components/boundary-content-portal/index.tsx +31 -12
  274. package/src/shared/components/boundary/portal/components/boundary-portal/components/host.tsx +2 -12
  275. package/src/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.tsx +64 -62
  276. package/src/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.ts +2 -9
  277. package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +73 -186
  278. package/src/shared/components/boundary/portal/components/boundary-portal/index.tsx +72 -12
  279. package/src/shared/components/boundary/portal/components/boundary-portal/stores/host-registry.store.ts +0 -1
  280. package/src/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.ts +2 -39
  281. package/src/shared/components/boundary/portal/utils/handoff-target.ts +48 -0
  282. package/src/shared/components/boundary/portal/utils/resolve-portal.ts +26 -18
  283. package/src/shared/components/boundary/portal/utils/teleport-control.ts +0 -12
  284. package/src/shared/components/boundary/providers/boundary-root.provider.tsx +28 -80
  285. package/src/shared/components/boundary/utils/refresh-signals.ts +8 -0
  286. package/src/shared/components/boundary/utils/resolve-boundary-target.tsx +39 -0
  287. package/src/shared/components/masked-view.tsx +20 -4
  288. package/src/shared/components/screen-container/layers/backdrop.tsx +3 -1
  289. package/src/shared/components/screen-container/layers/maybe-masked-navigation-container.tsx +14 -4
  290. package/src/shared/components/screen-lifecycle/hooks/use-transition-start-controller.ts +2 -0
  291. package/src/shared/providers/helpers/measured-bounds-writes.ts +1 -0
  292. package/src/shared/providers/screen/gestures/gestures.provider.tsx +2 -10
  293. package/src/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.ts +1 -0
  294. package/src/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.ts +74 -3
  295. package/src/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.ts +1 -0
  296. package/src/shared/providers/screen/gestures/pinch/behavior/pinch-release.ts +2 -4
  297. package/src/shared/providers/screen/gestures/types.ts +0 -14
  298. package/src/shared/providers/screen/styles/helpers/transition-visual-state.ts +44 -0
  299. package/src/shared/providers/screen/styles/helpers/visibility-gate.ts +17 -7
  300. package/src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +30 -15
  301. package/src/shared/providers/screen/styles/hooks/use-maybe-block-visibility.tsx +14 -13
  302. package/src/shared/stores/bounds/internals/links.ts +13 -2
  303. package/src/shared/stores/scroll.store.ts +23 -0
  304. package/src/shared/stores/system.store.ts +8 -0
  305. package/src/shared/utils/animation/animate-to-progress.ts +59 -28
  306. package/src/shared/utils/animation/animate.ts +18 -2
  307. package/src/shared/utils/animation/spring/spring.ts +36 -1
  308. package/src/shared/utils/animation/spring/springUtils.ts +130 -0
  309. package/src/shared/utils/animation/state.ts +8 -0
  310. package/src/shared/utils/bounds/navigation/reveal/math.ts +21 -5
  311. package/src/shared/utils/bounds/navigation/zoom/build.ts +77 -23
  312. package/src/shared/utils/bounds/navigation/zoom/drag.ts +3 -42
  313. package/src/shared/utils/bounds/navigation/zoom/helpers.ts +9 -23
  314. package/lib/commonjs/shared/components/boundary/hooks/use-register-target.js +0 -32
  315. package/lib/commonjs/shared/components/boundary/hooks/use-register-target.js.map +0 -1
  316. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.js +0 -51
  317. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.js.map +0 -1
  318. package/lib/commonjs/shared/components/boundary/portal/utils/ownership.js +0 -220
  319. package/lib/commonjs/shared/components/boundary/portal/utils/ownership.js.map +0 -1
  320. package/lib/commonjs/shared/components/boundary/portal/utils/shallow-equal.js +0 -29
  321. package/lib/commonjs/shared/components/boundary/portal/utils/shallow-equal.js.map +0 -1
  322. package/lib/commonjs/shared/components/boundary/portal/utils/visible-host.js +0 -25
  323. package/lib/commonjs/shared/components/boundary/portal/utils/visible-host.js.map +0 -1
  324. package/lib/commonjs/shared/providers/screen/gestures/rotation/activation/use-rotation-activation.js +0 -64
  325. package/lib/commonjs/shared/providers/screen/gestures/rotation/activation/use-rotation-activation.js.map +0 -1
  326. package/lib/commonjs/shared/providers/screen/gestures/rotation/behavior/rotation-lifecycle.js +0 -21
  327. package/lib/commonjs/shared/providers/screen/gestures/rotation/behavior/rotation-lifecycle.js.map +0 -1
  328. package/lib/commonjs/shared/providers/screen/gestures/rotation/behavior/use-rotation-behavior.js +0 -29
  329. package/lib/commonjs/shared/providers/screen/gestures/rotation/behavior/use-rotation-behavior.js.map +0 -1
  330. package/lib/commonjs/shared/providers/screen/gestures/rotation/use-build-rotation-gesture.js +0 -38
  331. package/lib/commonjs/shared/providers/screen/gestures/rotation/use-build-rotation-gesture.js.map +0 -1
  332. package/lib/commonjs/shared/providers/screen/styles/helpers/opening-phase.js +0 -32
  333. package/lib/commonjs/shared/providers/screen/styles/helpers/opening-phase.js.map +0 -1
  334. package/lib/module/shared/components/boundary/hooks/use-register-target.js +0 -27
  335. package/lib/module/shared/components/boundary/hooks/use-register-target.js.map +0 -1
  336. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.js +0 -46
  337. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.js.map +0 -1
  338. package/lib/module/shared/components/boundary/portal/utils/ownership.js +0 -213
  339. package/lib/module/shared/components/boundary/portal/utils/ownership.js.map +0 -1
  340. package/lib/module/shared/components/boundary/portal/utils/shallow-equal.js +0 -24
  341. package/lib/module/shared/components/boundary/portal/utils/shallow-equal.js.map +0 -1
  342. package/lib/module/shared/components/boundary/portal/utils/visible-host.js +0 -20
  343. package/lib/module/shared/components/boundary/portal/utils/visible-host.js.map +0 -1
  344. package/lib/module/shared/providers/screen/gestures/rotation/activation/use-rotation-activation.js +0 -59
  345. package/lib/module/shared/providers/screen/gestures/rotation/activation/use-rotation-activation.js.map +0 -1
  346. package/lib/module/shared/providers/screen/gestures/rotation/behavior/rotation-lifecycle.js +0 -15
  347. package/lib/module/shared/providers/screen/gestures/rotation/behavior/rotation-lifecycle.js.map +0 -1
  348. package/lib/module/shared/providers/screen/gestures/rotation/behavior/use-rotation-behavior.js +0 -24
  349. package/lib/module/shared/providers/screen/gestures/rotation/behavior/use-rotation-behavior.js.map +0 -1
  350. package/lib/module/shared/providers/screen/gestures/rotation/use-build-rotation-gesture.js +0 -33
  351. package/lib/module/shared/providers/screen/gestures/rotation/use-build-rotation-gesture.js.map +0 -1
  352. package/lib/module/shared/providers/screen/styles/helpers/opening-phase.js +0 -26
  353. package/lib/module/shared/providers/screen/styles/helpers/opening-phase.js.map +0 -1
  354. package/lib/typescript/shared/components/boundary/hooks/use-register-target.d.ts +0 -10
  355. package/lib/typescript/shared/components/boundary/hooks/use-register-target.d.ts.map +0 -1
  356. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.d.ts +0 -13
  357. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.d.ts.map +0 -1
  358. package/lib/typescript/shared/components/boundary/portal/utils/ownership.d.ts +0 -34
  359. package/lib/typescript/shared/components/boundary/portal/utils/ownership.d.ts.map +0 -1
  360. package/lib/typescript/shared/components/boundary/portal/utils/shallow-equal.d.ts +0 -8
  361. package/lib/typescript/shared/components/boundary/portal/utils/shallow-equal.d.ts.map +0 -1
  362. package/lib/typescript/shared/components/boundary/portal/utils/visible-host.d.ts +0 -8
  363. package/lib/typescript/shared/components/boundary/portal/utils/visible-host.d.ts.map +0 -1
  364. package/lib/typescript/shared/providers/screen/gestures/rotation/activation/use-rotation-activation.d.ts +0 -15
  365. package/lib/typescript/shared/providers/screen/gestures/rotation/activation/use-rotation-activation.d.ts.map +0 -1
  366. package/lib/typescript/shared/providers/screen/gestures/rotation/behavior/rotation-lifecycle.d.ts +0 -4
  367. package/lib/typescript/shared/providers/screen/gestures/rotation/behavior/rotation-lifecycle.d.ts.map +0 -1
  368. package/lib/typescript/shared/providers/screen/gestures/rotation/behavior/use-rotation-behavior.d.ts +0 -5
  369. package/lib/typescript/shared/providers/screen/gestures/rotation/behavior/use-rotation-behavior.d.ts.map +0 -1
  370. package/lib/typescript/shared/providers/screen/gestures/rotation/use-build-rotation-gesture.d.ts +0 -9
  371. package/lib/typescript/shared/providers/screen/gestures/rotation/use-build-rotation-gesture.d.ts.map +0 -1
  372. package/lib/typescript/shared/providers/screen/styles/helpers/opening-phase.d.ts +0 -16
  373. package/lib/typescript/shared/providers/screen/styles/helpers/opening-phase.d.ts.map +0 -1
  374. package/src/shared/components/boundary/hooks/use-register-target.ts +0 -43
  375. package/src/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.tsx +0 -79
  376. package/src/shared/components/boundary/portal/utils/ownership.ts +0 -319
  377. package/src/shared/components/boundary/portal/utils/shallow-equal.ts +0 -25
  378. package/src/shared/components/boundary/portal/utils/visible-host.ts +0 -24
  379. package/src/shared/providers/screen/gestures/rotation/activation/use-rotation-activation.ts +0 -88
  380. package/src/shared/providers/screen/gestures/rotation/behavior/rotation-lifecycle.ts +0 -19
  381. package/src/shared/providers/screen/gestures/rotation/behavior/use-rotation-behavior.ts +0 -47
  382. package/src/shared/providers/screen/gestures/rotation/use-build-rotation-gesture.ts +0 -50
  383. package/src/shared/providers/screen/styles/helpers/opening-phase.ts +0 -25
@@ -29,6 +29,8 @@ export interface SpringAnimation extends Animation<SpringAnimation> {
29
29
  omega0: number;
30
30
  omega1: number;
31
31
  initialEnergy: number;
32
+ animationProgressElapsed: number;
33
+ animationProgressDuration: number;
32
34
  }
33
35
 
34
36
  export type InnerSpringAnimation = SpringAnimation;
@@ -362,6 +364,134 @@ export function underDampedSpringCalculations(
362
364
  return { position: underDampedPosition, velocity: underDampedVelocity };
363
365
  }
364
366
 
367
+ const MAX_SPRING_DURATION_SECONDS = 60;
368
+ const SPRING_DURATION_PRECISION_SECONDS = 0.0001;
369
+ const MAX_OVERSHOOT_DURATION_SAMPLES = 4096;
370
+
371
+ export function calculateSpringAnimationDuration(
372
+ animation: InnerSpringAnimation,
373
+ config: DefaultSpringConfig & SpringConfigInner,
374
+ ): number {
375
+ "worklet";
376
+ const startPosition = animation.current;
377
+ const startVelocity = animation.velocity;
378
+ const x0 = startPosition - animation.toValue;
379
+
380
+ const stateAt = (time: number) => {
381
+ "worklet";
382
+ return animation.zeta < 1
383
+ ? underDampedSpringCalculations(animation, {
384
+ zeta: animation.zeta,
385
+ v0: startVelocity,
386
+ x0,
387
+ omega0: animation.omega0,
388
+ omega1: animation.omega1,
389
+ t: time,
390
+ })
391
+ : criticallyDampedSpringCalculations(animation, {
392
+ v0: startVelocity,
393
+ x0,
394
+ omega0: animation.omega0,
395
+ t: time,
396
+ });
397
+ };
398
+
399
+ const terminatesByEnergyAt = (time: number) => {
400
+ "worklet";
401
+ if (animation.initialEnergy === 0) {
402
+ return true;
403
+ }
404
+
405
+ const state = stateAt(time);
406
+ const energy = getEnergy(
407
+ animation.toValue - state.position,
408
+ state.velocity,
409
+ config.stiffness,
410
+ config.mass,
411
+ );
412
+
413
+ return energy / animation.initialEnergy <= config.energyThreshold;
414
+ };
415
+
416
+ if (terminatesByEnergyAt(0)) {
417
+ return 0;
418
+ }
419
+
420
+ let lowerBound = 0;
421
+ let upperBound = 1 / 60;
422
+ while (
423
+ upperBound < MAX_SPRING_DURATION_SECONDS &&
424
+ !terminatesByEnergyAt(upperBound)
425
+ ) {
426
+ lowerBound = upperBound;
427
+ upperBound *= 2;
428
+ }
429
+ upperBound = Math.min(upperBound, MAX_SPRING_DURATION_SECONDS);
430
+
431
+ if (terminatesByEnergyAt(upperBound)) {
432
+ while (upperBound - lowerBound > SPRING_DURATION_PRECISION_SECONDS) {
433
+ const midpoint = (lowerBound + upperBound) / 2;
434
+ if (terminatesByEnergyAt(midpoint)) {
435
+ upperBound = midpoint;
436
+ } else {
437
+ lowerBound = midpoint;
438
+ }
439
+ }
440
+ }
441
+
442
+ const energyDuration = upperBound;
443
+ if (!config.overshootClamping || energyDuration === 0) {
444
+ return energyDuration * 1000;
445
+ }
446
+
447
+ const leftBound =
448
+ animation.startValue >= 0
449
+ ? animation.toValue
450
+ : animation.toValue + animation.startValue;
451
+ const rightBound = leftBound + Math.abs(animation.startValue);
452
+ const isOutsideBoundsAt = (time: number) => {
453
+ "worklet";
454
+ const { position } = stateAt(time);
455
+ return position < leftBound || position > rightBound;
456
+ };
457
+
458
+ const frequency = animation.zeta < 1 ? animation.omega1 : animation.omega0;
459
+ const sampleStep =
460
+ frequency > 0 ? Math.min(1 / 240, Math.PI / (frequency * 8)) : 1 / 240;
461
+ const sampleCount = Math.min(
462
+ MAX_OVERSHOOT_DURATION_SAMPLES,
463
+ Math.max(1, Math.ceil(energyDuration / sampleStep)),
464
+ );
465
+ const effectiveStep = energyDuration / sampleCount;
466
+ let previousTime = 0;
467
+
468
+ for (let index = 1; index <= sampleCount; index += 1) {
469
+ const time = effectiveStep * index;
470
+ if (!isOutsideBoundsAt(time)) {
471
+ previousTime = time;
472
+ continue;
473
+ }
474
+
475
+ let crossingLowerBound = previousTime;
476
+ let crossingUpperBound = time;
477
+ while (
478
+ crossingUpperBound - crossingLowerBound >
479
+ SPRING_DURATION_PRECISION_SECONDS
480
+ ) {
481
+ const midpoint = (crossingLowerBound + crossingUpperBound) / 2;
482
+ if (isOutsideBoundsAt(midpoint)) {
483
+ crossingUpperBound = midpoint;
484
+ } else {
485
+ crossingLowerBound = midpoint;
486
+ }
487
+ }
488
+
489
+ return crossingUpperBound * 1000;
490
+ }
491
+
492
+ return energyDuration * 1000;
493
+ }
494
+
365
495
  export function isAnimationTerminatingCalculation(
366
496
  animation: InnerSpringAnimation,
367
497
  config: DefaultSpringConfig & SpringConfigInner,
@@ -1,6 +1,14 @@
1
+ import type { SharedValue } from "react-native-reanimated";
2
+
1
3
  export type AnimationState = {
2
4
  finished: boolean;
3
5
  settled: boolean;
4
6
  };
5
7
 
6
8
  export type AnimationStateCallback = (state: AnimationState) => void;
9
+
10
+ export type AnimationProgressDriver = {
11
+ value: SharedValue<number>;
12
+ from: number;
13
+ to: number;
14
+ };
@@ -2,6 +2,7 @@ import type { MeasuredDimensions } from "react-native-reanimated";
2
2
  import { EPSILON } from "../../../../constants";
3
3
  import type { Layout } from "../../../../types/screen.types";
4
4
  import { computeContentTransformGeometry } from "../../helpers/geometry";
5
+ import type { ContentTransformGeometry } from "../../types/geometry";
5
6
  import type { BoundsAnchor } from "../../types/options";
6
7
  import {
7
8
  DRAG_DIRECTIONAL_SCALE_EXPONENT,
@@ -185,6 +186,22 @@ function getBoundsCenterY(bounds: MeasuredDimensions) {
185
186
  return bounds.pageY + bounds.height / 2;
186
187
  }
187
188
 
189
+ export function resolveRevealContentBaseTransformFromGeometry({
190
+ progress,
191
+ geometry,
192
+ }: {
193
+ progress: number;
194
+ geometry: ContentTransformGeometry;
195
+ }) {
196
+ "worklet";
197
+
198
+ return {
199
+ translateX: mixUnit(geometry.tx, 0, progress),
200
+ translateY: mixUnit(geometry.ty, 0, progress),
201
+ scale: mixUnit(geometry.s, 1, progress),
202
+ };
203
+ }
204
+
188
205
  export function resolveRevealContentBaseTransform({
189
206
  progress,
190
207
  sourceBounds,
@@ -209,11 +226,10 @@ export function resolveRevealContentBaseTransform({
209
226
  scaleMode: "uniform",
210
227
  });
211
228
 
212
- return {
213
- translateX: mixUnit(geometry.tx, 0, progress),
214
- translateY: mixUnit(geometry.ty, 0, progress),
215
- scale: mixUnit(geometry.s, 1, progress),
216
- };
229
+ return resolveRevealContentBaseTransformFromGeometry({
230
+ geometry,
231
+ progress,
232
+ });
217
233
  }
218
234
 
219
235
  export function resolveTrackedSourceElementTransform({
@@ -3,9 +3,12 @@ import {
3
3
  EPSILON,
4
4
  NAVIGATION_MASK_ELEMENT_STYLE_ID,
5
5
  } from "../../../../constants";
6
+ import { getVisualScrollAxisDelta } from "../../../../stores/scroll.store";
7
+ import type { ScrollMetadataState } from "../../../../types/gesture.types";
6
8
  import { createBoundsAccessorCore } from "../../helpers/create-bounds-accessor-core";
9
+ import { computeContentTransformGeometry } from "../../helpers/geometry";
7
10
  import { getSourceBorderRadius } from "../helpers";
8
- import { resolveRevealContentBaseTransform } from "../reveal/math";
11
+ import { resolveRevealContentBaseTransformFromGeometry } from "../reveal/math";
9
12
  import {
10
13
  ZOOM_BACKDROP_MAX_OPACITY,
11
14
  ZOOM_BACKGROUND_SCALE,
@@ -16,7 +19,7 @@ import {
16
19
  ZOOM_UNFOCUSED_ELEMENT_CLOSE_OPACITY_RANGE,
17
20
  ZOOM_UNFOCUSED_ELEMENT_OPEN_OPACITY_RANGE,
18
21
  } from "./config";
19
- import { resolveZoomDragState, resolveZoomTrackedGestureScale } from "./drag";
22
+ import { resolveZoomDragState } from "./drag";
20
23
  import {
21
24
  resolveZoomBackdropOpacity,
22
25
  resolveZoomPinchFocalOffset,
@@ -107,23 +110,31 @@ export function buildZoomStyles({
107
110
  return {};
108
111
  }
109
112
 
113
+ const isDismissing = active.gesture.dismissing === 1;
114
+ const dismissalTrackingGeometry = isDismissing
115
+ ? computeContentTransformGeometry({
116
+ start: sourceBounds,
117
+ end: trackingContentTarget,
118
+ entering: true,
119
+ dimensions: screenLayout,
120
+ anchor: zoomContentAnchor,
121
+ scaleMode: "uniform",
122
+ })
123
+ : null;
124
+ const dismissalCollapsedContentScale = dismissalTrackingGeometry
125
+ ? resolveRevealContentBaseTransformFromGeometry({
126
+ geometry: dismissalTrackingGeometry,
127
+ progress: 0,
128
+ }).scale
129
+ : 1;
110
130
  const drag = resolveZoomDragState({
111
131
  gesture: active.gesture,
112
132
  activeTransitionProgress,
113
133
  screenLayout,
114
- sourceBounds,
115
- trackingContentTarget,
134
+ collapsedContentScale: dismissalCollapsedContentScale,
116
135
  dragOptions: zoomOptions?.drag,
117
136
  });
118
137
 
119
- const trackedGestureScale = resolveZoomTrackedGestureScale({
120
- drag,
121
- activeTransitionProgress,
122
- screenLayout,
123
- sourceBounds,
124
- trackingContentTarget,
125
- });
126
-
127
138
  const focalGesture = drag.isDismissing
128
139
  ? active.gesture.handoff
129
140
  : active.gesture;
@@ -134,7 +145,7 @@ export function buildZoomStyles({
134
145
  ? resolveZoomPinchFocalOffset({
135
146
  gestureScale: drag.isDismissing
136
147
  ? focalGesture.scale
137
- : trackedGestureScale,
148
+ : drag.gestureScale,
138
149
  pinchOriginX: focalGesture.pinchOriginX,
139
150
  pinchOriginY: focalGesture.pinchOriginY,
140
151
  progress: focalProgress,
@@ -144,6 +155,28 @@ export function buildZoomStyles({
144
155
  : { x: 0, y: 0 };
145
156
 
146
157
  if (focused) {
158
+ const capturedSourceScroll = (
159
+ sourceBounds as typeof sourceBounds & {
160
+ scroll?: ScrollMetadataState | null;
161
+ }
162
+ ).scroll;
163
+ const liveSourceScroll = props.inactive?.layouts.scroll;
164
+ const sourceScrollWeight =
165
+ keepFocusedVisible && (active.entering || active.closing)
166
+ ? 1 - Math.min(Math.max(activeTransitionProgress, 0), 1)
167
+ : 0;
168
+ const sourceScrollDeltaX =
169
+ getVisualScrollAxisDelta(
170
+ liveSourceScroll,
171
+ capturedSourceScroll,
172
+ "horizontal",
173
+ ) * sourceScrollWeight;
174
+ const sourceScrollDeltaY =
175
+ getVisualScrollAxisDelta(
176
+ liveSourceScroll,
177
+ capturedSourceScroll,
178
+ "vertical",
179
+ ) * sourceScrollWeight;
147
180
  const sourceBorderRadius = getSourceBorderRadius(link);
148
181
  const navigationMaskEnabled = current.options.navigationMaskEnabled;
149
182
  const backdropOpacity = resolveZoomBackdropOpacity({
@@ -179,11 +212,13 @@ export function buildZoomStyles({
179
212
  const contentTranslateX =
180
213
  contentBaseTranslateX +
181
214
  drag.dragX +
182
- pinchFocalOffset.x * contentBaseScale;
215
+ pinchFocalOffset.x * contentBaseScale -
216
+ sourceScrollDeltaX;
183
217
  const contentTranslateY =
184
218
  contentBaseTranslateY +
185
219
  drag.dragY +
186
- pinchFocalOffset.y * contentBaseScale;
220
+ pinchFocalOffset.y * contentBaseScale -
221
+ sourceScrollDeltaY;
187
222
  const contentScale = drag.isDismissing
188
223
  ? drag.dismissContentScale
189
224
  : contentBaseScale * drag.gestureScale;
@@ -277,19 +312,39 @@ export function buildZoomStyles({
277
312
  };
278
313
  }
279
314
 
280
- const trackedContentBaseScale = resolveRevealContentBaseTransform({
281
- progress: activeTransitionProgress,
282
- sourceBounds,
283
- destinationBounds: trackingContentTarget,
284
- screenLayout,
285
- }).scale;
315
+ const trackingGeometry =
316
+ dismissalTrackingGeometry ??
317
+ computeContentTransformGeometry({
318
+ start: sourceBounds,
319
+ end: trackingContentTarget,
320
+ entering: true,
321
+ dimensions: screenLayout,
322
+ anchor: zoomContentAnchor,
323
+ scaleMode: "uniform",
324
+ });
325
+ const trackedContentBaseTransform =
326
+ resolveRevealContentBaseTransformFromGeometry({
327
+ geometry: trackingGeometry,
328
+ progress: activeTransitionProgress,
329
+ });
330
+ const collapsedContentScale = drag.isDismissing
331
+ ? dismissalCollapsedContentScale
332
+ : resolveRevealContentBaseTransformFromGeometry({
333
+ geometry: trackingGeometry,
334
+ progress: 0,
335
+ }).scale;
336
+ const trackedGestureScale = drag.isDismissing
337
+ ? drag.dismissContentScale / trackedContentBaseTransform.scale
338
+ : drag.gestureScale;
339
+ const trackedContentBaseScale = trackedContentBaseTransform.scale;
286
340
  const trackedDragX =
287
341
  drag.dragX + pinchFocalOffset.x * trackedContentBaseScale;
288
342
  const trackedDragY =
289
343
  drag.dragY + pinchFocalOffset.y * trackedContentBaseScale;
290
344
 
291
345
  const trackedSourceElement = resolveZoomTrackedSourceTransform({
292
- progress: activeTransitionProgress,
346
+ contentBaseTransform: trackedContentBaseTransform,
347
+ collapsedContentScale,
293
348
  sourceBounds,
294
349
  destinationBounds: trackingContentTarget,
295
350
  screenLayout,
@@ -298,7 +353,6 @@ export function buildZoomStyles({
298
353
  gestureScale: trackedGestureScale,
299
354
  parentScale: unfocusedContentScale,
300
355
  rotation: drag.rotation,
301
- anchor: zoomContentAnchor,
302
356
  });
303
357
 
304
358
  return {
@@ -1,11 +1,9 @@
1
- import type { MeasuredDimensions } from "react-native-reanimated";
2
1
  import { EPSILON } from "../../../../constants";
3
2
  import type {
4
3
  BoundsInterpolationProps,
5
4
  BoundsNavigationZoomDragOptions,
6
5
  } from "../../../../types/bounds.types";
7
6
  import type { Layout } from "../../../../types/screen.types";
8
- import { resolveRevealContentBaseTransform } from "../reveal/math";
9
7
  import { ZOOM_DISMISS_VELOCITY_DEPTH } from "./config";
10
8
 
11
9
  const ZOOM_DRAG_SCALE_EXPONENT = 2;
@@ -169,15 +167,13 @@ export function resolveZoomDragState({
169
167
  gesture,
170
168
  activeTransitionProgress,
171
169
  screenLayout,
172
- sourceBounds,
173
- trackingContentTarget,
170
+ collapsedContentScale,
174
171
  dragOptions,
175
172
  }: {
176
173
  gesture: ZoomGesture;
177
174
  activeTransitionProgress: number;
178
175
  screenLayout: Layout;
179
- sourceBounds: MeasuredDimensions;
180
- trackingContentTarget: MeasuredDimensions;
176
+ collapsedContentScale: number;
181
177
  dragOptions?: BoundsNavigationZoomDragOptions;
182
178
  }): ZoomDragState {
183
179
  "worklet";
@@ -266,16 +262,10 @@ export function resolveZoomDragState({
266
262
  let dismissContentScale = gestureScale;
267
263
 
268
264
  if (isDismissing) {
269
- const targetContentScale = resolveRevealContentBaseTransform({
270
- progress: 0,
271
- sourceBounds,
272
- destinationBounds: trackingContentTarget,
273
- screenLayout,
274
- }).scale;
275
265
  dismissContentScale = resolveZoomDismissContentScale({
276
266
  transitionRemaining: activeTransitionProgress,
277
267
  releaseScale: gestureScale,
278
- targetScale: targetContentScale,
268
+ targetScale: collapsedContentScale,
279
269
  velocity: gestureHandoff.velocity,
280
270
  velocityDepth:
281
271
  ZOOM_DISMISS_VELOCITY_DEPTH *
@@ -296,32 +286,3 @@ export function resolveZoomDragState({
296
286
  rotation,
297
287
  };
298
288
  }
299
-
300
- export function resolveZoomTrackedGestureScale({
301
- drag,
302
- activeTransitionProgress,
303
- screenLayout,
304
- sourceBounds,
305
- trackingContentTarget,
306
- }: {
307
- drag: ZoomDragState;
308
- activeTransitionProgress: number;
309
- screenLayout: Layout;
310
- sourceBounds: MeasuredDimensions;
311
- trackingContentTarget: MeasuredDimensions;
312
- }) {
313
- "worklet";
314
-
315
- if (!drag.isDismissing) {
316
- return drag.gestureScale;
317
- }
318
-
319
- const trackedContentBaseScale = resolveRevealContentBaseTransform({
320
- progress: activeTransitionProgress,
321
- sourceBounds,
322
- destinationBounds: trackingContentTarget,
323
- screenLayout,
324
- }).scale;
325
-
326
- return drag.dismissContentScale / trackedContentBaseScale;
327
- }
@@ -1,11 +1,7 @@
1
1
  import type { MeasuredDimensions } from "react-native-reanimated";
2
2
  import { EPSILON } from "../../../../constants";
3
3
  import type { Layout } from "../../../../types/screen.types";
4
- import type { BoundsAnchor } from "../../types/options";
5
- import {
6
- resolveRevealContentBaseTransform,
7
- resolveTrackedSourceElementTransform,
8
- } from "../reveal/math";
4
+ import { resolveTrackedSourceElementTransform } from "../reveal/math";
9
5
 
10
6
  export function resolveZoomBackdropOpacity({
11
7
  transitionProgress,
@@ -65,44 +61,34 @@ export function resolveZoomPinchFocalOffset({
65
61
  }
66
62
 
67
63
  export function resolveZoomTrackedSourceTransform({
68
- progress,
69
64
  sourceBounds,
70
65
  destinationBounds,
71
66
  screenLayout,
67
+ contentBaseTransform,
68
+ collapsedContentScale,
72
69
  dragX,
73
70
  dragY,
74
71
  gestureScale,
75
72
  parentScale,
76
73
  rotation = 0,
77
- anchor,
78
74
  }: {
79
- progress: number;
80
75
  sourceBounds: MeasuredDimensions;
81
76
  destinationBounds: MeasuredDimensions;
82
77
  screenLayout: Layout;
78
+ contentBaseTransform: {
79
+ translateX: number;
80
+ translateY: number;
81
+ scale: number;
82
+ };
83
+ collapsedContentScale: number;
83
84
  dragX: number;
84
85
  dragY: number;
85
86
  gestureScale: number;
86
87
  parentScale: number;
87
88
  rotation?: number;
88
- anchor?: BoundsAnchor;
89
89
  }) {
90
90
  "worklet";
91
91
 
92
- const contentBaseTransform = resolveRevealContentBaseTransform({
93
- progress,
94
- sourceBounds,
95
- destinationBounds,
96
- screenLayout,
97
- anchor,
98
- });
99
- const collapsedContentScale = resolveRevealContentBaseTransform({
100
- progress: 0,
101
- sourceBounds,
102
- destinationBounds,
103
- screenLayout,
104
- anchor,
105
- }).scale;
106
92
  const contentScale = contentBaseTransform.scale * gestureScale;
107
93
  const safeCollapsedContentScale = Math.max(
108
94
  Math.abs(collapsedContentScale),
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useRegisterTarget = void 0;
7
- var _react = require("react");
8
- var _logger = require("../../../utils/logger");
9
- var _boundaryRoot = require("../providers/boundary-root.provider");
10
- const useRegisterTarget = ({
11
- targetAnimatedRef,
12
- preparedStyles,
13
- measurementRef
14
- }) => {
15
- const rootContext = (0, _boundaryRoot.useBoundaryRootContext)();
16
- const registerTargetRef = rootContext?.registerTargetRef;
17
- const unregisterTargetRef = rootContext?.unregisterTargetRef;
18
- (0, _react.useLayoutEffect)(() => {
19
- if (!registerTargetRef || !unregisterTargetRef) {
20
- if (__DEV__) {
21
- _logger.logger.warn(_boundaryRoot.TARGET_OUTSIDE_ROOT_WARNING);
22
- }
23
- return;
24
- }
25
- registerTargetRef(targetAnimatedRef, preparedStyles, measurementRef);
26
- return () => {
27
- unregisterTargetRef(targetAnimatedRef);
28
- };
29
- }, [registerTargetRef, unregisterTargetRef, targetAnimatedRef, preparedStyles, measurementRef]);
30
- };
31
- exports.useRegisterTarget = useRegisterTarget;
32
- //# sourceMappingURL=use-register-target.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","_logger","_boundaryRoot","useRegisterTarget","targetAnimatedRef","preparedStyles","measurementRef","rootContext","useBoundaryRootContext","registerTargetRef","unregisterTargetRef","useLayoutEffect","__DEV__","logger","warn","TARGET_OUTSIDE_ROOT_WARNING","exports"],"sourceRoot":"../../../../../../src","sources":["shared/components/boundary/hooks/use-register-target.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,aAAA,GAAAF,OAAA;AAWO,MAAMG,iBAAiB,GAAGA,CAAC;EACjCC,iBAAiB;EACjBC,cAAc;EACdC;AACoB,CAAC,KAAK;EAC1B,MAAMC,WAAW,GAAG,IAAAC,oCAAsB,EAAC,CAAC;EAC5C,MAAMC,iBAAiB,GAAGF,WAAW,EAAEE,iBAAiB;EACxD,MAAMC,mBAAmB,GAAGH,WAAW,EAAEG,mBAAmB;EAC5D,IAAAC,sBAAe,EAAC,MAAM;IACrB,IAAI,CAACF,iBAAiB,IAAI,CAACC,mBAAmB,EAAE;MAC/C,IAAIE,OAAO,EAAE;QACZC,cAAM,CAACC,IAAI,CAACC,yCAA2B,CAAC;MACzC;MACA;IACD;IAEAN,iBAAiB,CAACL,iBAAiB,EAAEC,cAAc,EAAEC,cAAc,CAAC;IACpE,OAAO,MAAM;MACZI,mBAAmB,CAACN,iBAAiB,CAAC;IACvC,CAAC;EACF,CAAC,EAAE,CACFK,iBAAiB,EACjBC,mBAAmB,EACnBN,iBAAiB,EACjBC,cAAc,EACdC,cAAc,CACd,CAAC;AACH,CAAC;AAACU,OAAA,CAAAb,iBAAA,GAAAA,iBAAA","ignoreList":[]}
@@ -1,51 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.BoundaryPortalSlot = void 0;
7
- var _react = require("react");
8
- var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
9
- var _logger = require("../../../../../../utils/logger");
10
- var _teleport = require("../../../teleport");
11
- var _usePlaceholderStyles = require("../hooks/use-placeholder-styles");
12
- var _jsxRuntime = require("react/jsx-runtime");
13
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
- const AnimatedNativePortal = _teleport.NativePortal ? _reactNativeReanimated.default.createAnimatedComponent(_teleport.NativePortal) : null;
15
- const BoundaryPortalSlot = exports.BoundaryPortalSlot = /*#__PURE__*/(0, _react.memo)(function BoundaryPortalSlot({
16
- id,
17
- children,
18
- enabled,
19
- animatedProps,
20
- placeholderRef
21
- }) {
22
- const isPortalEnabled = enabled && _teleport.isTeleportAvailable;
23
- if (__DEV__ && enabled && !id) {
24
- _logger.logger.warnOnce("portal:missing-id", "A boundary portal was rendered without an id; rendering inline.");
25
- }
26
- const {
27
- handleOnLayout,
28
- placeholderStyle
29
- } = (0, _usePlaceholderStyles.usePlaceholderStyles)();
30
- if (isPortalEnabled && AnimatedNativePortal) {
31
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeReanimated.default.View, {
32
- ref: placeholderRef,
33
- onLayout: ({
34
- nativeEvent: {
35
- layout
36
- }
37
- }) => (0, _reactNativeReanimated.runOnUI)(handleOnLayout)(layout),
38
- style: placeholderStyle,
39
- pointerEvents: _teleport.PORTAL_POINTER_EVENTS,
40
- collapsable: false,
41
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(AnimatedNativePortal, {
42
- animatedProps: animatedProps,
43
- name: id,
44
- pointerEvents: _teleport.PORTAL_POINTER_EVENTS,
45
- children: children
46
- })
47
- });
48
- }
49
- return children;
50
- });
51
- //# sourceMappingURL=portal-slot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","_reactNativeReanimated","_interopRequireWildcard","_logger","_teleport","_usePlaceholderStyles","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","AnimatedNativePortal","TeleportPortal","Animated","createAnimatedComponent","BoundaryPortalSlot","exports","memo","id","children","enabled","animatedProps","placeholderRef","isPortalEnabled","isTeleportAvailable","__DEV__","logger","warnOnce","handleOnLayout","placeholderStyle","usePlaceholderStyles","jsx","View","ref","onLayout","nativeEvent","layout","runOnUI","style","pointerEvents","PORTAL_POINTER_EVENTS","collapsable","name"],"sourceRoot":"../../../../../../../../../src","sources":["shared/components/boundary/portal/components/boundary-portal/components/portal-slot.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAOA,IAAAC,sBAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAKA,IAAAK,qBAAA,GAAAL,OAAA;AAAuE,IAAAM,WAAA,GAAAN,OAAA;AAAA,SAAAE,wBAAAK,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAP,uBAAA,YAAAA,CAAAK,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AASvE,MAAMkB,oBAAoB,GAAGC,sBAAc,GACxCC,8BAAQ,CAACC,uBAAuB,CAChCF,sBACD,CAAC,GACA,IAAI;AAUA,MAAMG,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,gBAAG,IAAAE,WAAI,EAAC,SAASF,kBAAkBA,CAAC;EAClEG,EAAE;EACFC,QAAQ;EACRC,OAAO;EACPC,aAAa;EACbC;AACwB,CAAC,EAAE;EAC3B,MAAMC,eAAe,GAAGH,OAAO,IAAII,6BAAmB;EAEtD,IAAIC,OAAO,IAAIL,OAAO,IAAI,CAACF,EAAE,EAAE;IAC9BQ,cAAM,CAACC,QAAQ,CACd,mBAAmB,EACnB,iEACD,CAAC;EACF;EAEA,MAAM;IAAEC,cAAc;IAAEC;EAAiB,CAAC,GAAG,IAAAC,0CAAoB,EAAC,CAAC;EAEnE,IAAIP,eAAe,IAAIZ,oBAAoB,EAAE;IAC5C,oBACC,IAAApB,WAAA,CAAAwC,GAAA,EAAC7C,sBAAA,CAAAgB,OAAQ,CAAC8B,IAAI;MACbC,GAAG,EAAEX,cAAe;MACpBY,QAAQ,EAAEA,CAAC;QAAEC,WAAW,EAAE;UAAEC;QAAO;MAAE,CAAC,KACrC,IAAAC,8BAAO,EAACT,cAAc,CAAC,CAACQ,MAAM,CAC9B;MACDE,KAAK,EAAET,gBAAiB;MACxBU,aAAa,EAAEC,+BAAsB;MACrCC,WAAW,EAAE,KAAM;MAAAtB,QAAA,eAEnB,IAAA5B,WAAA,CAAAwC,GAAA,EAACpB,oBAAoB;QACpBU,aAAa,EAAEA,aAAc;QAC7BqB,IAAI,EAAExB,EAAG;QACTqB,aAAa,EAAEC,+BAAsB;QAAArB,QAAA,EAEpCA;MAAQ,CACY;IAAC,CACT,CAAC;EAElB;EAEA,OAAOA,QAAQ;AAChB,CAAC,CAAC","ignoreList":[]}