react-native-screen-transitions 3.9.0-beta.1 → 3.9.0-beta.3

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 (479) hide show
  1. package/lib/commonjs/shared/adapters/with-screen-transitions/index.js +20 -4
  2. package/lib/commonjs/shared/adapters/with-screen-transitions/index.js.map +1 -1
  3. package/lib/commonjs/shared/animation/transition-blocking.js +71 -0
  4. package/lib/commonjs/shared/animation/transition-blocking.js.map +1 -0
  5. package/lib/commonjs/shared/components/boundary/components/boundary-target.js +33 -28
  6. package/lib/commonjs/shared/components/boundary/components/boundary-target.js.map +1 -1
  7. package/lib/commonjs/shared/components/boundary/create-boundary-component.js +30 -95
  8. package/lib/commonjs/shared/components/boundary/create-boundary-component.js.map +1 -1
  9. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +75 -51
  10. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -1
  11. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js +1 -0
  12. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  13. package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js +14 -2
  14. package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  15. package/lib/commonjs/shared/components/boundary/hooks/use-register-target.js +32 -0
  16. package/lib/commonjs/shared/components/boundary/hooks/use-register-target.js.map +1 -0
  17. package/lib/commonjs/shared/components/boundary/index.js +1 -1
  18. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/components/host.js +41 -0
  19. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/components/host.js.map +1 -0
  20. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/helpers/host-name.js +14 -0
  21. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/helpers/host-name.js.map +1 -0
  22. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +224 -0
  23. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -0
  24. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/index.js +45 -0
  25. package/lib/commonjs/shared/components/boundary/portal/components/boundary-content-portal/index.js.map +1 -0
  26. package/lib/commonjs/shared/components/boundary/portal/components/{host.js → boundary-portal/components/host.js} +20 -18
  27. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -0
  28. package/lib/commonjs/shared/components/boundary/portal/components/{portal-boundary-host.js → boundary-portal/components/portal-boundary-host.js} +13 -12
  29. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -0
  30. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.js +51 -0
  31. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.js.map +1 -0
  32. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/has-local-slot.js.map +1 -0
  33. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/host-name.js +14 -0
  34. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/host-name.js.map +1 -0
  35. package/lib/commonjs/shared/components/boundary/portal/{utils → components/boundary-portal/helpers}/offset-style.js +1 -1
  36. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -0
  37. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +185 -0
  38. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -0
  39. package/lib/commonjs/shared/components/boundary/portal/{hooks → components/boundary-portal/hooks}/use-host-measurement.js +23 -5
  40. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js.map +1 -0
  41. package/lib/commonjs/shared/components/boundary/portal/{hooks → components/boundary-portal/hooks}/use-placeholder-styles.js +3 -6
  42. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-placeholder-styles.js.map +1 -0
  43. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/index.js +31 -0
  44. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/index.js.map +1 -0
  45. package/lib/commonjs/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/host-bounds.store.js +1 -1
  46. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js.map +1 -0
  47. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/host-registry.store.js.map +1 -0
  48. package/lib/commonjs/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/portal-boundary-host.store.js +7 -12
  49. package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -0
  50. package/lib/commonjs/shared/components/boundary/portal/index.js +1 -8
  51. package/lib/commonjs/shared/components/boundary/portal/index.js.map +1 -1
  52. package/lib/commonjs/shared/components/boundary/portal/teleport.js +4 -3
  53. package/lib/commonjs/shared/components/boundary/portal/teleport.js.map +1 -1
  54. package/lib/commonjs/shared/components/boundary/portal/utils/naming.js +1 -15
  55. package/lib/commonjs/shared/components/boundary/portal/utils/naming.js.map +1 -1
  56. package/lib/commonjs/shared/components/boundary/portal/utils/ownership.js +19 -56
  57. package/lib/commonjs/shared/components/boundary/portal/utils/ownership.js.map +1 -1
  58. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js +90 -23
  59. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  60. package/lib/commonjs/shared/components/boundary/utils/destination-signals.js +41 -12
  61. package/lib/commonjs/shared/components/boundary/utils/destination-signals.js.map +1 -1
  62. package/lib/commonjs/shared/components/boundary/utils/measured-bounds.js +36 -1
  63. package/lib/commonjs/shared/components/boundary/utils/measured-bounds.js.map +1 -1
  64. package/lib/commonjs/shared/components/screen-container/layers/content.js +1 -1
  65. package/lib/commonjs/shared/configs/presets.js +2 -2
  66. package/lib/commonjs/shared/configs/presets.js.map +1 -1
  67. package/lib/commonjs/shared/constants.js +4 -0
  68. package/lib/commonjs/shared/constants.js.map +1 -1
  69. package/lib/commonjs/shared/index.js +13 -0
  70. package/lib/commonjs/shared/index.js.map +1 -1
  71. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js +4 -0
  72. package/lib/commonjs/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  73. package/lib/commonjs/shared/providers/screen/gestures/pan/activation/use-pan-activation.js +10 -10
  74. package/lib/commonjs/shared/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  75. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js +10 -2
  76. package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js.map +1 -1
  77. package/lib/commonjs/shared/providers/screen/gestures/pan/use-build-pan-gesture.js +1 -1
  78. package/lib/commonjs/shared/providers/screen/gestures/pan/use-build-pan-gesture.js.map +1 -1
  79. package/lib/commonjs/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.js +25 -3
  80. package/lib/commonjs/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.js.map +1 -1
  81. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +4 -6
  82. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  83. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js +2 -2
  84. package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js.map +1 -1
  85. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +6 -1
  86. package/lib/commonjs/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  87. package/lib/commonjs/shared/providers/screen/gestures/shared/snapshot.js +2 -0
  88. package/lib/commonjs/shared/providers/screen/gestures/shared/snapshot.js.map +1 -1
  89. package/lib/commonjs/shared/providers/screen/gestures/shared/values.js +2 -0
  90. package/lib/commonjs/shared/providers/screen/gestures/shared/values.js.map +1 -1
  91. package/lib/commonjs/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js +13 -1
  92. package/lib/commonjs/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  93. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js +5 -3
  94. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js.map +1 -1
  95. package/lib/commonjs/shared/providers/screen/styles/stores/slot-references.store.js +1 -1
  96. package/lib/commonjs/shared/providers/screen/styles/stores/slot-references.store.js.map +1 -1
  97. package/lib/commonjs/shared/stores/gesture.store.js +8 -0
  98. package/lib/commonjs/shared/stores/gesture.store.js.map +1 -1
  99. package/lib/commonjs/shared/stores/system.store.js +10 -2
  100. package/lib/commonjs/shared/stores/system.store.js.map +1 -1
  101. package/lib/commonjs/shared/utils/animation/animate-to-progress.js +24 -7
  102. package/lib/commonjs/shared/utils/animation/animate-to-progress.js.map +1 -1
  103. package/lib/commonjs/shared/utils/bounds/helpers/create-bounds-accessor-core.js +15 -9
  104. package/lib/commonjs/shared/utils/bounds/helpers/create-bounds-accessor-core.js.map +1 -1
  105. package/lib/commonjs/shared/utils/bounds/navigation/reveal/build.js +2 -2
  106. package/lib/commonjs/shared/utils/bounds/navigation/reveal/build.js.map +1 -1
  107. package/lib/commonjs/shared/utils/bounds/navigation/reveal/math.js +2 -1
  108. package/lib/commonjs/shared/utils/bounds/navigation/reveal/math.js.map +1 -1
  109. package/lib/commonjs/shared/utils/bounds/navigation/zoom/build.js +178 -315
  110. package/lib/commonjs/shared/utils/bounds/navigation/zoom/build.js.map +1 -1
  111. package/lib/commonjs/shared/utils/bounds/navigation/zoom/config.js +12 -18
  112. package/lib/commonjs/shared/utils/bounds/navigation/zoom/config.js.map +1 -1
  113. package/lib/commonjs/shared/utils/bounds/navigation/zoom/drag.js +196 -0
  114. package/lib/commonjs/shared/utils/bounds/navigation/zoom/drag.js.map +1 -0
  115. package/lib/commonjs/shared/utils/bounds/navigation/zoom/helpers.js +94 -108
  116. package/lib/commonjs/shared/utils/bounds/navigation/zoom/helpers.js.map +1 -1
  117. package/lib/commonjs/shared/utils/bounds/navigation/zoom/mask.js +72 -0
  118. package/lib/commonjs/shared/utils/bounds/navigation/zoom/mask.js.map +1 -0
  119. package/lib/commonjs/shared/utils/bounds/navigation/zoom/targets.js +55 -0
  120. package/lib/commonjs/shared/utils/bounds/navigation/zoom/targets.js.map +1 -0
  121. package/lib/module/shared/adapters/with-screen-transitions/index.js +19 -5
  122. package/lib/module/shared/adapters/with-screen-transitions/index.js.map +1 -1
  123. package/lib/module/shared/animation/transition-blocking.js +66 -0
  124. package/lib/module/shared/animation/transition-blocking.js.map +1 -0
  125. package/lib/module/shared/components/boundary/components/boundary-target.js +35 -30
  126. package/lib/module/shared/components/boundary/components/boundary-target.js.map +1 -1
  127. package/lib/module/shared/components/boundary/create-boundary-component.js +32 -97
  128. package/lib/module/shared/components/boundary/create-boundary-component.js.map +1 -1
  129. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +79 -55
  130. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -1
  131. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js +1 -0
  132. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  133. package/lib/module/shared/components/boundary/hooks/use-measurer.js +15 -3
  134. package/lib/module/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  135. package/lib/module/shared/components/boundary/hooks/use-register-target.js +27 -0
  136. package/lib/module/shared/components/boundary/hooks/use-register-target.js.map +1 -0
  137. package/lib/module/shared/components/boundary/index.js +1 -1
  138. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/components/host.js +36 -0
  139. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/components/host.js.map +1 -0
  140. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/helpers/host-name.js +9 -0
  141. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/helpers/host-name.js.map +1 -0
  142. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js +219 -0
  143. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.js.map +1 -0
  144. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/index.js +34 -0
  145. package/lib/module/shared/components/boundary/portal/components/boundary-content-portal/index.js.map +1 -0
  146. package/lib/module/shared/components/boundary/portal/components/{host.js → boundary-portal/components/host.js} +20 -18
  147. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -0
  148. package/lib/module/shared/components/boundary/portal/components/{portal-boundary-host.js → boundary-portal/components/portal-boundary-host.js} +13 -12
  149. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -0
  150. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.js +46 -0
  151. package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.js.map +1 -0
  152. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/has-local-slot.js.map +1 -0
  153. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/host-name.js +9 -0
  154. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/host-name.js.map +1 -0
  155. package/lib/module/shared/components/boundary/portal/{utils → components/boundary-portal/helpers}/offset-style.js +1 -1
  156. package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -0
  157. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +180 -0
  158. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -0
  159. package/lib/module/shared/components/boundary/portal/{hooks → components/boundary-portal/hooks}/use-host-measurement.js +23 -5
  160. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js.map +1 -0
  161. package/lib/module/shared/components/boundary/portal/{hooks → components/boundary-portal/hooks}/use-placeholder-styles.js +3 -6
  162. package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-placeholder-styles.js.map +1 -0
  163. package/lib/module/shared/components/boundary/portal/components/boundary-portal/index.js +27 -0
  164. package/lib/module/shared/components/boundary/portal/components/boundary-portal/index.js.map +1 -0
  165. package/lib/module/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/host-bounds.store.js +1 -1
  166. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js.map +1 -0
  167. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/host-registry.store.js.map +1 -0
  168. package/lib/module/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/portal-boundary-host.store.js +5 -10
  169. package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -0
  170. package/lib/module/shared/components/boundary/portal/index.js +1 -2
  171. package/lib/module/shared/components/boundary/portal/index.js.map +1 -1
  172. package/lib/module/shared/components/boundary/portal/teleport.js +3 -2
  173. package/lib/module/shared/components/boundary/portal/teleport.js.map +1 -1
  174. package/lib/module/shared/components/boundary/portal/utils/naming.js +0 -12
  175. package/lib/module/shared/components/boundary/portal/utils/naming.js.map +1 -1
  176. package/lib/module/shared/components/boundary/portal/utils/ownership.js +16 -52
  177. package/lib/module/shared/components/boundary/portal/utils/ownership.js.map +1 -1
  178. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js +87 -20
  179. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  180. package/lib/module/shared/components/boundary/utils/destination-signals.js +39 -10
  181. package/lib/module/shared/components/boundary/utils/destination-signals.js.map +1 -1
  182. package/lib/module/shared/components/boundary/utils/measured-bounds.js +34 -0
  183. package/lib/module/shared/components/boundary/utils/measured-bounds.js.map +1 -1
  184. package/lib/module/shared/components/screen-container/layers/content.js +1 -1
  185. package/lib/module/shared/components/screen-container/layers/content.js.map +1 -1
  186. package/lib/module/shared/configs/presets.js +2 -2
  187. package/lib/module/shared/configs/presets.js.map +1 -1
  188. package/lib/module/shared/constants.js +4 -0
  189. package/lib/module/shared/constants.js.map +1 -1
  190. package/lib/module/shared/index.js +1 -0
  191. package/lib/module/shared/index.js.map +1 -1
  192. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js +4 -0
  193. package/lib/module/shared/providers/screen/animation/helpers/hydrate-transition-state/index.js.map +1 -1
  194. package/lib/module/shared/providers/screen/gestures/pan/activation/use-pan-activation.js +10 -10
  195. package/lib/module/shared/providers/screen/gestures/pan/activation/use-pan-activation.js.map +1 -1
  196. package/lib/module/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js +10 -2
  197. package/lib/module/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js.map +1 -1
  198. package/lib/module/shared/providers/screen/gestures/pan/use-build-pan-gesture.js +1 -1
  199. package/lib/module/shared/providers/screen/gestures/pan/use-build-pan-gesture.js.map +1 -1
  200. package/lib/module/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.js +23 -2
  201. package/lib/module/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.js.map +1 -1
  202. package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +4 -6
  203. package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
  204. package/lib/module/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js +2 -2
  205. package/lib/module/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js.map +1 -1
  206. package/lib/module/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js +6 -1
  207. package/lib/module/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.js.map +1 -1
  208. package/lib/module/shared/providers/screen/gestures/shared/snapshot.js +2 -0
  209. package/lib/module/shared/providers/screen/gestures/shared/snapshot.js.map +1 -1
  210. package/lib/module/shared/providers/screen/gestures/shared/values.js +2 -0
  211. package/lib/module/shared/providers/screen/gestures/shared/values.js.map +1 -1
  212. package/lib/module/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js +13 -1
  213. package/lib/module/shared/providers/screen/styles/hooks/use-maybe-block-visibility.js.map +1 -1
  214. package/lib/module/shared/providers/screen/styles/slot.provider.js +5 -3
  215. package/lib/module/shared/providers/screen/styles/slot.provider.js.map +1 -1
  216. package/lib/module/shared/providers/screen/styles/stores/slot-references.store.js +1 -1
  217. package/lib/module/shared/providers/screen/styles/stores/slot-references.store.js.map +1 -1
  218. package/lib/module/shared/stores/gesture.store.js +8 -0
  219. package/lib/module/shared/stores/gesture.store.js.map +1 -1
  220. package/lib/module/shared/stores/system.store.js +10 -2
  221. package/lib/module/shared/stores/system.store.js.map +1 -1
  222. package/lib/module/shared/types/bounds.types.js +26 -0
  223. package/lib/module/shared/types/bounds.types.js.map +1 -1
  224. package/lib/module/shared/utils/animation/animate-to-progress.js +24 -7
  225. package/lib/module/shared/utils/animation/animate-to-progress.js.map +1 -1
  226. package/lib/module/shared/utils/bounds/helpers/create-bounds-accessor-core.js +15 -9
  227. package/lib/module/shared/utils/bounds/helpers/create-bounds-accessor-core.js.map +1 -1
  228. package/lib/module/shared/utils/bounds/navigation/reveal/build.js +2 -2
  229. package/lib/module/shared/utils/bounds/navigation/reveal/build.js.map +1 -1
  230. package/lib/module/shared/utils/bounds/navigation/reveal/math.js +2 -1
  231. package/lib/module/shared/utils/bounds/navigation/reveal/math.js.map +1 -1
  232. package/lib/module/shared/utils/bounds/navigation/zoom/build.js +182 -319
  233. package/lib/module/shared/utils/bounds/navigation/zoom/build.js.map +1 -1
  234. package/lib/module/shared/utils/bounds/navigation/zoom/config.js +11 -17
  235. package/lib/module/shared/utils/bounds/navigation/zoom/config.js.map +1 -1
  236. package/lib/module/shared/utils/bounds/navigation/zoom/drag.js +184 -0
  237. package/lib/module/shared/utils/bounds/navigation/zoom/drag.js.map +1 -0
  238. package/lib/module/shared/utils/bounds/navigation/zoom/helpers.js +91 -102
  239. package/lib/module/shared/utils/bounds/navigation/zoom/helpers.js.map +1 -1
  240. package/lib/module/shared/utils/bounds/navigation/zoom/mask.js +67 -0
  241. package/lib/module/shared/utils/bounds/navigation/zoom/mask.js.map +1 -0
  242. package/lib/module/shared/utils/bounds/navigation/zoom/targets.js +50 -0
  243. package/lib/module/shared/utils/bounds/navigation/zoom/targets.js.map +1 -0
  244. package/lib/typescript/shared/adapters/with-screen-transitions/index.d.ts +4 -1
  245. package/lib/typescript/shared/adapters/with-screen-transitions/index.d.ts.map +1 -1
  246. package/lib/typescript/shared/animation/transition-blocking.d.ts +33 -0
  247. package/lib/typescript/shared/animation/transition-blocking.d.ts.map +1 -0
  248. package/lib/typescript/shared/components/boundary/components/boundary-target.d.ts +3 -1
  249. package/lib/typescript/shared/components/boundary/components/boundary-target.d.ts.map +1 -1
  250. package/lib/typescript/shared/components/boundary/create-boundary-component.d.ts.map +1 -1
  251. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts +2 -1
  252. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts.map +1 -1
  253. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts.map +1 -1
  254. package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts.map +1 -1
  255. package/lib/typescript/shared/components/boundary/hooks/use-register-target.d.ts +10 -0
  256. package/lib/typescript/shared/components/boundary/hooks/use-register-target.d.ts.map +1 -0
  257. package/lib/typescript/shared/components/boundary/index.d.ts +2 -2
  258. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/components/host.d.ts +10 -0
  259. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/components/host.d.ts.map +1 -0
  260. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/helpers/host-name.d.ts +2 -0
  261. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/helpers/host-name.d.ts.map +1 -0
  262. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts +12 -0
  263. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.d.ts.map +1 -0
  264. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/index.d.ts +9 -0
  265. package/lib/typescript/shared/components/boundary/portal/components/boundary-content-portal/index.d.ts.map +1 -0
  266. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/host.d.ts.map +1 -0
  267. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.d.ts.map +1 -0
  268. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.d.ts +13 -0
  269. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.d.ts.map +1 -0
  270. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/has-local-slot.d.ts +3 -0
  271. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/has-local-slot.d.ts.map +1 -0
  272. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/host-name.d.ts +2 -0
  273. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/host-name.d.ts.map +1 -0
  274. package/lib/typescript/shared/components/boundary/portal/{utils → components/boundary-portal/helpers}/offset-style.d.ts +1 -1
  275. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts.map +1 -0
  276. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts +12 -0
  277. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -0
  278. package/lib/typescript/shared/components/boundary/portal/{hooks → components/boundary-portal/hooks}/use-host-measurement.d.ts +5 -1
  279. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.d.ts.map +1 -0
  280. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-placeholder-styles.d.ts +12 -0
  281. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-placeholder-styles.d.ts.map +1 -0
  282. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/index.d.ts +12 -0
  283. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/index.d.ts.map +1 -0
  284. package/lib/typescript/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/host-bounds.store.d.ts +1 -1
  285. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.d.ts.map +1 -0
  286. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/host-registry.store.d.ts.map +1 -0
  287. package/lib/typescript/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/portal-boundary-host.store.d.ts +3 -3
  288. package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts.map +1 -0
  289. package/lib/typescript/shared/components/boundary/portal/index.d.ts +1 -2
  290. package/lib/typescript/shared/components/boundary/portal/index.d.ts.map +1 -1
  291. package/lib/typescript/shared/components/boundary/portal/teleport.d.ts +1 -0
  292. package/lib/typescript/shared/components/boundary/portal/teleport.d.ts.map +1 -1
  293. package/lib/typescript/shared/components/boundary/portal/utils/naming.d.ts +0 -2
  294. package/lib/typescript/shared/components/boundary/portal/utils/naming.d.ts.map +1 -1
  295. package/lib/typescript/shared/components/boundary/portal/utils/ownership.d.ts +9 -10
  296. package/lib/typescript/shared/components/boundary/portal/utils/ownership.d.ts.map +1 -1
  297. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts +22 -21
  298. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
  299. package/lib/typescript/shared/components/boundary/utils/destination-signals.d.ts +9 -2
  300. package/lib/typescript/shared/components/boundary/utils/destination-signals.d.ts.map +1 -1
  301. package/lib/typescript/shared/components/boundary/utils/measured-bounds.d.ts +8 -0
  302. package/lib/typescript/shared/components/boundary/utils/measured-bounds.d.ts.map +1 -1
  303. package/lib/typescript/shared/constants.d.ts.map +1 -1
  304. package/lib/typescript/shared/index.d.ts +2 -1
  305. package/lib/typescript/shared/index.d.ts.map +1 -1
  306. package/lib/typescript/shared/providers/screen/animation/helpers/hydrate-transition-state/index.d.ts.map +1 -1
  307. package/lib/typescript/shared/providers/screen/gestures/pan/activation/use-pan-activation.d.ts +2 -0
  308. package/lib/typescript/shared/providers/screen/gestures/pan/activation/use-pan-activation.d.ts.map +1 -1
  309. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.d.ts +2 -1
  310. package/lib/typescript/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.d.ts.map +1 -1
  311. package/lib/typescript/shared/providers/screen/gestures/pan/use-build-pan-gesture.d.ts.map +1 -1
  312. package/lib/typescript/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.d.ts +2 -0
  313. package/lib/typescript/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.d.ts.map +1 -1
  314. package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts +1 -1
  315. package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts.map +1 -1
  316. package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.d.ts.map +1 -1
  317. package/lib/typescript/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.d.ts.map +1 -1
  318. package/lib/typescript/shared/providers/screen/gestures/shared/snapshot.d.ts.map +1 -1
  319. package/lib/typescript/shared/providers/screen/gestures/shared/values.d.ts.map +1 -1
  320. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts +5 -0
  321. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts.map +1 -1
  322. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts +1 -0
  323. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts.map +1 -1
  324. package/lib/typescript/shared/providers/screen/styles/stores/slot-references.store.d.ts.map +1 -1
  325. package/lib/typescript/shared/stores/gesture.store.d.ts +4 -0
  326. package/lib/typescript/shared/stores/gesture.store.d.ts.map +1 -1
  327. package/lib/typescript/shared/stores/system.store.d.ts.map +1 -1
  328. package/lib/typescript/shared/types/animation.types.d.ts +3 -3
  329. package/lib/typescript/shared/types/bounds.types.d.ts +122 -90
  330. package/lib/typescript/shared/types/bounds.types.d.ts.map +1 -1
  331. package/lib/typescript/shared/types/gesture.types.d.ts +10 -0
  332. package/lib/typescript/shared/types/gesture.types.d.ts.map +1 -1
  333. package/lib/typescript/shared/types/index.d.ts +1 -1
  334. package/lib/typescript/shared/types/index.d.ts.map +1 -1
  335. package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts.map +1 -1
  336. package/lib/typescript/shared/utils/bounds/helpers/create-bounds-accessor-core.d.ts.map +1 -1
  337. package/lib/typescript/shared/utils/bounds/navigation/reveal/math.d.ts.map +1 -1
  338. package/lib/typescript/shared/utils/bounds/navigation/zoom/build.d.ts +1 -1
  339. package/lib/typescript/shared/utils/bounds/navigation/zoom/build.d.ts.map +1 -1
  340. package/lib/typescript/shared/utils/bounds/navigation/zoom/config.d.ts +7 -17
  341. package/lib/typescript/shared/utils/bounds/navigation/zoom/config.d.ts.map +1 -1
  342. package/lib/typescript/shared/utils/bounds/navigation/zoom/drag.d.ts +55 -0
  343. package/lib/typescript/shared/utils/bounds/navigation/zoom/drag.d.ts.map +1 -0
  344. package/lib/typescript/shared/utils/bounds/navigation/zoom/helpers.d.ts +31 -34
  345. package/lib/typescript/shared/utils/bounds/navigation/zoom/helpers.d.ts.map +1 -1
  346. package/lib/typescript/shared/utils/bounds/navigation/zoom/mask.d.ts +25 -0
  347. package/lib/typescript/shared/utils/bounds/navigation/zoom/mask.d.ts.map +1 -0
  348. package/lib/typescript/shared/utils/bounds/navigation/zoom/targets.d.ts +16 -0
  349. package/lib/typescript/shared/utils/bounds/navigation/zoom/targets.d.ts.map +1 -0
  350. package/lib/typescript/shared/utils/bounds/navigation/zoom/types.d.ts +1 -1
  351. package/lib/typescript/shared/utils/bounds/navigation/zoom/types.d.ts.map +1 -1
  352. package/lib/typescript/shared/utils/bounds/types/options.d.ts +6 -2
  353. package/lib/typescript/shared/utils/bounds/types/options.d.ts.map +1 -1
  354. package/package.json +1 -1
  355. package/src/shared/adapters/with-screen-transitions/index.tsx +30 -9
  356. package/src/shared/animation/transition-blocking.ts +79 -0
  357. package/src/shared/components/boundary/components/boundary-target.tsx +47 -43
  358. package/src/shared/components/boundary/create-boundary-component.tsx +35 -150
  359. package/src/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.ts +106 -81
  360. package/src/shared/components/boundary/hooks/use-boundary-measurement.ts +1 -0
  361. package/src/shared/components/boundary/hooks/use-measurer.ts +12 -4
  362. package/src/shared/components/boundary/hooks/use-register-target.ts +43 -0
  363. package/src/shared/components/boundary/index.tsx +2 -2
  364. package/src/shared/components/boundary/portal/components/boundary-content-portal/components/host.tsx +52 -0
  365. package/src/shared/components/boundary/portal/components/boundary-content-portal/helpers/host-name.ts +9 -0
  366. package/src/shared/components/boundary/portal/components/boundary-content-portal/hooks/use-boundary-content-portal-attachment.ts +317 -0
  367. package/src/shared/components/boundary/portal/components/boundary-content-portal/index.tsx +62 -0
  368. package/src/shared/components/boundary/portal/components/{host.tsx → boundary-portal/components/host.tsx} +17 -17
  369. package/src/shared/components/boundary/portal/components/{portal-boundary-host.tsx → boundary-portal/components/portal-boundary-host.tsx} +14 -13
  370. package/src/shared/components/boundary/portal/components/boundary-portal/components/portal-slot.tsx +79 -0
  371. package/src/shared/components/boundary/portal/{utils → components/boundary-portal/helpers}/has-local-slot.ts +1 -1
  372. package/src/shared/components/boundary/portal/components/boundary-portal/helpers/host-name.ts +10 -0
  373. package/src/shared/components/boundary/portal/{utils → components/boundary-portal/helpers}/offset-style.ts +2 -2
  374. package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +254 -0
  375. package/src/shared/components/boundary/portal/{hooks → components/boundary-portal/hooks}/use-host-measurement.ts +38 -8
  376. package/src/shared/components/boundary/portal/{hooks → components/boundary-portal/hooks}/use-placeholder-styles.ts +4 -15
  377. package/src/shared/components/boundary/portal/components/boundary-portal/index.tsx +35 -0
  378. package/src/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/host-bounds.store.ts +2 -2
  379. package/src/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/portal-boundary-host.store.ts +10 -15
  380. package/src/shared/components/boundary/portal/index.ts +1 -2
  381. package/src/shared/components/boundary/portal/teleport.ts +3 -2
  382. package/src/shared/components/boundary/portal/utils/naming.ts +0 -19
  383. package/src/shared/components/boundary/portal/utils/ownership.ts +32 -88
  384. package/src/shared/components/boundary/providers/boundary-root.provider.tsx +218 -78
  385. package/src/shared/components/boundary/utils/destination-signals.ts +38 -14
  386. package/src/shared/components/boundary/utils/measured-bounds.ts +48 -0
  387. package/src/shared/components/screen-container/layers/content.tsx +1 -1
  388. package/src/shared/configs/presets.ts +2 -2
  389. package/src/shared/constants.ts +4 -0
  390. package/src/shared/index.ts +6 -0
  391. package/src/shared/providers/screen/animation/helpers/hydrate-transition-state/index.ts +8 -0
  392. package/src/shared/providers/screen/gestures/pan/activation/use-pan-activation.ts +16 -7
  393. package/src/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.ts +18 -1
  394. package/src/shared/providers/screen/gestures/pan/use-build-pan-gesture.ts +1 -0
  395. package/src/shared/providers/screen/gestures/pinch/activation/use-pinch-activation.ts +40 -2
  396. package/src/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.ts +7 -11
  397. package/src/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.ts +12 -15
  398. package/src/shared/providers/screen/gestures/scroll-coordination/use-scroll-gesture-coordination.ts +6 -1
  399. package/src/shared/providers/screen/gestures/shared/snapshot.ts +2 -0
  400. package/src/shared/providers/screen/gestures/shared/values.ts +2 -0
  401. package/src/shared/providers/screen/styles/hooks/use-maybe-block-visibility.tsx +15 -1
  402. package/src/shared/providers/screen/styles/slot.provider.tsx +4 -2
  403. package/src/shared/providers/screen/styles/stores/slot-references.store.ts +2 -1
  404. package/src/shared/stores/gesture.store.ts +12 -0
  405. package/src/shared/stores/system.store.ts +10 -4
  406. package/src/shared/types/animation.types.ts +3 -3
  407. package/src/shared/types/bounds.types.ts +128 -92
  408. package/src/shared/types/gesture.types.ts +10 -0
  409. package/src/shared/types/index.ts +2 -0
  410. package/src/shared/utils/animation/animate-to-progress.ts +23 -7
  411. package/src/shared/utils/bounds/helpers/create-bounds-accessor-core.ts +18 -11
  412. package/src/shared/utils/bounds/navigation/reveal/build.ts +2 -2
  413. package/src/shared/utils/bounds/navigation/reveal/math.ts +2 -1
  414. package/src/shared/utils/bounds/navigation/zoom/build.ts +224 -412
  415. package/src/shared/utils/bounds/navigation/zoom/config.ts +15 -18
  416. package/src/shared/utils/bounds/navigation/zoom/drag.ts +327 -0
  417. package/src/shared/utils/bounds/navigation/zoom/helpers.ts +122 -184
  418. package/src/shared/utils/bounds/navigation/zoom/mask.ts +130 -0
  419. package/src/shared/utils/bounds/navigation/zoom/targets.ts +74 -0
  420. package/src/shared/utils/bounds/navigation/zoom/types.ts +1 -1
  421. package/src/shared/utils/bounds/types/options.ts +9 -2
  422. package/lib/commonjs/shared/components/boundary/portal/components/boundary-local-portal-host.js +0 -58
  423. package/lib/commonjs/shared/components/boundary/portal/components/boundary-local-portal-host.js.map +0 -1
  424. package/lib/commonjs/shared/components/boundary/portal/components/host.js.map +0 -1
  425. package/lib/commonjs/shared/components/boundary/portal/components/portal-boundary-host.js.map +0 -1
  426. package/lib/commonjs/shared/components/boundary/portal/components/portal.js +0 -272
  427. package/lib/commonjs/shared/components/boundary/portal/components/portal.js.map +0 -1
  428. package/lib/commonjs/shared/components/boundary/portal/hooks/use-host-measurement.js.map +0 -1
  429. package/lib/commonjs/shared/components/boundary/portal/hooks/use-placeholder-styles.js.map +0 -1
  430. package/lib/commonjs/shared/components/boundary/portal/stores/host-bounds.store.js.map +0 -1
  431. package/lib/commonjs/shared/components/boundary/portal/stores/host-registry.store.js.map +0 -1
  432. package/lib/commonjs/shared/components/boundary/portal/stores/portal-boundary-host.store.js.map +0 -1
  433. package/lib/commonjs/shared/components/boundary/portal/utils/has-local-slot.js.map +0 -1
  434. package/lib/commonjs/shared/components/boundary/portal/utils/offset-style.js.map +0 -1
  435. package/lib/commonjs/shared/utils/bounds/navigation/zoom/math.js +0 -25
  436. package/lib/commonjs/shared/utils/bounds/navigation/zoom/math.js.map +0 -1
  437. package/lib/module/shared/components/boundary/portal/components/boundary-local-portal-host.js +0 -53
  438. package/lib/module/shared/components/boundary/portal/components/boundary-local-portal-host.js.map +0 -1
  439. package/lib/module/shared/components/boundary/portal/components/host.js.map +0 -1
  440. package/lib/module/shared/components/boundary/portal/components/portal-boundary-host.js.map +0 -1
  441. package/lib/module/shared/components/boundary/portal/components/portal.js +0 -267
  442. package/lib/module/shared/components/boundary/portal/components/portal.js.map +0 -1
  443. package/lib/module/shared/components/boundary/portal/hooks/use-host-measurement.js.map +0 -1
  444. package/lib/module/shared/components/boundary/portal/hooks/use-placeholder-styles.js.map +0 -1
  445. package/lib/module/shared/components/boundary/portal/stores/host-bounds.store.js.map +0 -1
  446. package/lib/module/shared/components/boundary/portal/stores/host-registry.store.js.map +0 -1
  447. package/lib/module/shared/components/boundary/portal/stores/portal-boundary-host.store.js.map +0 -1
  448. package/lib/module/shared/components/boundary/portal/utils/has-local-slot.js.map +0 -1
  449. package/lib/module/shared/components/boundary/portal/utils/offset-style.js.map +0 -1
  450. package/lib/module/shared/utils/bounds/navigation/zoom/math.js +0 -20
  451. package/lib/module/shared/utils/bounds/navigation/zoom/math.js.map +0 -1
  452. package/lib/typescript/shared/components/boundary/portal/components/boundary-local-portal-host.d.ts +0 -8
  453. package/lib/typescript/shared/components/boundary/portal/components/boundary-local-portal-host.d.ts.map +0 -1
  454. package/lib/typescript/shared/components/boundary/portal/components/host.d.ts.map +0 -1
  455. package/lib/typescript/shared/components/boundary/portal/components/portal-boundary-host.d.ts.map +0 -1
  456. package/lib/typescript/shared/components/boundary/portal/components/portal.d.ts +0 -20
  457. package/lib/typescript/shared/components/boundary/portal/components/portal.d.ts.map +0 -1
  458. package/lib/typescript/shared/components/boundary/portal/hooks/use-host-measurement.d.ts.map +0 -1
  459. package/lib/typescript/shared/components/boundary/portal/hooks/use-placeholder-styles.d.ts +0 -17
  460. package/lib/typescript/shared/components/boundary/portal/hooks/use-placeholder-styles.d.ts.map +0 -1
  461. package/lib/typescript/shared/components/boundary/portal/stores/host-bounds.store.d.ts.map +0 -1
  462. package/lib/typescript/shared/components/boundary/portal/stores/host-registry.store.d.ts.map +0 -1
  463. package/lib/typescript/shared/components/boundary/portal/stores/portal-boundary-host.store.d.ts.map +0 -1
  464. package/lib/typescript/shared/components/boundary/portal/utils/has-local-slot.d.ts +0 -3
  465. package/lib/typescript/shared/components/boundary/portal/utils/has-local-slot.d.ts.map +0 -1
  466. package/lib/typescript/shared/components/boundary/portal/utils/offset-style.d.ts.map +0 -1
  467. package/lib/typescript/shared/utils/bounds/navigation/zoom/math.d.ts +0 -8
  468. package/lib/typescript/shared/utils/bounds/navigation/zoom/math.d.ts.map +0 -1
  469. package/src/shared/components/boundary/portal/components/boundary-local-portal-host.tsx +0 -66
  470. package/src/shared/components/boundary/portal/components/portal.tsx +0 -412
  471. package/src/shared/utils/bounds/navigation/zoom/math.ts +0 -25
  472. /package/lib/commonjs/shared/components/boundary/portal/{utils → components/boundary-portal/helpers}/has-local-slot.js +0 -0
  473. /package/lib/commonjs/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/host-registry.store.js +0 -0
  474. /package/lib/module/shared/components/boundary/portal/{utils → components/boundary-portal/helpers}/has-local-slot.js +0 -0
  475. /package/lib/module/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/host-registry.store.js +0 -0
  476. /package/lib/typescript/shared/components/boundary/portal/components/{host.d.ts → boundary-portal/components/host.d.ts} +0 -0
  477. /package/lib/typescript/shared/components/boundary/portal/components/{portal-boundary-host.d.ts → boundary-portal/components/portal-boundary-host.d.ts} +0 -0
  478. /package/lib/typescript/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/host-registry.store.d.ts +0 -0
  479. /package/src/shared/components/boundary/portal/{stores → components/boundary-portal/stores}/host-registry.store.ts +0 -0
