react-native-screen-transitions 3.9.0-alpha.2 → 3.9.0-beta.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 (475) hide show
  1. package/lib/commonjs/shared/components/boundary/components/boundary-target.js +14 -9
  2. package/lib/commonjs/shared/components/boundary/components/boundary-target.js.map +1 -1
  3. package/lib/commonjs/shared/components/boundary/create-boundary-component.js +66 -28
  4. package/lib/commonjs/shared/components/boundary/create-boundary-component.js.map +1 -1
  5. package/lib/commonjs/shared/components/boundary/hooks/{use-boundary-presence.js → lifecycles/use-boundary-presence.js} +8 -4
  6. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-boundary-presence.js.map +1 -0
  7. package/lib/commonjs/shared/components/boundary/hooks/{use-initial-destination-measurement.js → lifecycles/use-initial-destination-measurement.js} +27 -10
  8. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -0
  9. package/lib/commonjs/shared/components/boundary/hooks/{use-initial-source-measurement.js → lifecycles/use-initial-source-measurement.js} +5 -7
  10. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.js.map +1 -0
  11. package/lib/commonjs/shared/components/boundary/hooks/{use-refresh-boundary.js → lifecycles/use-refresh-boundary.js} +4 -4
  12. package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -0
  13. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js +14 -35
  14. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  15. package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js +5 -6
  16. package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  17. package/lib/commonjs/shared/components/boundary/index.js +26 -29
  18. package/lib/commonjs/shared/components/boundary/index.js.map +1 -1
  19. package/lib/commonjs/shared/components/boundary/portal/components/boundary-local-portal-host.js +58 -0
  20. package/lib/commonjs/shared/components/boundary/portal/components/boundary-local-portal-host.js.map +1 -0
  21. package/lib/commonjs/shared/components/boundary/portal/components/host.js +20 -4
  22. package/lib/commonjs/shared/components/boundary/portal/components/host.js.map +1 -1
  23. package/lib/commonjs/shared/components/boundary/portal/components/portal-boundary-host.js +78 -27
  24. package/lib/commonjs/shared/components/boundary/portal/components/portal-boundary-host.js.map +1 -1
  25. package/lib/commonjs/shared/components/boundary/portal/components/portal.js +195 -121
  26. package/lib/commonjs/shared/components/boundary/portal/components/portal.js.map +1 -1
  27. package/lib/commonjs/shared/components/boundary/portal/hooks/use-host-measurement.js +14 -2
  28. package/lib/commonjs/shared/components/boundary/portal/hooks/use-host-measurement.js.map +1 -1
  29. package/lib/commonjs/shared/components/boundary/portal/hooks/use-placeholder-styles.js +57 -0
  30. package/lib/commonjs/shared/components/boundary/portal/hooks/use-placeholder-styles.js.map +1 -0
  31. package/lib/commonjs/shared/components/boundary/portal/stores/host-registry.store.js +5 -44
  32. package/lib/commonjs/shared/components/boundary/portal/stores/host-registry.store.js.map +1 -1
  33. package/lib/commonjs/shared/components/boundary/portal/stores/portal-boundary-host.store.js +37 -5
  34. package/lib/commonjs/shared/components/boundary/portal/stores/portal-boundary-host.store.js.map +1 -1
  35. package/lib/commonjs/shared/components/boundary/portal/teleport.js +15 -2
  36. package/lib/commonjs/shared/components/boundary/portal/teleport.js.map +1 -1
  37. package/lib/commonjs/shared/components/boundary/portal/utils/has-local-slot.js +18 -0
  38. package/lib/commonjs/shared/components/boundary/portal/utils/has-local-slot.js.map +1 -0
  39. package/lib/commonjs/shared/components/boundary/portal/utils/naming.js +10 -3
  40. package/lib/commonjs/shared/components/boundary/portal/utils/naming.js.map +1 -1
  41. package/lib/commonjs/shared/components/boundary/portal/utils/offset-style.js +28 -48
  42. package/lib/commonjs/shared/components/boundary/portal/utils/offset-style.js.map +1 -1
  43. package/lib/commonjs/shared/components/boundary/portal/utils/ownership.js +254 -0
  44. package/lib/commonjs/shared/components/boundary/portal/utils/ownership.js.map +1 -0
  45. package/lib/commonjs/shared/components/boundary/portal/utils/resolve-portal.js +38 -0
  46. package/lib/commonjs/shared/components/boundary/portal/utils/resolve-portal.js.map +1 -0
  47. package/lib/commonjs/shared/components/boundary/portal/utils/shallow-equal.js +29 -0
  48. package/lib/commonjs/shared/components/boundary/portal/utils/shallow-equal.js.map +1 -0
  49. package/lib/commonjs/shared/components/boundary/portal/utils/teleport-control.js +10 -1
  50. package/lib/commonjs/shared/components/boundary/portal/utils/teleport-control.js.map +1 -1
  51. package/lib/commonjs/shared/components/boundary/portal/utils/visible-host.js +25 -0
  52. package/lib/commonjs/shared/components/boundary/portal/utils/visible-host.js.map +1 -0
  53. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js +6 -7
  54. package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  55. package/lib/commonjs/shared/components/boundary/utils/destination-signals.js +1 -22
  56. package/lib/commonjs/shared/components/boundary/utils/destination-signals.js.map +1 -1
  57. package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js +0 -21
  58. package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js.map +1 -1
  59. package/lib/commonjs/shared/components/boundary/utils/source-signals.js +4 -9
  60. package/lib/commonjs/shared/components/boundary/utils/source-signals.js.map +1 -1
  61. package/lib/commonjs/shared/components/masked-view.js +5 -0
  62. package/lib/commonjs/shared/components/masked-view.js.map +1 -1
  63. package/lib/commonjs/shared/components/screen-container/layers/backdrop.js +18 -8
  64. package/lib/commonjs/shared/components/screen-container/layers/backdrop.js.map +1 -1
  65. package/lib/commonjs/shared/components/screen-container/layers/content.js +34 -16
  66. package/lib/commonjs/shared/components/screen-container/layers/content.js.map +1 -1
  67. package/lib/commonjs/shared/components/screen-container/layers/render-component.js +10 -0
  68. package/lib/commonjs/shared/components/screen-container/layers/render-component.js.map +1 -0
  69. package/lib/commonjs/shared/components/screen-container/layers/surface-container.js +5 -3
  70. package/lib/commonjs/shared/components/screen-container/layers/surface-container.js.map +1 -1
  71. package/lib/commonjs/shared/index.js +4 -0
  72. package/lib/commonjs/shared/index.js.map +1 -1
  73. package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js +6 -3
  74. package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
  75. package/lib/commonjs/shared/providers/register-bounds.provider.js +6 -0
  76. package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -1
  77. package/lib/commonjs/shared/providers/screen/animation/helpers/derivations.js +1 -0
  78. package/lib/commonjs/shared/providers/screen/animation/helpers/derivations.js.map +1 -1
  79. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js +1 -0
  80. package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  81. package/lib/commonjs/shared/providers/screen/styles/helpers/compose-slot-style.js +95 -0
  82. package/lib/commonjs/shared/providers/screen/styles/helpers/compose-slot-style.js.map +1 -0
  83. package/lib/commonjs/shared/providers/screen/styles/helpers/normalize-slots.js +30 -9
  84. package/lib/commonjs/shared/providers/screen/styles/helpers/normalize-slots.js.map +1 -1
  85. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js +9 -3
  86. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js.map +1 -1
  87. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js +2 -0
  88. package/lib/commonjs/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js.map +1 -1
  89. package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js +96 -0
  90. package/lib/commonjs/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -0
  91. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +16 -3
  92. package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  93. package/lib/commonjs/shared/providers/screen/styles/index.js +16 -3
  94. package/lib/commonjs/shared/providers/screen/styles/index.js.map +1 -1
  95. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js +22 -51
  96. package/lib/commonjs/shared/providers/screen/styles/slot.provider.js.map +1 -1
  97. package/lib/commonjs/shared/providers/screen/styles/stores/slot-references.store.js +53 -0
  98. package/lib/commonjs/shared/providers/screen/styles/stores/slot-references.store.js.map +1 -0
  99. package/lib/commonjs/shared/stores/bounds/helpers/link-pairs.helpers.js +22 -2
  100. package/lib/commonjs/shared/stores/bounds/helpers/link-pairs.helpers.js.map +1 -1
  101. package/lib/commonjs/shared/stores/bounds/internals/entries.js +11 -4
  102. package/lib/commonjs/shared/stores/bounds/internals/entries.js.map +1 -1
  103. package/lib/commonjs/shared/stores/bounds/internals/links.js +134 -51
  104. package/lib/commonjs/shared/stores/bounds/internals/links.js.map +1 -1
  105. package/lib/commonjs/shared/stores/bounds/internals/resolver.js +1 -3
  106. package/lib/commonjs/shared/stores/bounds/internals/resolver.js.map +1 -1
  107. package/lib/commonjs/shared/stores/system.store.js +5 -0
  108. package/lib/commonjs/shared/stores/system.store.js.map +1 -1
  109. package/lib/commonjs/shared/utils/bounds/helpers/styles/compute.js +10 -69
  110. package/lib/commonjs/shared/utils/bounds/helpers/styles/compute.js.map +1 -1
  111. package/lib/commonjs/shared/utils/bounds/helpers/styles/local-transform.js +59 -0
  112. package/lib/commonjs/shared/utils/bounds/helpers/styles/local-transform.js.map +1 -0
  113. package/lib/module/shared/components/boundary/components/boundary-target.js +12 -7
  114. package/lib/module/shared/components/boundary/components/boundary-target.js.map +1 -1
  115. package/lib/module/shared/components/boundary/create-boundary-component.js +67 -29
  116. package/lib/module/shared/components/boundary/create-boundary-component.js.map +1 -1
  117. package/lib/module/shared/components/boundary/hooks/{use-boundary-presence.js → lifecycles/use-boundary-presence.js} +8 -4
  118. package/lib/module/shared/components/boundary/hooks/lifecycles/use-boundary-presence.js.map +1 -0
  119. package/lib/module/shared/components/boundary/hooks/{use-initial-destination-measurement.js → lifecycles/use-initial-destination-measurement.js} +27 -10
  120. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -0
  121. package/lib/module/shared/components/boundary/hooks/{use-initial-source-measurement.js → lifecycles/use-initial-source-measurement.js} +5 -7
  122. package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.js.map +1 -0
  123. package/lib/module/shared/components/boundary/hooks/{use-refresh-boundary.js → lifecycles/use-refresh-boundary.js} +4 -4
  124. package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -0
  125. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js +15 -36
  126. package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
  127. package/lib/module/shared/components/boundary/hooks/use-measurer.js +5 -6
  128. package/lib/module/shared/components/boundary/hooks/use-measurer.js.map +1 -1
  129. package/lib/module/shared/components/boundary/index.js +26 -29
  130. package/lib/module/shared/components/boundary/index.js.map +1 -1
  131. package/lib/module/shared/components/boundary/portal/components/boundary-local-portal-host.js +53 -0
  132. package/lib/module/shared/components/boundary/portal/components/boundary-local-portal-host.js.map +1 -0
  133. package/lib/module/shared/components/boundary/portal/components/host.js +21 -5
  134. package/lib/module/shared/components/boundary/portal/components/host.js.map +1 -1
  135. package/lib/module/shared/components/boundary/portal/components/portal-boundary-host.js +79 -28
  136. package/lib/module/shared/components/boundary/portal/components/portal-boundary-host.js.map +1 -1
  137. package/lib/module/shared/components/boundary/portal/components/portal.js +201 -127
  138. package/lib/module/shared/components/boundary/portal/components/portal.js.map +1 -1
  139. package/lib/module/shared/components/boundary/portal/hooks/use-host-measurement.js +15 -3
  140. package/lib/module/shared/components/boundary/portal/hooks/use-host-measurement.js.map +1 -1
  141. package/lib/module/shared/components/boundary/portal/hooks/use-placeholder-styles.js +52 -0
  142. package/lib/module/shared/components/boundary/portal/hooks/use-placeholder-styles.js.map +1 -0
  143. package/lib/module/shared/components/boundary/portal/stores/host-registry.store.js +4 -41
  144. package/lib/module/shared/components/boundary/portal/stores/host-registry.store.js.map +1 -1
  145. package/lib/module/shared/components/boundary/portal/stores/portal-boundary-host.store.js +35 -4
  146. package/lib/module/shared/components/boundary/portal/stores/portal-boundary-host.store.js.map +1 -1
  147. package/lib/module/shared/components/boundary/portal/teleport.js +16 -2
  148. package/lib/module/shared/components/boundary/portal/teleport.js.map +1 -1
  149. package/lib/module/shared/components/boundary/portal/utils/has-local-slot.js +13 -0
  150. package/lib/module/shared/components/boundary/portal/utils/has-local-slot.js.map +1 -0
  151. package/lib/module/shared/components/boundary/portal/utils/naming.js +8 -2
  152. package/lib/module/shared/components/boundary/portal/utils/naming.js.map +1 -1
  153. package/lib/module/shared/components/boundary/portal/utils/offset-style.js +29 -48
  154. package/lib/module/shared/components/boundary/portal/utils/offset-style.js.map +1 -1
  155. package/lib/module/shared/components/boundary/portal/utils/ownership.js +246 -0
  156. package/lib/module/shared/components/boundary/portal/utils/ownership.js.map +1 -0
  157. package/lib/module/shared/components/boundary/portal/utils/resolve-portal.js +33 -0
  158. package/lib/module/shared/components/boundary/portal/utils/resolve-portal.js.map +1 -0
  159. package/lib/module/shared/components/boundary/portal/utils/shallow-equal.js +24 -0
  160. package/lib/module/shared/components/boundary/portal/utils/shallow-equal.js.map +1 -0
  161. package/lib/module/shared/components/boundary/portal/utils/teleport-control.js +8 -0
  162. package/lib/module/shared/components/boundary/portal/utils/teleport-control.js.map +1 -1
  163. package/lib/module/shared/components/boundary/portal/utils/visible-host.js +20 -0
  164. package/lib/module/shared/components/boundary/portal/utils/visible-host.js.map +1 -0
  165. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js +6 -7
  166. package/lib/module/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
  167. package/lib/module/shared/components/boundary/utils/destination-signals.js +2 -23
  168. package/lib/module/shared/components/boundary/utils/destination-signals.js.map +1 -1
  169. package/lib/module/shared/components/boundary/utils/refresh-signals.js +0 -21
  170. package/lib/module/shared/components/boundary/utils/refresh-signals.js.map +1 -1
  171. package/lib/module/shared/components/boundary/utils/source-signals.js +4 -9
  172. package/lib/module/shared/components/boundary/utils/source-signals.js.map +1 -1
  173. package/lib/module/shared/components/masked-view.js +5 -0
  174. package/lib/module/shared/components/masked-view.js.map +1 -1
  175. package/lib/module/shared/components/screen-container/layers/backdrop.js +19 -9
  176. package/lib/module/shared/components/screen-container/layers/backdrop.js.map +1 -1
  177. package/lib/module/shared/components/screen-container/layers/content.js +35 -17
  178. package/lib/module/shared/components/screen-container/layers/content.js.map +1 -1
  179. package/lib/module/shared/components/screen-container/layers/render-component.js +6 -0
  180. package/lib/module/shared/components/screen-container/layers/render-component.js.map +1 -0
  181. package/lib/module/shared/components/screen-container/layers/surface-container.js +5 -3
  182. package/lib/module/shared/components/screen-container/layers/surface-container.js.map +1 -1
  183. package/lib/module/shared/index.js +4 -0
  184. package/lib/module/shared/index.js.map +1 -1
  185. package/lib/module/shared/providers/helpers/measured-bounds-writes.js +6 -3
  186. package/lib/module/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
  187. package/lib/module/shared/providers/register-bounds.provider.js +6 -0
  188. package/lib/module/shared/providers/register-bounds.provider.js.map +1 -1
  189. package/lib/module/shared/providers/screen/animation/helpers/derivations.js +1 -0
  190. package/lib/module/shared/providers/screen/animation/helpers/derivations.js.map +1 -1
  191. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js +1 -0
  192. package/lib/module/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
  193. package/lib/module/shared/providers/screen/styles/helpers/compose-slot-style.js +89 -0
  194. package/lib/module/shared/providers/screen/styles/helpers/compose-slot-style.js.map +1 -0
  195. package/lib/module/shared/providers/screen/styles/helpers/normalize-slots.js +30 -9
  196. package/lib/module/shared/providers/screen/styles/helpers/normalize-slots.js.map +1 -1
  197. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js +9 -3
  198. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/index.js.map +1 -1
  199. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js +2 -0
  200. package/lib/module/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.js.map +1 -1
  201. package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js +87 -0
  202. package/lib/module/shared/providers/screen/styles/hooks/slot-resolvers.js.map +1 -0
  203. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +16 -3
  204. package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
  205. package/lib/module/shared/providers/screen/styles/index.js +2 -1
  206. package/lib/module/shared/providers/screen/styles/index.js.map +1 -1
  207. package/lib/module/shared/providers/screen/styles/slot.provider.js +22 -47
  208. package/lib/module/shared/providers/screen/styles/slot.provider.js.map +1 -1
  209. package/lib/module/shared/providers/screen/styles/stores/slot-references.store.js +47 -0
  210. package/lib/module/shared/providers/screen/styles/stores/slot-references.store.js.map +1 -0
  211. package/lib/module/shared/stores/bounds/helpers/link-pairs.helpers.js +19 -1
  212. package/lib/module/shared/stores/bounds/helpers/link-pairs.helpers.js.map +1 -1
  213. package/lib/module/shared/stores/bounds/internals/entries.js +11 -4
  214. package/lib/module/shared/stores/bounds/internals/entries.js.map +1 -1
  215. package/lib/module/shared/stores/bounds/internals/links.js +135 -53
  216. package/lib/module/shared/stores/bounds/internals/links.js.map +1 -1
  217. package/lib/module/shared/stores/bounds/internals/resolver.js +1 -3
  218. package/lib/module/shared/stores/bounds/internals/resolver.js.map +1 -1
  219. package/lib/module/shared/stores/system.store.js +5 -0
  220. package/lib/module/shared/stores/system.store.js.map +1 -1
  221. package/lib/module/shared/types/animation.types.js.map +1 -1
  222. package/lib/module/shared/utils/bounds/helpers/styles/compute.js +10 -69
  223. package/lib/module/shared/utils/bounds/helpers/styles/compute.js.map +1 -1
  224. package/lib/module/shared/utils/bounds/helpers/styles/local-transform.js +52 -0
  225. package/lib/module/shared/utils/bounds/helpers/styles/local-transform.js.map +1 -0
  226. package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts +1 -2
  227. package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts.map +1 -1
  228. package/lib/typescript/component-stack/components/component-screen.d.ts +1 -1
  229. package/lib/typescript/component-stack/components/component-screen.d.ts.map +1 -1
  230. package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts +1 -2
  231. package/lib/typescript/component-stack/navigators/create-component-stack-navigator.d.ts.map +1 -1
  232. package/lib/typescript/component-stack/types.d.ts +26 -0
  233. package/lib/typescript/component-stack/types.d.ts.map +1 -1
  234. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +1 -1
  235. package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -1
  236. package/lib/typescript/native-stack/views/NativeStackView.d.ts +1 -2
  237. package/lib/typescript/native-stack/views/NativeStackView.d.ts.map +1 -1
  238. package/lib/typescript/native-stack/views/useHeaderConfigProps.d.ts +2 -2
  239. package/lib/typescript/shared/adapters/with-screen-transitions/context.d.ts +1 -1
  240. package/lib/typescript/shared/adapters/with-screen-transitions/context.d.ts.map +1 -1
  241. package/lib/typescript/shared/adapters/with-screen-transitions/stack-layout.d.ts +1 -1
  242. package/lib/typescript/shared/adapters/with-screen-transitions/stack-layout.d.ts.map +1 -1
  243. package/lib/typescript/shared/components/activity/variants/activity-container.d.ts +1 -1
  244. package/lib/typescript/shared/components/activity/variants/activity-container.d.ts.map +1 -1
  245. package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts +1 -1
  246. package/lib/typescript/shared/components/activity/variants/activity-screen.d.ts.map +1 -1
  247. package/lib/typescript/shared/components/boundary/components/boundary-target.d.ts +1 -1
  248. package/lib/typescript/shared/components/boundary/components/boundary-target.d.ts.map +1 -1
  249. package/lib/typescript/shared/components/boundary/create-boundary-component.d.ts +0 -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-boundary-presence.d.ts +11 -0
  252. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-boundary-presence.d.ts.map +1 -0
  253. package/lib/typescript/shared/components/boundary/hooks/{use-initial-destination-measurement.d.ts → lifecycles/use-initial-destination-measurement.d.ts} +2 -2
  254. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts.map +1 -0
  255. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.d.ts +8 -0
  256. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-source-measurement.d.ts.map +1 -0
  257. package/lib/typescript/shared/components/boundary/hooks/{use-refresh-boundary.d.ts → lifecycles/use-refresh-boundary.d.ts} +2 -2
  258. package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts.map +1 -0
  259. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts +5 -9
  260. package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts.map +1 -1
  261. package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts +4 -3
  262. package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts.map +1 -1
  263. package/lib/typescript/shared/components/boundary/index.d.ts +35 -24
  264. package/lib/typescript/shared/components/boundary/index.d.ts.map +1 -1
  265. package/lib/typescript/shared/components/boundary/portal/components/boundary-local-portal-host.d.ts +8 -0
  266. package/lib/typescript/shared/components/boundary/portal/components/boundary-local-portal-host.d.ts.map +1 -0
  267. package/lib/typescript/shared/components/boundary/portal/components/host.d.ts +2 -2
  268. package/lib/typescript/shared/components/boundary/portal/components/host.d.ts.map +1 -1
  269. package/lib/typescript/shared/components/boundary/portal/components/portal-boundary-host.d.ts +2 -2
  270. package/lib/typescript/shared/components/boundary/portal/components/portal-boundary-host.d.ts.map +1 -1
  271. package/lib/typescript/shared/components/boundary/portal/components/portal-provider.d.ts +1 -1
  272. package/lib/typescript/shared/components/boundary/portal/components/portal-provider.d.ts.map +1 -1
  273. package/lib/typescript/shared/components/boundary/portal/components/portal.d.ts +4 -3
  274. package/lib/typescript/shared/components/boundary/portal/components/portal.d.ts.map +1 -1
  275. package/lib/typescript/shared/components/boundary/portal/hooks/use-host-measurement.d.ts.map +1 -1
  276. package/lib/typescript/shared/components/boundary/portal/hooks/use-placeholder-styles.d.ts +17 -0
  277. package/lib/typescript/shared/components/boundary/portal/hooks/use-placeholder-styles.d.ts.map +1 -0
  278. package/lib/typescript/shared/components/boundary/portal/stores/host-registry.store.d.ts +0 -7
  279. package/lib/typescript/shared/components/boundary/portal/stores/host-registry.store.d.ts.map +1 -1
  280. package/lib/typescript/shared/components/boundary/portal/stores/portal-boundary-host.store.d.ts +16 -1
  281. package/lib/typescript/shared/components/boundary/portal/stores/portal-boundary-host.store.d.ts.map +1 -1
  282. package/lib/typescript/shared/components/boundary/portal/teleport.d.ts +1 -1
  283. package/lib/typescript/shared/components/boundary/portal/teleport.d.ts.map +1 -1
  284. package/lib/typescript/shared/components/boundary/portal/utils/has-local-slot.d.ts +3 -0
  285. package/lib/typescript/shared/components/boundary/portal/utils/has-local-slot.d.ts.map +1 -0
  286. package/lib/typescript/shared/components/boundary/portal/utils/naming.d.ts +2 -1
  287. package/lib/typescript/shared/components/boundary/portal/utils/naming.d.ts.map +1 -1
  288. package/lib/typescript/shared/components/boundary/portal/utils/offset-style.d.ts +23 -30
  289. package/lib/typescript/shared/components/boundary/portal/utils/offset-style.d.ts.map +1 -1
  290. package/lib/typescript/shared/components/boundary/portal/utils/ownership.d.ts +35 -0
  291. package/lib/typescript/shared/components/boundary/portal/utils/ownership.d.ts.map +1 -0
  292. package/lib/typescript/shared/components/boundary/portal/utils/resolve-portal.d.ts +12 -0
  293. package/lib/typescript/shared/components/boundary/portal/utils/resolve-portal.d.ts.map +1 -0
  294. package/lib/typescript/shared/components/boundary/portal/utils/shallow-equal.d.ts +8 -0
  295. package/lib/typescript/shared/components/boundary/portal/utils/shallow-equal.d.ts.map +1 -0
  296. package/lib/typescript/shared/components/boundary/portal/utils/teleport-control.d.ts +4 -0
  297. package/lib/typescript/shared/components/boundary/portal/utils/teleport-control.d.ts.map +1 -1
  298. package/lib/typescript/shared/components/boundary/portal/utils/visible-host.d.ts +8 -0
  299. package/lib/typescript/shared/components/boundary/portal/utils/visible-host.d.ts.map +1 -0
  300. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts +7 -12
  301. package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
  302. package/lib/typescript/shared/components/boundary/types.d.ts +9 -36
  303. package/lib/typescript/shared/components/boundary/types.d.ts.map +1 -1
  304. package/lib/typescript/shared/components/boundary/utils/destination-signals.d.ts.map +1 -1
  305. package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts.map +1 -1
  306. package/lib/typescript/shared/components/boundary/utils/source-signals.d.ts +0 -1
  307. package/lib/typescript/shared/components/boundary/utils/source-signals.d.ts.map +1 -1
  308. package/lib/typescript/shared/components/create-transition-aware-component.d.ts +6 -5
  309. package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
  310. package/lib/typescript/shared/components/masked-view.d.ts +5 -1
  311. package/lib/typescript/shared/components/masked-view.d.ts.map +1 -1
  312. package/lib/typescript/shared/components/overlay/variations/float-overlay.d.ts +1 -1
  313. package/lib/typescript/shared/components/overlay/variations/float-overlay.d.ts.map +1 -1
  314. package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts +1 -1
  315. package/lib/typescript/shared/components/overlay/variations/overlay-host.d.ts.map +1 -1
  316. package/lib/typescript/shared/components/scene-view.d.ts +1 -1
  317. package/lib/typescript/shared/components/scene-view.d.ts.map +1 -1
  318. package/lib/typescript/shared/components/screen-container/index.d.ts +1 -1
  319. package/lib/typescript/shared/components/screen-container/index.d.ts.map +1 -1
  320. package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts +1 -1
  321. package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts.map +1 -1
  322. package/lib/typescript/shared/components/screen-container/layers/content.d.ts +1 -1
  323. package/lib/typescript/shared/components/screen-container/layers/content.d.ts.map +1 -1
  324. package/lib/typescript/shared/components/screen-container/layers/maybe-masked-navigation-container.d.ts +1 -1
  325. package/lib/typescript/shared/components/screen-container/layers/maybe-masked-navigation-container.d.ts.map +1 -1
  326. package/lib/typescript/shared/components/screen-container/layers/render-component.d.ts +3 -0
  327. package/lib/typescript/shared/components/screen-container/layers/render-component.d.ts.map +1 -0
  328. package/lib/typescript/shared/components/screen-container/layers/surface-container.d.ts +1 -1
  329. package/lib/typescript/shared/components/screen-container/layers/surface-container.d.ts.map +1 -1
  330. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts +1 -1
  331. package/lib/typescript/shared/hooks/navigation/use-stack.d.ts.map +1 -1
  332. package/lib/typescript/shared/index.d.ts +731 -683
  333. package/lib/typescript/shared/index.d.ts.map +1 -1
  334. package/lib/typescript/shared/providers/helpers/measured-bounds-writes.d.ts +3 -3
  335. package/lib/typescript/shared/providers/helpers/measured-bounds-writes.d.ts.map +1 -1
  336. package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -1
  337. package/lib/typescript/shared/providers/screen/animation/helpers/derivations.d.ts +1 -0
  338. package/lib/typescript/shared/providers/screen/animation/helpers/derivations.d.ts.map +1 -1
  339. package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
  340. package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts +1 -1
  341. package/lib/typescript/shared/providers/screen/descriptors/descriptors.provider.d.ts.map +1 -1
  342. package/lib/typescript/shared/providers/screen/screen-composer.d.ts +1 -1
  343. package/lib/typescript/shared/providers/screen/screen-composer.d.ts.map +1 -1
  344. package/lib/typescript/shared/providers/screen/styles/components/floating-overlay-layer.d.ts +1 -1
  345. package/lib/typescript/shared/providers/screen/styles/components/floating-overlay-layer.d.ts.map +1 -1
  346. package/lib/typescript/shared/providers/screen/styles/helpers/compose-slot-style.d.ts +4 -0
  347. package/lib/typescript/shared/providers/screen/styles/helpers/compose-slot-style.d.ts.map +1 -0
  348. package/lib/typescript/shared/providers/screen/styles/helpers/normalize-slots.d.ts.map +1 -1
  349. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/index.d.ts.map +1 -1
  350. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.d.ts +2 -1
  351. package/lib/typescript/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.d.ts.map +1 -1
  352. package/lib/typescript/shared/providers/screen/styles/hooks/slot-resolvers.d.ts +11 -0
  353. package/lib/typescript/shared/providers/screen/styles/hooks/slot-resolvers.d.ts.map +1 -0
  354. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts +4 -1
  355. package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
  356. package/lib/typescript/shared/providers/screen/styles/hooks/use-maybe-block-visibility.d.ts +3 -3
  357. package/lib/typescript/shared/providers/screen/styles/index.d.ts +2 -1
  358. package/lib/typescript/shared/providers/screen/styles/index.d.ts.map +1 -1
  359. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts +5 -10
  360. package/lib/typescript/shared/providers/screen/styles/slot.provider.d.ts.map +1 -1
  361. package/lib/typescript/shared/providers/screen/styles/stores/slot-references.store.d.ts +6 -0
  362. package/lib/typescript/shared/providers/screen/styles/stores/slot-references.store.d.ts.map +1 -0
  363. package/lib/typescript/shared/stores/bounds/helpers/link-pairs.helpers.d.ts +2 -0
  364. package/lib/typescript/shared/stores/bounds/helpers/link-pairs.helpers.d.ts.map +1 -1
  365. package/lib/typescript/shared/stores/bounds/internals/entries.d.ts.map +1 -1
  366. package/lib/typescript/shared/stores/bounds/internals/links.d.ts +4 -3
  367. package/lib/typescript/shared/stores/bounds/internals/links.d.ts.map +1 -1
  368. package/lib/typescript/shared/stores/bounds/internals/resolver.d.ts.map +1 -1
  369. package/lib/typescript/shared/stores/bounds/types.d.ts +9 -20
  370. package/lib/typescript/shared/stores/bounds/types.d.ts.map +1 -1
  371. package/lib/typescript/shared/stores/system.store.d.ts +1 -0
  372. package/lib/typescript/shared/stores/system.store.d.ts.map +1 -1
  373. package/lib/typescript/shared/types/animation.types.d.ts +7 -1
  374. package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
  375. package/lib/typescript/shared/types/index.d.ts +1 -1
  376. package/lib/typescript/shared/types/index.d.ts.map +1 -1
  377. package/lib/typescript/shared/types/screen.types.d.ts +99 -4
  378. package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
  379. package/lib/typescript/shared/utils/bounds/helpers/styles/compute.d.ts.map +1 -1
  380. package/lib/typescript/shared/utils/bounds/helpers/styles/local-transform.d.ts +6 -0
  381. package/lib/typescript/shared/utils/bounds/helpers/styles/local-transform.d.ts.map +1 -0
  382. package/lib/typescript/shared/utils/bounds/types/options.d.ts +2 -0
  383. package/lib/typescript/shared/utils/bounds/types/options.d.ts.map +1 -1
  384. package/package.json +1 -1
  385. package/src/component-stack/types.ts +26 -0
  386. package/src/shared/components/boundary/components/boundary-target.tsx +21 -7
  387. package/src/shared/components/boundary/create-boundary-component.tsx +92 -28
  388. package/src/shared/components/boundary/hooks/{use-boundary-presence.ts → lifecycles/use-boundary-presence.ts} +16 -5
  389. package/src/shared/components/boundary/hooks/{use-initial-destination-measurement.ts → lifecycles/use-initial-destination-measurement.ts} +40 -13
  390. package/src/shared/components/boundary/hooks/{use-initial-source-measurement.ts → lifecycles/use-initial-source-measurement.ts} +7 -9
  391. package/src/shared/components/boundary/hooks/{use-refresh-boundary.ts → lifecycles/use-refresh-boundary.ts} +6 -6
  392. package/src/shared/components/boundary/hooks/use-boundary-measurement.ts +15 -45
  393. package/src/shared/components/boundary/hooks/use-measurer.ts +9 -14
  394. package/src/shared/components/boundary/index.tsx +55 -29
  395. package/src/shared/components/boundary/portal/components/boundary-local-portal-host.tsx +66 -0
  396. package/src/shared/components/boundary/portal/components/host.tsx +20 -5
  397. package/src/shared/components/boundary/portal/components/portal-boundary-host.tsx +112 -46
  398. package/src/shared/components/boundary/portal/components/portal.tsx +263 -134
  399. package/src/shared/components/boundary/portal/hooks/use-host-measurement.ts +23 -2
  400. package/src/shared/components/boundary/portal/hooks/use-placeholder-styles.ts +55 -0
  401. package/src/shared/components/boundary/portal/stores/host-registry.store.ts +4 -51
  402. package/src/shared/components/boundary/portal/stores/portal-boundary-host.store.ts +59 -6
  403. package/src/shared/components/boundary/portal/teleport.ts +28 -3
  404. package/src/shared/components/boundary/portal/utils/has-local-slot.ts +16 -0
  405. package/src/shared/components/boundary/portal/utils/naming.ts +11 -1
  406. package/src/shared/components/boundary/portal/utils/offset-style.ts +42 -137
  407. package/src/shared/components/boundary/portal/utils/ownership.ts +371 -0
  408. package/src/shared/components/boundary/portal/utils/resolve-portal.ts +50 -0
  409. package/src/shared/components/boundary/portal/utils/shallow-equal.ts +25 -0
  410. package/src/shared/components/boundary/portal/utils/teleport-control.ts +12 -0
  411. package/src/shared/components/boundary/portal/utils/visible-host.ts +24 -0
  412. package/src/shared/components/boundary/providers/boundary-root.provider.tsx +9 -18
  413. package/src/shared/components/boundary/types.ts +9 -39
  414. package/src/shared/components/boundary/utils/destination-signals.ts +1 -32
  415. package/src/shared/components/boundary/utils/refresh-signals.ts +0 -41
  416. package/src/shared/components/boundary/utils/source-signals.ts +5 -17
  417. package/src/shared/components/masked-view.tsx +4 -0
  418. package/src/shared/components/screen-container/layers/backdrop.tsx +31 -10
  419. package/src/shared/components/screen-container/layers/content.tsx +61 -22
  420. package/src/shared/components/screen-container/layers/render-component.ts +9 -0
  421. package/src/shared/components/screen-container/layers/surface-container.tsx +5 -4
  422. package/src/shared/index.ts +9 -5
  423. package/src/shared/providers/helpers/measured-bounds-writes.ts +6 -11
  424. package/src/shared/providers/register-bounds.provider.tsx +5 -0
  425. package/src/shared/providers/screen/animation/helpers/derivations.ts +3 -0
  426. package/src/shared/providers/screen/animation/helpers/pipeline.ts +1 -0
  427. package/src/shared/providers/screen/styles/helpers/compose-slot-style.ts +129 -0
  428. package/src/shared/providers/screen/styles/helpers/normalize-slots.ts +45 -8
  429. package/src/shared/providers/screen/styles/helpers/resolve-slot-styles/index.ts +14 -2
  430. package/src/shared/providers/screen/styles/helpers/resolve-slot-styles/materialize-slot.ts +3 -0
  431. package/src/shared/providers/screen/styles/hooks/slot-resolvers.tsx +111 -0
  432. package/src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +21 -3
  433. package/src/shared/providers/screen/styles/index.tsx +8 -3
  434. package/src/shared/providers/screen/styles/slot.provider.tsx +36 -54
  435. package/src/shared/providers/screen/styles/stores/slot-references.store.ts +71 -0
  436. package/src/shared/stores/bounds/helpers/link-pairs.helpers.ts +24 -1
  437. package/src/shared/stores/bounds/internals/entries.ts +13 -5
  438. package/src/shared/stores/bounds/internals/links.ts +167 -85
  439. package/src/shared/stores/bounds/internals/resolver.ts +0 -2
  440. package/src/shared/stores/bounds/types.ts +10 -22
  441. package/src/shared/stores/system.store.ts +6 -0
  442. package/src/shared/types/animation.types.ts +8 -1
  443. package/src/shared/types/index.ts +5 -0
  444. package/src/shared/types/screen.types.ts +111 -4
  445. package/src/shared/utils/bounds/helpers/styles/compute.ts +22 -124
  446. package/src/shared/utils/bounds/helpers/styles/local-transform.ts +86 -0
  447. package/src/shared/utils/bounds/types/options.ts +2 -0
  448. package/lib/commonjs/shared/components/boundary/hooks/use-boundary-presence.js.map +0 -1
  449. package/lib/commonjs/shared/components/boundary/hooks/use-initial-destination-measurement.js.map +0 -1
  450. package/lib/commonjs/shared/components/boundary/hooks/use-initial-source-measurement.js.map +0 -1
  451. package/lib/commonjs/shared/components/boundary/hooks/use-refresh-boundary.js.map +0 -1
  452. package/lib/commonjs/shared/components/boundary/portal/resolve-portal.js +0 -36
  453. package/lib/commonjs/shared/components/boundary/portal/resolve-portal.js.map +0 -1
  454. package/lib/commonjs/shared/components/boundary/portal/utils/attachment.js +0 -40
  455. package/lib/commonjs/shared/components/boundary/portal/utils/attachment.js.map +0 -1
  456. package/lib/module/shared/components/boundary/hooks/use-boundary-presence.js.map +0 -1
  457. package/lib/module/shared/components/boundary/hooks/use-initial-destination-measurement.js.map +0 -1
  458. package/lib/module/shared/components/boundary/hooks/use-initial-source-measurement.js.map +0 -1
  459. package/lib/module/shared/components/boundary/hooks/use-refresh-boundary.js.map +0 -1
  460. package/lib/module/shared/components/boundary/portal/resolve-portal.js +0 -31
  461. package/lib/module/shared/components/boundary/portal/resolve-portal.js.map +0 -1
  462. package/lib/module/shared/components/boundary/portal/utils/attachment.js +0 -35
  463. package/lib/module/shared/components/boundary/portal/utils/attachment.js.map +0 -1
  464. package/lib/typescript/shared/components/boundary/hooks/use-boundary-presence.d.ts +0 -9
  465. package/lib/typescript/shared/components/boundary/hooks/use-boundary-presence.d.ts.map +0 -1
  466. package/lib/typescript/shared/components/boundary/hooks/use-initial-destination-measurement.d.ts.map +0 -1
  467. package/lib/typescript/shared/components/boundary/hooks/use-initial-source-measurement.d.ts +0 -9
  468. package/lib/typescript/shared/components/boundary/hooks/use-initial-source-measurement.d.ts.map +0 -1
  469. package/lib/typescript/shared/components/boundary/hooks/use-refresh-boundary.d.ts.map +0 -1
  470. package/lib/typescript/shared/components/boundary/portal/resolve-portal.d.ts +0 -14
  471. package/lib/typescript/shared/components/boundary/portal/resolve-portal.d.ts.map +0 -1
  472. package/lib/typescript/shared/components/boundary/portal/utils/attachment.d.ts +0 -21
  473. package/lib/typescript/shared/components/boundary/portal/utils/attachment.d.ts.map +0 -1
  474. package/src/shared/components/boundary/portal/resolve-portal.ts +0 -40
  475. package/src/shared/components/boundary/portal/utils/attachment.ts +0 -48
@@ -1,26 +1,23 @@
1
1
  import type { MeasuredDimensions, StyleProps } from "react-native-reanimated";
2
2
  import {
3
3
  createGroupTag,
4
- createPendingPairKey,
5
4
  ensurePairGroups,
6
5
  ensurePairLinks,
6
+ ensurePairSourceRequests,
7
7
  getGroupKeyFromTag,
8
8
  getLinkKeyFromTag,
9
9
  getActiveGroupId as getPairActiveGroupId,
10
10
  getDestination as getPairDestination,
11
11
  getLink as getPairLink,
12
12
  getSource as getPairSource,
13
- getSourceScreenKeyFromPairKey,
14
- removePairLink,
15
13
  } from "../helpers/link-pairs.helpers";
16
14
  import type {
17
- BoundsPortalAttachTarget,
15
+ BoundaryRuntimeFlags,
18
16
  GroupKey,
19
17
  LinkKey,
20
18
  LinkPairsState,
21
19
  ScreenKey,
22
20
  ScreenPairKey,
23
- SourceHostRef,
24
21
  SourceTagLinkSide,
25
22
  TagID,
26
23
  TagLink,
@@ -36,16 +33,151 @@ const syncLinkStatus = (link: TagLink) => {
36
33
  : "source-incomplete";
37
34
  };
38
35
 
36
+ type SharedValueLike = {
37
+ _isReanimatedSharedValue: true;
38
+ get?: () => unknown;
39
+ value?: unknown;
40
+ };
41
+
42
+ const isSharedValueLike = (value: unknown): value is SharedValueLike => {
43
+ "worklet";
44
+ return (
45
+ (value as Partial<SharedValueLike> | null)?._isReanimatedSharedValue ===
46
+ true
47
+ );
48
+ };
49
+
50
+ const snapshotSharedValue = (value: SharedValueLike): unknown => {
51
+ "worklet";
52
+ return value.value;
53
+ };
54
+
55
+ const snapshotTransformArrayValue = (
56
+ value: unknown[],
57
+ ): unknown[] | undefined => {
58
+ "worklet";
59
+ const snapshot: unknown[] = [];
60
+
61
+ for (let index = 0; index < value.length; index++) {
62
+ const snapshotValue = snapshotTransformEntryValue(value[index]);
63
+ if (snapshotValue !== undefined) {
64
+ snapshot.push(snapshotValue);
65
+ }
66
+ }
67
+
68
+ return snapshot;
69
+ };
70
+
71
+ const snapshotTransformEntryValue = (value: unknown): unknown => {
72
+ "worklet";
73
+ if (isSharedValueLike(value)) {
74
+ return snapshotSharedValue(value);
75
+ }
76
+
77
+ if (Array.isArray(value)) {
78
+ return snapshotTransformArrayValue(value);
79
+ }
80
+
81
+ if (typeof value === "function") {
82
+ return undefined;
83
+ }
84
+
85
+ return value === null || typeof value !== "object" ? value : undefined;
86
+ };
87
+
88
+ const snapshotTransformItem = (value: unknown): unknown => {
89
+ "worklet";
90
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
91
+ return snapshotTransformEntryValue(value);
92
+ }
93
+
94
+ const snapshot: Record<string, unknown> = {};
95
+ const source = value as Record<string, unknown>;
96
+ let hasValue = false;
97
+
98
+ for (const key in source) {
99
+ const snapshotValue = snapshotTransformEntryValue(source[key]);
100
+ if (snapshotValue !== undefined) {
101
+ snapshot[key] = snapshotValue;
102
+ hasValue = true;
103
+ }
104
+ }
105
+
106
+ return hasValue ? snapshot : undefined;
107
+ };
108
+
109
+ const snapshotTransform = (value: unknown): unknown => {
110
+ "worklet";
111
+ if (!Array.isArray(value)) {
112
+ return undefined;
113
+ }
114
+
115
+ const snapshot: unknown[] = [];
116
+
117
+ for (let index = 0; index < value.length; index++) {
118
+ const snapshotValue = snapshotTransformItem(value[index]);
119
+ if (snapshotValue !== undefined) {
120
+ snapshot.push(snapshotValue);
121
+ }
122
+ }
123
+
124
+ return snapshot;
125
+ };
126
+
127
+ /**
128
+ * Link styles are measurement metadata, not a general style serializer.
129
+ * Snapshot only the fields bounds currently consume: primitives, top-level
130
+ * shared values, and transform entries. Object-valued non-transform styles are
131
+ * intentionally omitted to avoid retaining opaque/native style objects.
132
+ */
133
+ const snapshotStyles = (styles: StyleProps): StyleProps => {
134
+ "worklet";
135
+ if (!styles || typeof styles !== "object" || Array.isArray(styles)) {
136
+ return {};
137
+ }
138
+
139
+ const snapshot: Record<string, unknown> = {};
140
+ const source = styles as Record<string, unknown>;
141
+
142
+ for (const key in source) {
143
+ const value = source[key];
144
+
145
+ if (key === "transform") {
146
+ const transform = snapshotTransform(value);
147
+
148
+ if (transform !== undefined) {
149
+ snapshot.transform = transform;
150
+ }
151
+
152
+ continue;
153
+ }
154
+
155
+ if (isSharedValueLike(value)) {
156
+ snapshot[key] = snapshotSharedValue(value);
157
+ continue;
158
+ }
159
+
160
+ if (value === null || typeof value !== "object") {
161
+ snapshot[key] = value;
162
+ }
163
+ }
164
+
165
+ return snapshot as StyleProps;
166
+ };
167
+
39
168
  const createLinkSide = (
40
169
  screenKey: ScreenKey,
41
170
  bounds: MeasuredDimensions,
42
171
  styles: StyleProps,
172
+ runtimeFlags: BoundaryRuntimeFlags = {},
43
173
  ) => {
44
174
  "worklet";
45
175
  return {
46
176
  screenKey,
47
177
  bounds,
48
- styles,
178
+ styles: snapshotStyles(styles),
179
+ handoff: runtimeFlags.handoff ? true : undefined,
180
+ escapeClipping: runtimeFlags.escapeClipping ? true : undefined,
49
181
  };
50
182
  };