@@ -2,73 +2,40 @@ import { interpolate } from "react-native-reanimated";
2
2
  import {
3
3
  EPSILON,
4
4
  NAVIGATION_MASK_ELEMENT_STYLE_ID,
5
- VISIBLE_STYLE,
6
5
  } from "../../../../constants";
7
- import type { TransitionInterpolatedStyle } from "../../../../types/animation.types";
8
6
  import { createBoundsAccessorCore } from "../../helpers/create-bounds-accessor-core";
9
- import { getSourceBorderRadius, toNumber } from "../helpers";
7
+ import { getSourceBorderRadius } from "../helpers";
8
+ import { resolveRevealContentBaseTransform } from "../reveal/math";
10
9
  import {
11
- combineScales,
12
- composeCompensatedTranslation,
13
- computeCenterScaleShift,
14
- resolveDirectionalDragScale,
15
- resolveOpacityRangeTuple,
16
- } from "../math";
17
- import {
18
- resolveDismissScaleHandoff,
19
- resolveRevealGestureHandoff,
20
- } from "../reveal/math";
21
- import {
22
- ZOOM_DISMISS_SCALE_ORBIT_DEPTH,
10
+ ZOOM_BACKDROP_MAX_OPACITY,
11
+ ZOOM_BACKGROUND_SCALE,
23
12
  ZOOM_FOCUSED_ELEMENT_CLOSE_OPACITY_RANGE,
24
13
  ZOOM_FOCUSED_ELEMENT_OPEN_OPACITY_RANGE,
25
- ZOOM_MASK_OUTSET,
14
+ ZOOM_SCREEN_A_FADE_END,
26
15
  ZOOM_SHARED_OPTIONS,
27
16
  ZOOM_UNFOCUSED_ELEMENT_CLOSE_OPACITY_RANGE,
28
17
  ZOOM_UNFOCUSED_ELEMENT_OPEN_OPACITY_RANGE,
29
18
  } from "./config";