51
183
 
@@ -100,7 +232,9 @@ const writeDestination = (
100
232
 
101
233
  link.group = group ?? link.group;
102
234
  link.destination = destination;
103
- link.initialDestination ??= destination;
235
+ if (!link.initialDestination) {
236
+ link.initialDestination = destination;
237
+ }
104
238
  syncLinkStatus(link);
105
239
 
106
240
  writePairLink(state, pairKey, linkKey, link);
@@ -110,41 +244,6 @@ const writeDestination = (
110
244
  }
111
245
  };
112
246
 
113
- const promotePendingSource = (
114
- state: LinkPairsState,
115
- pairKey: ScreenPairKey,
116
- linkKey: LinkKey,
117
- ) => {
118
- "worklet";
119
- if (getPairLink(state, pairKey, linkKey)) return;
120
-
121
- const sourceScreenKey = getSourceScreenKeyFromPairKey(pairKey);
122
- const pendingPairKey = createPendingPairKey(sourceScreenKey);
123
- if (pendingPairKey === pairKey) return;
124
-
125
- const pendingLink = getPairLink(state, pendingPairKey, linkKey);
126
- if (!pendingLink) return;
127
-
128
- writePairLink(state, pairKey, linkKey, pendingLink);
129
-
130
- if (pendingLink.group) {
131
- const pendingGroupState =
132
- state[pendingPairKey]?.groups?.[pendingLink.group];
133
-
134
- if (pendingGroupState) {
135
- writeGroup(
136
- state,
137
- pairKey,
138
- pendingLink.group,
139
- pendingGroupState.activeId,
140
- pendingGroupState.initialId,
141
- );
142
- }
143
- }
144
-
145
- removePairLink(state, pendingPairKey, linkKey);
146
- };
147
-
148
247
  function setSource(
149
248
  pairKey: ScreenPairKey,
150
249
  tag: TagID,
@@ -152,8 +251,7 @@ function setSource(
152
251
  bounds: MeasuredDimensions,
153
252
  styles: StyleProps = {},
154
253
  group?: GroupKey,
155
- portalAttachTarget?: BoundsPortalAttachTarget,
156
- sourceHost?: SourceHostRef,
254
+ runtimeFlags: BoundaryRuntimeFlags = {},
157
255
  ) {
158
256
  "worklet";
159
257
  pairs.modify(<T extends LinkPairsState>(state: T): T => {
@@ -164,13 +262,8 @@ function setSource(
164
262
 
165
263
  const existingLink = pairLinks[linkKey];
166
264
 
167
- // Refresh paths may re-measure the source without portal context;
168
- // keep the previously recorded host in that case.
169
265
  const source: SourceTagLinkSide = {
170
- ...createLinkSide(screenKey, bounds, styles),
171
- portalAttachTarget:
172
- portalAttachTarget ?? existingLink?.source?.portalAttachTarget,
173
- sourceHost: sourceHost ?? existingLink?.source?.sourceHost,
266
+ ...createLinkSide(screenKey, bounds, styles, runtimeFlags),
174
267
  };
175
268
  const link =
176
269
  existingLink ??
@@ -184,15 +277,13 @@ function setSource(
184
277
 
185
278
  link.group = group ?? link.group;
186
279
  link.source = source;
187
- link.initialSource ??= source;
280
+ if (!link.initialSource) {
281
+ link.initialSource = source;
282
+ }
188
283
  syncLinkStatus(link);
189
284
 
190
285
  pairLinks[linkKey] = link;
191
-
192
- const pendingPairKey = createPendingPairKey(screenKey);
193
- if (pendingPairKey !== pairKey) {
194
- removePairLink(state, pendingPairKey, linkKey);
195
- }
286
+ delete state[pairKey]?.sourceRequests?.[linkKey];
196
287
 
197
288
  return state;
198
289
  });
@@ -210,7 +301,6 @@ function setDestination(
210
301
  pairs.modify(<T extends LinkPairsState>(state: T): T => {
211
302
  "worklet";
212
303
  const linkKey = getLinkKeyFromTag(tag);
213
- promotePendingSource(state, pairKey, linkKey);
214
304
  writeDestination(state, pairKey, linkKey, screenKey, bounds, styles, group);
215
305
 
216
306
  return state;
@@ -226,6 +316,23 @@ function setActiveGroupId(pairKey: ScreenPairKey, group: GroupKey, tag: TagID) {
226
316
  });
227
317
  }
228
318
 
319
+ function requestSourceMeasure(pairKey: ScreenPairKey, tag: TagID) {
320
+ "worklet";
321
+ pairs.modify(<T extends LinkPairsState>(state: T): T => {
322
+ "worklet";
323
+ const linkKey = getLinkKeyFromTag(tag);
324
+ const link = getPairLink(state, pairKey, linkKey);
325
+
326
+ if (link?.source || state[pairKey]?.sourceRequests?.[linkKey]) {
327
+ return state;
328
+ }
329
+
330
+ ensurePairSourceRequests(state, pairKey)[linkKey] = true;
331
+
332
+ return state;
333
+ });
334
+ }
335
+
229
336
  function getActiveGroupId(
230
337
  pairKey: ScreenPairKey,
231
338
  group: GroupKey,
@@ -246,20 +353,6 @@ const hasSourceLink = (
246
353
  return !!link?.source;
247
354
  };
248
355
 
249
- const getPendingSourceLink = (
250
- state: LinkPairsState,
251
- pairKey: ScreenPairKey,
252
- linkKey: LinkKey,
253
- ): TagLink | null => {
254
- "worklet";
255
- const sourceScreenKey = getSourceScreenKeyFromPairKey(pairKey);
256
- const pendingPairKey = createPendingPairKey(sourceScreenKey);
257
-
258
- if (pendingPairKey === pairKey) return null;
259
-
260
- return getPairLink(state, pendingPairKey, linkKey);
261
- };
262
-
263
356
  function getResolvedLink(
264
357
  pairKey: ScreenPairKey,
265
358
  tag: TagID,
@@ -268,17 +361,7 @@ function getResolvedLink(
268
361
  const state = pairs.get();
269
362
  const linkKey = getLinkKeyFromTag(tag);
270
363
  const group = getGroupKeyFromTag(tag);
271
- const requestedLink = getPairLink(state, pairKey, linkKey);
272
-
273
- // Press-triggered zoom captures the source before navigation under a pending
274
- // source<> pair. If the destination screen has no Boundary.View, nothing
275
- // promotes that source into source<>destination, but zoom can still animate to
276
- // its default top target from the pending source bounds.
277
- const fallbackPendingLink = requestedLink
278
- ? null
279
- : getPendingSourceLink(state, pairKey, linkKey);
280
-
281
- const link = requestedLink ?? fallbackPendingLink;
364
+ const link = getPairLink(state, pairKey, linkKey);
282
365
 
283
366
  // Group active ids can update before the new member has a full source/destination
284
367
  // link. As soon as the requested member has source bounds, prefer it; only
@@ -292,9 +375,7 @@ function getResolvedLink(
292
375
 
293
376
  const initialId = state[pairKey]?.groups?.[group]?.initialId;
294
377
  if (initialId) {
295
- const initialLink =
296
- getPairLink(state, pairKey, initialId) ??
297
- getPendingSourceLink(state, pairKey, initialId);
378
+ const initialLink = getPairLink(state, pairKey, initialId);
298
379
 
299
380
  if (hasSourceLink(initialLink)) {
300
381
  return {
@@ -332,6 +413,7 @@ export {
332
413
  getLink,
333
414
  getResolvedLink,
334
415
  getSource,
416
+ requestSourceMeasure,
335
417
  setActiveGroupId,
336
418
  setDestination,
337
419
  setSource,
@@ -39,8 +39,6 @@ function resolveTransitionPair(
39
39
  destinationStyles: matchedLink?.destination?.styles ?? null,
40
40
  sourceScreenKey: matchedLink?.source?.screenKey ?? null,
41
41
  destinationScreenKey: matchedLink?.destination?.screenKey ?? null,
42
- sourcePortalAttachTarget: matchedLink?.source?.portalAttachTarget,
43
- sourceHost: matchedLink?.source?.sourceHost,
44
42
  };
45
43
  }
46
44
 
@@ -24,9 +24,13 @@ export interface BoundTag {
24
24
  linkKey: LinkKey;
25
25
  group?: GroupKey;
26
26
  }
27
- export type BoundsPortalAttachTarget = "current-screen" | "matched-screen";
28
27
  export type { ScreenKey } from "../../types/screen.types";
29
28
 
29
+ export type BoundaryRuntimeFlags = {
30
+ handoff?: boolean;
31
+ escapeClipping?: boolean;
32
+ };
33
+
30
34
  type BoundaryConfig = {
31
35
  anchor?: BoundsAnchor;
32
36
  scaleMode?: BoundsScaleMode;
@@ -38,7 +42,7 @@ export type Entry = {
38
42
  bounds: MeasuredDimensions | null;
39
43
  styles: StyleProps;
40
44
  boundaryConfig?: BoundaryConfig;
41
- };
45
+ } & BoundaryRuntimeFlags;
42
46
 
43
47
  export type MeasuredEntry = Entry & {
44
48
  bounds: MeasuredDimensions;
@@ -48,6 +52,8 @@ export type EntryPatch = {
48
52
  bounds?: MeasuredDimensions | null;
49
53
  styles?: StyleProps | null;
50
54
  boundaryConfig?: BoundaryConfig | null;
55
+ handoff?: boolean | null;
56
+ escapeClipping?: boolean | null;
51
57
  };
52
58
 
53
59
  export type ScreenIdentifier = {
@@ -60,24 +66,7 @@ export type BoundsLinkStatus =
60
66
  | "complete";
61
67
 
62
68
  export type TagLinkSide = ScreenIdentifier & MeasuredEntry;
63
-
64
- /**
65
- * The source screen's active portal host at measure time. Recorded only when
66
- * that host captures scroll (a Transition.ScrollView scope) — matched-screen
67
- * placement uses it as a coordinate space to express the source rect in the
68
- * source ScrollView's live frame. The portal never attaches here.
69
- */
70
- export type SourceHostRef = {
71
- hostKey: string;
72
- capturesScroll: boolean;
73
- };
74
-
75
- export type SourceTagLinkSide = TagLinkSide & {
76
- /** Where this boundary's portal content renders during the transition. */
77
- portalAttachTarget?: BoundsPortalAttachTarget;
78
- /** Scroll-scoped host the source originated from, if any. */
79
- sourceHost?: SourceHostRef;
80
- };
69
+ export type SourceTagLinkSide = TagLinkSide;
81
70
 
82
71
  type TagLinkBase = {
83
72
  group?: GroupKey;
@@ -128,8 +117,6 @@ export type ResolvedTransitionPair = {
128
117
  destinationStyles: StyleProps | null;
129
118
  sourceScreenKey: ScreenKey | null;
130
119
  destinationScreenKey: ScreenKey | null;
131
- sourcePortalAttachTarget?: BoundsPortalAttachTarget;
132
- sourceHost?: SourceHostRef;
133
120
  };
134
121
 
135
122
  export type LinkGroupState = {
@@ -140,6 +127,7 @@ export type LinkGroupState = {
140
127
  export type LinkPairState = {
141
128
  links: Record<LinkKey, TagLink>;
142
129
  groups: Record<GroupKey, LinkGroupState>;
130
+ sourceRequests?: Record<LinkKey, true>;
143
131
  };
144
132
 
145
133
  export type LinkPairsState = Record<ScreenPairKey, LinkPairState>;
@@ -51,6 +51,7 @@ export interface SystemStoreActions {
51
51
  clearLifecycleTransitionRequest(): void;
52
52
  blockLifecycleStart(): void;
53
53
  unblockLifecycleStart(): void;
54
+ drainLifecycleStartBlocks(): void;
54
55
  }
55
56
 
56
57
  export type SystemStoreMap = SystemStoreState & {
@@ -108,5 +109,10 @@ export const SystemStore = createStore<SystemStoreState, SystemStoreActions>({
108
109
  Math.max(0, bag.pendingLifecycleStartBlockCount.get() - 1),
109
110
  );
110
111
  },
112
+
113
+ drainLifecycleStartBlocks() {
114
+ "worklet";
115
+ bag.pendingLifecycleStartBlockCount.set(0);
116
+ },
111
117
  }),
112
118
  });
@@ -1,5 +1,5 @@
1
1
  import type { TextStyle, ViewStyle } from "react-native";
2
- import type { StyleProps } from "react-native-reanimated";
2
+ import type { StyleProps, TransformArrayItem } from "react-native-reanimated";
3
3
  import type { EdgeInsets } from "react-native-safe-area-context";
4
4
  import {
5
5
  NAVIGATION_MASK_CONTAINER_STYLE_ID,
@@ -223,6 +223,12 @@ export interface ScreenInterpolationProps {
223
223
  */
224
224
  progress: number;
225
225
 
226
+ /**
227
+ * Combined transition progress of current and next screens, without live
228
+ * gesture contribution.
229
+ */
230
+ transitionProgress: number;
231
+
226
232
  /**
227
233
  * Accumulated progress from the current screen's position onwards in the stack.
228
234
  * Unlike `progress` (0-2), this ranges from 0-N where N is the number of screens
@@ -346,6 +352,7 @@ export type TransitionInterpolatorOptions = Omit<
346
352
  export type NormalizedTransitionSlotStyle = {
347
353
  style?: StyleProps;
348
354
  props?: TransitionSlotProps;
355
+ boundsLocalTransform?: TransformArrayItem[];
349
356
  };
350
357
 
351
358
  /**
@@ -54,7 +54,12 @@ export type {
54
54
  GestureTracking,
55
55
  InactiveBehavior,
56
56
  Layout,
57
+ ScreenBackdropComponent,
58
+ ScreenBackdropComponentProps,
59
+ ScreenContentComponent,
60
+ ScreenContentComponentProps,
57
61
  ScreenKey,
62
+ ScreenLayerComponentProps,
58
63
  ScreenTransitionConfig,
59
64
  TransitionAwareProps,
60
65
  } from "./screen.types";
@@ -1,3 +1,5 @@
1
+ import type { ComponentType, ReactNode } from "react";
2
+ import type { ViewProps } from "react-native";
1
3
  import type { AnimatedProps } from "react-native-reanimated";
2
4
  import type {
3
5
  ScreenStyleInterpolator,
@@ -51,6 +53,71 @@ export type SnapPoint = number | "auto";
51
53
 
52
54
  export type BackdropBehavior = "block" | "passthrough" | "dismiss" | "collapse";
53
55
 
56
+ /**
57
+ * Props passed to custom screen layer component renderers such as
58
+ * {@linkcode ScreenTransitionConfig.backdropComponent}.
59
+ */
60
+ export type ScreenLayerComponentProps = {
61
+ /**
62
+ * Animated styles for the target layer, including the library-owned base
63
+ * layout style for that layer.
64
+ */
65
+ styles: AnimatedProps<ViewProps>["style"];
66
+
67
+ /**
68
+ * Animated props resolved from the matching `screenStyleInterpolator` slot.
69
+ */
70
+ props: AnimatedProps<Record<string, unknown>>["animatedProps"];
71
+
72
+ /**
73
+ * Pointer-event behavior resolved for the current layer state.
74
+ */
75
+ pointerEvents: ViewProps["pointerEvents"];
76
+ };
77
+
78
+ /**
79
+ * Props passed to {@linkcode ScreenTransitionConfig.backdropComponent} when it
80
+ * is provided as a render-style component.
81
+ */
82
+ export type ScreenBackdropComponentProps = ScreenLayerComponentProps;
83
+
84
+ /**
85
+ * Props passed to {@linkcode ScreenTransitionConfig.contentComponent} when it
86
+ * is provided as a render-style component.
87
+ */
88
+ export type ScreenContentComponentProps = ScreenLayerComponentProps & {
89
+ /**
90
+ * The screen subtree rendered inside the content layer.
91
+ */
92
+ children: ReactNode;
93
+ };
94
+
95
+ /**
96
+ * Custom renderer for the backdrop layer.
97
+ *
98
+ * Component types such as `BlurView` are still accepted for compatibility.
99
+ * Function components can also receive {@linkcode ScreenBackdropComponentProps}
100
+ * to render the animated styles and props manually.
101
+ *
102
+ * @see {@linkcode ScreenTransitionConfig.backdropComponent}
103
+ */
104
+ export type ScreenBackdropComponent =
105
+ | ComponentType<any>
106
+ | ComponentType<ScreenBackdropComponentProps>;
107
+
108
+ /**
109
+ * Custom renderer for the screen content layer.
110
+ *
111
+ * Component types such as a custom native view are accepted directly. Function
112
+ * components can also receive {@linkcode ScreenContentComponentProps} to render
113
+ * the animated styles, props, pointer-events, and children manually.
114
+ *
115
+ * @see {@linkcode ScreenTransitionConfig.contentComponent}
116
+ */
117
+ export type ScreenContentComponent =
118
+ | ComponentType<any>
119
+ | ComponentType<ScreenContentComponentProps>;
120
+
54
121
  /**
55
122
  * Controls how an inactive screen is retained after it is no longer active.
56
123
  *
@@ -117,6 +184,8 @@ export type TransitionAwareProps<T extends object> = AnimatedProps<T> & {
117
184
  * <Transition.View sharedBoundTag="profile-avatar">
118
185
  * <Avatar size="large" />
119
186
  * </Transition.View>
187
+ *
188
+ * @deprecated Use `Transition.Boundary` with `id` instead.
120
189
  */
121
190
  sharedBoundTag?: string;
122
191
 
@@ -127,6 +196,8 @@ export type TransitionAwareProps<T extends object> = AnimatedProps<T> & {
127
196
  * Useful when layout can change while unfocused (for example, programmatic
128
197
  * ScrollView/FlatList scrolling triggered from another screen).
129
198
  *
199
+ * @deprecated Legacy `sharedBoundTag` refresh option. The boundary
200
+ * measurement pipeline refreshes layout through `Transition.Boundary`.
130
201
  * @default false
131
202
  */
132
203
  remeasureOnFocus?: boolean;
@@ -209,6 +280,8 @@ export type ScreenTransitionConfig = {
209
280
  /**
210
281
  * How much velocity affects snap point targeting. Lower values make snapping
211
282
  * feel more deliberate (iOS-like), higher values make it more responsive to flicks.
283
+ *
284
+ * @deprecated Use `gestureSnapVelocityImpact` instead.
212
285
  * @default 0.1
213
286
  */
214
287
  snapVelocityImpact?: number;
@@ -400,13 +473,21 @@ export type ScreenTransitionConfig = {
400
473
  /**
401
474
  * Custom component to render as the backdrop layer (between screens).
402
475
  *
403
- * The library wraps this component with `Animated.createAnimatedComponent` internally.
404
- * Animated styles and props are driven by the `backdrop` slot in the interpolator return value.
476
+ * Direct component types are wrapped with `Animated.createAnimatedComponent`
477
+ * internally. Function components can receive `{ styles, props, pointerEvents }`
478
+ * and decide how to render the layer. Animated styles and props are driven by
479
+ * the `backdrop` slot in the interpolator return value.
405
480
  *
406
481
  * `backdropBehavior` still controls the wrapping Pressable for dismiss/collapse handling.
407
482
  *
408
483
  * @example
409
- * backdropComponent: BlurView,
484
+ * backdropComponent: ({ styles, props, pointerEvents }) => (
485
+ * <AnimatedBlurView
486
+ * style={styles}
487
+ * animatedProps={props}
488
+ * pointerEvents={pointerEvents}
489
+ * />
490
+ * ),
410
491
  * screenStyleInterpolator: ({ progress }) => {
411
492
  * "worklet";
412
493
  * return {
@@ -419,7 +500,32 @@ export type ScreenTransitionConfig = {
419
500
  *
420
501
  * @default undefined
421
502
  */
422
- backdropComponent?: React.ComponentType<any>;
503
+ backdropComponent?: ScreenBackdropComponent;
504
+
505
+ /**
506
+ * Custom component to render as the screen's content layer.
507
+ *
508
+ * The component receives the `content` slot's animated styles and props. A
509
+ * direct component type is wrapped with `Animated.createAnimatedComponent`;
510
+ * a function component can receive `{ styles, props, pointerEvents, children }`
511
+ * and decide how to render the layer.
512
+ *
513
+ * `contentComponent` replaces `surfaceComponent` for custom screen shells.
514
+ *
515
+ * @example
516
+ * contentComponent: ({ styles, props, pointerEvents, children }) => (
517
+ * <AnimatedSquircleView
518
+ * style={styles}
519
+ * animatedProps={props}
520
+ * pointerEvents={pointerEvents}
521
+ * >
522
+ * {children}
523
+ * </AnimatedSquircleView>
524
+ * )
525
+ *
526
+ * @default undefined
527
+ */
528
+ contentComponent?: ScreenContentComponent;
423
529
 
424
530
  /**
425
531
  * Custom component to render as the screen's surface layer.
@@ -443,6 +549,7 @@ export type ScreenTransitionConfig = {
443
549
  * }
444
550
  *
445
551
  * @default undefined
552
+ * @deprecated Use `contentComponent` instead.
446
553
  */
447
554
  surfaceComponent?: React.ComponentType<any>;
448
555
  };