19
+ import { resolveZoomDragState, resolveZoomTrackedGestureScale } from "./drag";
30
20
  import {
31
- getZoomContentTarget,
32
- interpolateOpacityRange,
33
- resolveBackgroundScale,
34
- resolveDragScaleTuple,
35
- resolveDragTranslationTuple,
36
- resolveZoomPanGestureDirection,
21
+ resolveZoomBackdropOpacity,
22
+ resolveZoomPinchFocalOffset,
23
+ resolveZoomTrackedSourceTransform,
37
24
  } from "./helpers";
38
- import { resolveDirectionalDragTranslation } from "./math";
25
+ import {
26
+ resolveZoomNavigationMaskStyle,
27
+ ZOOM_NAVIGATION_MASK_BORDER_RADIUS,
28
+ } from "./mask";
29
+ import {
30
+ getZoomContentTarget,
31
+ resolveZoomTrackingContentTarget,
32
+ } from "./targets";
39
33
  import type { BuildZoomStylesParams, ZoomInterpolatedStyle } from "./types";
40
34
 
41
- const IDENTITY_DRAG_SCALE_OUTPUT = [1, 1] as const;
42
-
43
- function resolveZoomGestureOptions({
44
- rawDrag,
45
- maxSensitivity,
46
- }: {
47
- rawDrag: number;
48
- maxSensitivity: number;
49
- }) {
50
- "worklet";
51
-
52
- const { gestureSensitivity, gestureReleaseVelocityScale } =
53
- resolveRevealGestureHandoff({
54
- rawDrag,
55
- maxSensitivity,
56
- });
57
-
58
- return {
59
- gestureSensitivity,
60
- gestureReleaseVelocityScale,
61
- };
62
- }
63
-
64
- /* -------------------------------------------------------------------------- */
65
- /* BUILD ZOOM STYLES */
66
- /* -------------------------------------------------------------------------- */
67
-
68
35
  export function buildZoomStyles({
69
36
  tag,
70
- zoomOptions,
71
37
  props,
38
+ zoomOptions,
72
39
  }: BuildZoomStylesParams): ZoomInterpolatedStyle {
73
40
  "worklet";
74
41
 
@@ -76,424 +43,269 @@ export function buildZoomStyles({
76
43
  return {};
77
44
  }
78
45
 
79
- /* ------------------------------ Shared Setup ------------------------------ */
80
-
81
46
  const target = zoomOptions?.target;
47
+ const keepFocusedVisible = zoomOptions?.keepFocusedVisible === true;
48
+ const expandedBorderRadius = Math.max(
49
+ 0,
50
+ zoomOptions?.borderRadius ?? ZOOM_NAVIGATION_MASK_BORDER_RADIUS,
51
+ );
52
+ const backgroundScale = zoomOptions?.backgroundScale ?? ZOOM_BACKGROUND_SCALE;
53
+ const backdropColor = zoomOptions?.backdropColor ?? "black";
54
+ const maxBackdropOpacity =
55
+ zoomOptions?.backdropOpacity ?? ZOOM_BACKDROP_MAX_OPACITY;
56
+
82
57
  const {
58
+ active,
59
+ current,
83
60
  focused,
61
+ transitionProgress,
84
62
  layouts: { screen: screenLayout },
85
63
  } = props;
86
- const transitionProgress =
87
- props.current.transitionProgress + (props.next?.transitionProgress ?? 0);
88
- const activeTransitionProgress = props.active.transitionProgress;
89
64
 
90
- const zoomAnchor = target === "bound" ? "center" : ZOOM_SHARED_OPTIONS.anchor;
65
+ const activeTransitionProgress = active.transitionProgress;
91
66
 
92
67
  const bounds = createBoundsAccessorCore({
93
68
  getProps: () => props,
94
69
  });
70
+
95
71
  const scopedBounds = bounds(tag);
96
72
  const link = scopedBounds.link();
73
+ const sourceBounds = link?.source?.bounds;
74
+
75
+ if (!link || !sourceBounds) {
76
+ if (target !== "bound") {
77
+ scopedBounds.values({
78
+ scaleMode: ZOOM_SHARED_OPTIONS.scaleMode,
79
+ anchor: ZOOM_SHARED_OPTIONS.anchor,
80
+ method: "content",
81
+ target: target ?? "fullscreen",
82
+ progress: transitionProgress,
83
+ });
84
+ }
97
85
 
98
- if (!link) return {};
99
-
100
- const baseRawOptions = {
101
- scaleMode: ZOOM_SHARED_OPTIONS.scaleMode,
102
- } as const;
103
-
104
- const buildEffectiveTag = link.id;
105
- const sourceBorderRadius = getSourceBorderRadius(link);
106
- const targetBorderRadius = zoomOptions?.borderRadius ?? sourceBorderRadius;
107
- const focusedElementOpacity = {
108
- open: resolveOpacityRangeTuple({
109
- value: zoomOptions?.focusedElementOpacity?.open,
110
- fallback: ZOOM_FOCUSED_ELEMENT_OPEN_OPACITY_RANGE,
111
- }),
112
- close: resolveOpacityRangeTuple({
113
- value: zoomOptions?.focusedElementOpacity?.close,
114
- fallback: ZOOM_FOCUSED_ELEMENT_CLOSE_OPACITY_RANGE,
115
- }),
116
- };
117
- const unfocusedElementOpacity = {
118
- open: resolveOpacityRangeTuple({
119
- value: zoomOptions?.unfocusedElementOpacity?.open,
120
- fallback: ZOOM_UNFOCUSED_ELEMENT_OPEN_OPACITY_RANGE,
121
- }),
122
- close: resolveOpacityRangeTuple({
123
- value: zoomOptions?.unfocusedElementOpacity?.close,
124
- fallback: ZOOM_UNFOCUSED_ELEMENT_CLOSE_OPACITY_RANGE,
125
- }),
126
- };
127
- const sourceVisibilityStyle = {
128
- [buildEffectiveTag]: {
129
- style: VISIBLE_STYLE,
130
- },
131
- } satisfies TransitionInterpolatedStyle;
132
- const navigationMaskEnabled = props.current.options.navigationMaskEnabled;
133
- const maxSensitivity = zoomOptions?.maxSensitivity ?? 0.8;
134
- const velocityDepth =
135
- zoomOptions?.velocityDepth ?? ZOOM_DISMISS_SCALE_ORBIT_DEPTH;
136
-
137
- /* --------------------------- Gesture / Drag Values ------------------------- */
86
+ return {};
87
+ }
138
88
 
139
- const liveGesture = props.active.gesture;
140
- const gestureHandoff = liveGesture.handoff;
141
- const normX = gestureHandoff.normX;
142
- const normY = gestureHandoff.normY;
143
- const initialGesture = resolveZoomPanGestureDirection({
144
- active: gestureHandoff.active,
145
- direction: gestureHandoff.direction,
146
- normX,
147
- normY,
148
- rawNormX: gestureHandoff.raw.normX,
149
- rawNormY: gestureHandoff.raw.normY,
89
+ const zoomContentTarget = getZoomContentTarget({
90
+ explicitTarget: target,
91
+ screenLayout,
92
+ link,
150
93
  });
151
- const isHorizontalDismiss =
152
- initialGesture === "horizontal" || initialGesture === "horizontal-inverted";
153
- const isVerticalDismiss =
154
- initialGesture === "vertical" || initialGesture === "vertical-inverted";
155
- const rawDrag = isHorizontalDismiss
156
- ? Math.abs(gestureHandoff.raw.normX)
157
- : isVerticalDismiss
158
- ? Math.abs(gestureHandoff.raw.normY)
159
- : 0;
160
-
161
- const horizontalDragTranslation = resolveDragTranslationTuple(
162
- zoomOptions?.horizontalDragTranslation,
163
- );
164
- const verticalDragTranslation = resolveDragTranslationTuple(
165
- zoomOptions?.verticalDragTranslation,
166
- );
167
- const dragX = resolveDirectionalDragTranslation({
168
- translation: liveGesture.x,
169
- dimension: screenLayout.width,
170
- negativeMax: horizontalDragTranslation.negativeMax,
171
- positiveMax: horizontalDragTranslation.positiveMax,
172
- exponent: horizontalDragTranslation.exponent,
94
+ const trackingContentTarget = resolveZoomTrackingContentTarget({
95
+ contentTarget: zoomContentTarget,
96
+ link,
97
+ screenLayout,
173
98
  });
174
- const dragY = resolveDirectionalDragTranslation({
175
- translation: liveGesture.y,
176
- dimension: screenLayout.height,
177
- negativeMax: verticalDragTranslation.negativeMax,
178
- positiveMax: verticalDragTranslation.positiveMax,
179
- exponent: verticalDragTranslation.exponent,
99
+
100
+ if (!trackingContentTarget) {
101
+ return {};
102
+ }
103
+
104
+ const drag = resolveZoomDragState({
105
+ gesture: active.gesture,
106
+ activeTransitionProgress,
107
+ screenLayout,
108
+ sourceBounds,
109
+ trackingContentTarget,
110
+ dragOptions: zoomOptions?.drag,
180
111
  });
181
- const horizontalDragScale = resolveDragScaleTuple(
182
- zoomOptions?.horizontalDragScale,
183
- );
184
- const verticalDragScale = resolveDragScaleTuple(
185
- zoomOptions?.verticalDragScale,
186
- );
187
- const backgroundScale = resolveBackgroundScale(zoomOptions?.backgroundScale);
188
112
 
189
- const dragXScale = isHorizontalDismiss
190
- ? resolveDirectionalDragScale({
191
- normalized: normX,
192
- dismissDirection:
193
- initialGesture === "horizontal-inverted" ? "negative" : "positive",
194
- shrinkMin: horizontalDragScale.shrinkMin,
195
- growMax: horizontalDragScale.growMax,
196
- exponent: horizontalDragScale.exponent,
197
- })
198
- : IDENTITY_DRAG_SCALE_OUTPUT[0];
199
- const dragYScale = isVerticalDismiss
200
- ? resolveDirectionalDragScale({
201
- normalized: normY,
202
- dismissDirection:
203
- initialGesture === "vertical-inverted" ? "negative" : "positive",
204
- shrinkMin: verticalDragScale.shrinkMin,
205
- growMax: verticalDragScale.growMax,
206
- exponent: verticalDragScale.exponent,
207
- })
208
- : IDENTITY_DRAG_SCALE_OUTPUT[1];
209
- const dragScale = combineScales(dragXScale, dragYScale);
210
- const handoffDragScale = props.active.gesture.dismissing
211
- ? resolveDismissScaleHandoff({
212
- progress: activeTransitionProgress,
213
- releaseScale: dragScale,
214
- targetScale: 1,
215
- velocity: gestureHandoff.velocity,
216
- velocityDepth,
217
- })
218
- : dragScale;
219
- const zoomGestureOptions = resolveZoomGestureOptions({
220
- rawDrag,
221
- maxSensitivity,
113
+ const trackedGestureScale = resolveZoomTrackedGestureScale({
114
+ drag,
115
+ activeTransitionProgress,
116
+ screenLayout,
117
+ sourceBounds,
118
+ trackingContentTarget,
222
119
  });
223
120
 
224
- /* ----------------------------- Focused Screen ----------------------------- */
121
+ const focalGesture = drag.isDismissing
122
+ ? active.gesture.handoff
123
+ : active.gesture;
124
+
125
+ const focalProgress = drag.isDismissing ? activeTransitionProgress : 1;
126
+ const pinchFocalOffset =
127
+ active.gesture.handoff.active === "pinch-in"
128
+ ? resolveZoomPinchFocalOffset({
129
+ gestureScale: drag.isDismissing
130
+ ? focalGesture.scale
131
+ : trackedGestureScale,
132
+ pinchOriginX: focalGesture.pinchOriginX,
133
+ pinchOriginY: focalGesture.pinchOriginY,
134
+ progress: focalProgress,
135
+ rotation: drag.isDismissing ? focalGesture.rotation : drag.rotation,
136
+ screenLayout,
137
+ })
138
+ : { x: 0, y: 0 };
225
139
 
226
140
  if (focused) {
227
- const focusedContentTarget = getZoomContentTarget({
228
- explicitTarget: target,
229
- screenLayout,
230
- anchor: ZOOM_SHARED_OPTIONS.anchor,
231
- link,
141
+ const sourceBorderRadius = getSourceBorderRadius(link);
142
+ const navigationMaskEnabled = current.options.navigationMaskEnabled;
143
+ const backdropOpacity = resolveZoomBackdropOpacity({
144
+ transitionProgress,
145
+ dismissalDrag: drag.dismissNorm,
146
+ fadeEnd: ZOOM_SCREEN_A_FADE_END,
147
+ maxOpacity: maxBackdropOpacity,
232
148
  });
233
149
 
234
- const contentRaw = scopedBounds.math({
235
- ...baseRawOptions,
236
- anchor: zoomAnchor,
150
+ const contentRaw = scopedBounds.values({
151
+ scaleMode: ZOOM_SHARED_OPTIONS.scaleMode,
152
+ anchor: target === "bound" ? "center" : ZOOM_SHARED_OPTIONS.anchor,
237
153
  method: "content",
238
- target: focusedContentTarget,
154
+ target: zoomContentTarget,
239
155
  progress: transitionProgress,
240
156
  });
241
157
 
242
- const maskRaw = scopedBounds.math({
243
- ...baseRawOptions,
244
- anchor: ZOOM_SHARED_OPTIONS.anchor,
245
- method: "size",
246
- space: "absolute",
247
- target: "fullscreen",
248
- progress: transitionProgress,
249
- });
158
+ const focusedOpacityRange = active.closing
159
+ ? ZOOM_FOCUSED_ELEMENT_CLOSE_OPACITY_RANGE
160
+ : ZOOM_FOCUSED_ELEMENT_OPEN_OPACITY_RANGE;
250
161
 
251
- const focusedFade = props.active?.closing
252
- ? interpolateOpacityRange({
253
- progress: transitionProgress,
254
- range: focusedElementOpacity.close,
255
- })
256
- : interpolateOpacityRange({
257
- progress: transitionProgress,
258
- range: focusedElementOpacity.open,
259
- });
260
-
261
- /**
262
- * This is also how swiftui handles their navigation zoom.
263
- * They remove clipping as soon as the screen stops animating
264
- */
265
- const shouldRemoveClipping = !props.active.animating;
266
- const focusedMaskBorderRadius = interpolate(
162
+ const focusedFade = interpolate(
267
163
  transitionProgress,
268
- [0, 1],
269
- [sourceBorderRadius, shouldRemoveClipping ? 0 : targetBorderRadius],
164
+ [focusedOpacityRange[0], focusedOpacityRange[1]],
165
+ [focusedOpacityRange[2], focusedOpacityRange[3]],
270
166
  "clamp",
271
167
  );
272
168
 
273
- const { top, right, bottom, left } = ZOOM_MASK_OUTSET;
274
- const maskWidth = Math.max(1, toNumber(maskRaw.width) + left + right);
275
- const maskHeight = Math.max(1, toNumber(maskRaw.height) + top + bottom);
276
-
277
- const contentBaseTranslateX = toNumber(contentRaw.translateX);
278
- const contentBaseTranslateY = toNumber(contentRaw.translateY);
279
- const contentBaseScale = toNumber(contentRaw.scale, 1);
280
- const safeContentBaseScale =
281
- Math.abs(contentBaseScale) > EPSILON ? contentBaseScale : 1;
282
- const contentTranslateX = contentBaseTranslateX + dragX;
283
- const contentTranslateY = contentBaseTranslateY + dragY;
284
- const contentScale = contentBaseScale * handoffDragScale;
285
-
286
- const maskBaseTranslateX = toNumber(maskRaw.translateX) - left;
287
- const maskBaseTranslateY = toNumber(maskRaw.translateY) - top;
288
- const maskCenterX = maskWidth / 2;
289
- const maskCenterY = maskHeight / 2;
290
- const contentCenterX = screenLayout.width / 2;
291
- const contentCenterY = screenLayout.height / 2;
292
- const compensatedMaskTranslateX =
293
- (maskBaseTranslateX -
294
- contentBaseTranslateX +
295
- (1 - contentBaseScale) * (maskCenterX - contentCenterX)) /
296
- safeContentBaseScale;
297
- const compensatedMaskTranslateY =
298
- (maskBaseTranslateY -
299
- contentBaseTranslateY +
300
- (1 - contentBaseScale) * (maskCenterY - contentCenterY)) /
301
- safeContentBaseScale;
302
- const compensatedMaskScale = 1 / safeContentBaseScale;
169
+ const contentBaseTranslateX = contentRaw.translateX;
170
+ const contentBaseTranslateY = contentRaw.translateY;
171
+ const contentBaseScale = contentRaw.scale;
172
+
173
+ const contentTranslateX =
174
+ contentBaseTranslateX +
175
+ drag.dragX +
176
+ pinchFocalOffset.x * contentBaseScale;
177
+ const contentTranslateY =
178
+ contentBaseTranslateY +
179
+ drag.dragY +
180
+ pinchFocalOffset.y * contentBaseScale;
181
+ const contentScale = drag.isDismissing
182
+ ? drag.dismissContentScale
183
+ : contentBaseScale * drag.gestureScale;
303
184
 
304
- const focusedContentStyle = {
305
- opacity: zoomOptions?.debug ? 0.5 : focusedFade,
306
- transform: [
307
- { translateX: contentTranslateX },
308
- { translateY: contentTranslateY },
309
- { scale: contentScale },
310
- ],
311
- ...(navigationMaskEnabled
312
- ? {}
313
- : {
314
- borderRadius: focusedMaskBorderRadius,
315
- overflow: "hidden" as const,
316
- }),
317
- };
318
-
319
- const focusedStyles: ZoomInterpolatedStyle = {
320
- content: {
321
- style: focusedContentStyle,
185
+ return {
186
+ options: {
187
+ gestureReleaseVelocityScale: 0.5,
322
188
  },
323
- ...sourceVisibilityStyle,
324
- };
325
-
326
- if (navigationMaskEnabled) {
327
- focusedStyles[NAVIGATION_MASK_ELEMENT_STYLE_ID] = {
189
+ backdrop: {
328
190
  style: {
329
- width: maskWidth,
330
- height: maskHeight,
331
- borderRadius: focusedMaskBorderRadius,
191
+ backgroundColor: backdropColor,
192
+ opacity: backdropOpacity,
193
+ },
194
+ },
195
+ content: {
196
+ style: {
197
+ ...(keepFocusedVisible ? {} : { opacity: focusedFade }),
332
198
  transform: [
333
- { translateX: compensatedMaskTranslateX },
334
- { translateY: compensatedMaskTranslateY },
335
- { scale: compensatedMaskScale },
199
+ { translateX: contentTranslateX },
200
+ { translateY: contentTranslateY },
201
+ { scale: contentScale },
202
+ { rotateZ: `${drag.rotation}rad` },
336
203
  ],
204
+ borderRadius: interpolate(
205
+ transitionProgress,
206
+ [0, 1],
207
+ [sourceBorderRadius, active.animating ? expandedBorderRadius : 0],
208
+ "clamp",
209
+ ),
210
+ overflow: "hidden" as const,
337
211
  },
338
- };
339
- }
340
-
341
- return {
342
- options: zoomGestureOptions,
343
- ...focusedStyles,
212
+ },
213
+ [NAVIGATION_MASK_ELEMENT_STYLE_ID]: navigationMaskEnabled
214
+ ? resolveZoomNavigationMaskStyle({
215
+ scopedBounds,
216
+ link,
217
+ sourceBounds,
218
+ screenLayout,
219
+ transitionProgress,
220
+ drag,
221
+ contentTransform: contentRaw,
222
+ sourceBorderRadius,
223
+ expandedBorderRadius,
224
+ active,
225
+ })
226
+ : {},
344
227
  };
345
228
  }
346
229
 
347
- /* ---------------------------- Unfocused Screen ---------------------------- */
348
-
349
- const unfocusedFade = props.active?.closing
350
- ? interpolateOpacityRange({
351
- progress: transitionProgress,
352
- range: unfocusedElementOpacity.close,
353
- })
354
- : interpolateOpacityRange({
355
- progress: transitionProgress,
356
- range: unfocusedElementOpacity.open,
357
- });
230
+ const unfocusedOpacityRange = active.closing
231
+ ? ZOOM_UNFOCUSED_ELEMENT_CLOSE_OPACITY_RANGE
232
+ : ZOOM_UNFOCUSED_ELEMENT_OPEN_OPACITY_RANGE;
233
+ const unfocusedFade = interpolate(
234
+ transitionProgress,
235
+ [unfocusedOpacityRange[0], unfocusedOpacityRange[1]],
236
+ [unfocusedOpacityRange[2], unfocusedOpacityRange[3]],
237
+ "clamp",
238
+ );
358
239
  const unfocusedScale = interpolate(
359
240
  transitionProgress,
360
241
  [1, 2],
361
242
  [1, backgroundScale],
362
243
  "clamp",
363
244
  );
364
- const didSourceComponentVisiblyHide =
365
- !props.active.closing && unfocusedFade <= EPSILON;
366
-
367
- const shouldHideUnfocusedElement =
368
- !props.active.closing && didSourceComponentVisiblyHide;
369
-
370
- const unfocusedElementTarget = getZoomContentTarget({
371
- explicitTarget: target,
372
- screenLayout,
373
- anchor: ZOOM_SHARED_OPTIONS.anchor,
374
- link,
375
- });
376
-
377
- const elementRaw = scopedBounds.math({
378
- ...baseRawOptions,
379
- anchor: zoomAnchor,
380
- method: "transform",
381
- space: "relative",
382
- target: unfocusedElementTarget,
383
- progress: transitionProgress,
384
- });
385
245
 
386
- const boundTargetCenterX =
387
- target === "bound" && link.destination?.bounds
388
- ? link.destination.bounds.pageX + link.destination.bounds.width / 2
389
- : undefined;
390
- const boundTargetCenterY =
391
- target === "bound" && link.destination?.bounds
392
- ? link.destination.bounds.pageY + link.destination.bounds.height / 2
393
- : undefined;
394
-
395
- const elementCenterX =
396
- boundTargetCenterX ??
397
- (typeof unfocusedElementTarget === "object"
398
- ? unfocusedElementTarget.pageX + unfocusedElementTarget.width / 2
399
- : screenLayout.width / 2);
400
- const elementCenterY =
401
- boundTargetCenterY ??
402
- (typeof unfocusedElementTarget === "object"
403
- ? unfocusedElementTarget.pageY + unfocusedElementTarget.height / 2
404
- : screenLayout.height / 2);
405
-
406
- const unfocusedContentScale = props.active.settled ? 1 : unfocusedScale;
407
- const shouldTrackGestureTranslation = !props.active.settled;
408
- const shouldTrackGestureScale = !props.active.settled;
409
- const elementGestureScale = shouldTrackGestureScale ? handoffDragScale : 1;
410
- const elementGestureX = shouldTrackGestureTranslation ? dragX : 0;
411
- const elementGestureY = shouldTrackGestureTranslation ? dragY : 0;
412
- const safeUnfocusedContentScale = Math.max(
413
- Math.abs(unfocusedContentScale),
414
- EPSILON,
415
- );
416
- // A naturally settled close can leave this as the last emitted style frame,
417
- // so drop temporary stacking here instead of waiting for a later reset pass.
418
- const shouldElevateUnfocusedElement =
419
- !props.active.closing || !props.active.settled;
246
+ const shouldHideSource = !active.closing && unfocusedFade <= EPSILON;
247
+ const unfocusedContentScale = active.settled ? 1 : unfocusedScale;
248
+ const unfocusedContent = {
249
+ style: {
250
+ transform: [{ scale: unfocusedContentScale }],
251
+ },
252
+ };
420
253
 
421
- const scaleShiftX = computeCenterScaleShift({
422
- center: elementCenterX,
423
- containerCenter: screenLayout.width / 2,
424
- scale: elementGestureScale,
425
- });
426
- const scaleShiftY = computeCenterScaleShift({
427
- center: elementCenterY,
428
- containerCenter: screenLayout.height / 2,
429
- scale: elementGestureScale,
430
- });
254
+ // To avoid measuring a component from a bad position,
255
+ // we'll want to hide + reset this component when the animation has reached a visual settling point
256
+ if (shouldHideSource || active.settled) {
257
+ return {
258
+ content: unfocusedContent,
259
+ [link.id]: {
260
+ style: {
261
+ transform: [
262
+ { translateX: 0 },
263
+ { translateY: 0 },
264
+ { scaleX: 1 },
265
+ { scaleY: 1 },
266
+ ],
267
+ opacity: shouldHideSource ? 0 : unfocusedFade,
268
+ },
269
+ },
270
+ };
271
+ }
431
272
 
432
- const compensatedGestureX = composeCompensatedTranslation({
433
- gesture: elementGestureX,
434
- parentScale: unfocusedContentScale,
435
- centerShift: scaleShiftX,
436
- epsilon: EPSILON,
437
- });
438
- const compensatedGestureY = composeCompensatedTranslation({
439
- gesture: elementGestureY,
273
+ const trackedContentBaseScale = resolveRevealContentBaseTransform({
274
+ progress: activeTransitionProgress,
275
+ sourceBounds,
276
+ destinationBounds: trackingContentTarget,
277
+ screenLayout,
278
+ }).scale;
279
+ const trackedDragX =
280
+ drag.dragX + pinchFocalOffset.x * trackedContentBaseScale;
281
+ const trackedDragY =
282
+ drag.dragY + pinchFocalOffset.y * trackedContentBaseScale;
283
+
284
+ const trackedSourceElement = resolveZoomTrackedSourceTransform({
285
+ progress: activeTransitionProgress,
286
+ sourceBounds,
287
+ destinationBounds: trackingContentTarget,
288
+ screenLayout,
289
+ dragX: trackedDragX,
290
+ dragY: trackedDragY,
291
+ gestureScale: trackedGestureScale,
440
292
  parentScale: unfocusedContentScale,
441
- centerShift: scaleShiftY,
442
- epsilon: EPSILON,
293
+ rotation: drag.rotation,
443
294
  });
444
295
 
445
- const elementTranslateX =
446
- toNumber(elementRaw.translateX) + compensatedGestureX;
447
- const elementTranslateY =
448
- toNumber(elementRaw.translateY) + compensatedGestureY;
449
- const elementScaleX =
450
- (toNumber(elementRaw.scaleX, 1) * elementGestureScale) /
451
- safeUnfocusedContentScale;
452
- const elementScaleY =
453
- (toNumber(elementRaw.scaleY, 1) * elementGestureScale) /
454
- safeUnfocusedContentScale;
455
-
456
- const resolvedElementStyle = shouldHideUnfocusedElement
457
- ? {
458
- transform: [
459
- { translateX: 0 },
460
- { translateY: 0 },
461
- { scaleX: 1 },
462
- { scaleY: 1 },
463
- ],
464
- opacity: zoomOptions?.debug ? 1 : 0,
465
- zIndex: 0,
466
- elevation: 0,
467
- }
468
- : {
469
- transform: [
470
- {
471
- translateX: elementTranslateX,
472
- },
473
- {
474
- translateY: elementTranslateY,
475
- },
476
- {
477
- scaleX: elementScaleX,
478
- },
479
- {
480
- scaleY: elementScaleY,
481
- },
482
- ],
483
- opacity: zoomOptions?.debug ? 1 : unfocusedFade,
484
- zIndex: shouldElevateUnfocusedElement ? 9999 : 0,
485
- elevation: shouldElevateUnfocusedElement ? 9999 : 0,
486
- };
487
-
488
296
  return {
489
- options: zoomGestureOptions,
490
- content: {
297
+ content: unfocusedContent,
298
+ [link.id]: {
491
299
  style: {
492
- transform: [{ scale: unfocusedContentScale }],
300
+ transform: [
301
+ { translateX: trackedSourceElement.translateX },
302
+ { translateY: trackedSourceElement.translateY },
303
+ { rotateZ: `${drag.rotation}rad` },
304
+ { scaleX: trackedSourceElement.scaleX },
305
+ { scaleY: trackedSourceElement.scaleY },
306
+ ],
307
+ opacity: unfocusedFade,
493
308
  },
494
309
  },
495
- [buildEffectiveTag]: {
496
- style: resolvedElementStyle,
497
- },
498
310
  };
499
311
  }