@userflow-tech/react-native 0.4.5 → 0.5.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 (417) hide show
  1. package/README.md +7 -2
  2. package/docs/anchoring.md +6 -1
  3. package/docs/troubleshooting.md +26 -0
  4. package/lib/commonjs/anchors/AutoAnchorRegistry.js +144 -34
  5. package/lib/commonjs/anchors/AutoAnchorRegistry.js.map +1 -1
  6. package/lib/commonjs/anchors/animationFrame.js +29 -1
  7. package/lib/commonjs/anchors/animationFrame.js.map +1 -1
  8. package/lib/commonjs/anchors/appActive.js +61 -0
  9. package/lib/commonjs/anchors/appActive.js.map +1 -0
  10. package/lib/commonjs/anchors/elementConditionEvaluator.js +25 -8
  11. package/lib/commonjs/anchors/elementConditionEvaluator.js.map +1 -1
  12. package/lib/commonjs/anchors/elementTapMonitor.js +67 -12
  13. package/lib/commonjs/anchors/elementTapMonitor.js.map +1 -1
  14. package/lib/commonjs/anchors/elementTargetMatch.js +33 -7
  15. package/lib/commonjs/anchors/elementTargetMatch.js.map +1 -1
  16. package/lib/commonjs/anchors/fiber/fiberInternals.js +66 -0
  17. package/lib/commonjs/anchors/fiber/fiberInternals.js.map +1 -1
  18. package/lib/commonjs/anchors/fiber/indexHostFibers.js +4 -3
  19. package/lib/commonjs/anchors/fiber/indexHostFibers.js.map +1 -1
  20. package/lib/commonjs/anchors/fiber/resolveFiberPath.js +30 -15
  21. package/lib/commonjs/anchors/fiber/resolveFiberPath.js.map +1 -1
  22. package/lib/commonjs/anchors/fiberAnchorCache.js +20 -0
  23. package/lib/commonjs/anchors/fiberAnchorCache.js.map +1 -1
  24. package/lib/commonjs/anchors/gestureHandlerHandoff.js +304 -0
  25. package/lib/commonjs/anchors/gestureHandlerHandoff.js.map +1 -0
  26. package/lib/commonjs/anchors/resolveAnchorHost.js +6 -0
  27. package/lib/commonjs/anchors/resolveAnchorHost.js.map +1 -1
  28. package/lib/commonjs/anchors/resolveAutoAnchorHost.js +11 -6
  29. package/lib/commonjs/anchors/resolveAutoAnchorHost.js.map +1 -1
  30. package/lib/commonjs/anchors/resolveElementTargets.js +63 -8
  31. package/lib/commonjs/anchors/resolveElementTargets.js.map +1 -1
  32. package/lib/commonjs/anchors/semanticMatcher.js +43 -21
  33. package/lib/commonjs/anchors/semanticMatcher.js.map +1 -1
  34. package/lib/commonjs/anchors/tapSlop.js +16 -0
  35. package/lib/commonjs/anchors/tapSlop.js.map +1 -0
  36. package/lib/commonjs/anchors/targetPressMonitor.js +66 -12
  37. package/lib/commonjs/anchors/targetPressMonitor.js.map +1 -1
  38. package/lib/commonjs/authoring/fingerprintFromInstance.js +5 -9
  39. package/lib/commonjs/authoring/fingerprintFromInstance.js.map +1 -1
  40. package/lib/commonjs/content/RichContentRenderer.js +3 -3
  41. package/lib/commonjs/content/RichContentRenderer.js.map +1 -1
  42. package/lib/commonjs/content/openSafeUrl.js +3 -1
  43. package/lib/commonjs/content/openSafeUrl.js.map +1 -1
  44. package/lib/commonjs/expo-router/useUserflowExpoRouter.js +6 -0
  45. package/lib/commonjs/expo-router/useUserflowExpoRouter.js.map +1 -1
  46. package/lib/commonjs/index.js +19 -5
  47. package/lib/commonjs/index.js.map +1 -1
  48. package/lib/commonjs/navigation/navigateUrlUtils.js +105 -0
  49. package/lib/commonjs/navigation/navigateUrlUtils.js.map +1 -0
  50. package/lib/commonjs/navigation/openExternalNavigateUrl.js +14 -0
  51. package/lib/commonjs/navigation/openExternalNavigateUrl.js.map +1 -0
  52. package/lib/commonjs/navigation/openFlowNavigateUrl.js +47 -41
  53. package/lib/commonjs/navigation/openFlowNavigateUrl.js.map +1 -1
  54. package/lib/commonjs/pairing/PairingController.js +3 -1
  55. package/lib/commonjs/pairing/PairingController.js.map +1 -1
  56. package/lib/commonjs/runtime/BannerHost.js +38 -29
  57. package/lib/commonjs/runtime/BannerHost.js.map +1 -1
  58. package/lib/commonjs/runtime/TargetPressBridge.js +55 -7
  59. package/lib/commonjs/runtime/TargetPressBridge.js.map +1 -1
  60. package/lib/commonjs/runtime/UserflowOverlay.js +5 -11
  61. package/lib/commonjs/runtime/UserflowOverlay.js.map +1 -1
  62. package/lib/commonjs/runtime/UserflowProvider.js +66 -40
  63. package/lib/commonjs/runtime/UserflowProvider.js.map +1 -1
  64. package/lib/commonjs/runtime/bannerEngine.js +8 -2
  65. package/lib/commonjs/runtime/bannerEngine.js.map +1 -1
  66. package/lib/commonjs/runtime/bannerFlowSpacer.js +71 -0
  67. package/lib/commonjs/runtime/bannerFlowSpacer.js.map +1 -0
  68. package/lib/commonjs/runtime/flowEngine.js +11 -0
  69. package/lib/commonjs/runtime/flowEngine.js.map +1 -1
  70. package/lib/commonjs/runtime/previewStart.js +39 -0
  71. package/lib/commonjs/runtime/previewStart.js.map +1 -0
  72. package/lib/commonjs/runtime/pushBannerLayoutContext.js +98 -0
  73. package/lib/commonjs/runtime/pushBannerLayoutContext.js.map +1 -0
  74. package/lib/commonjs/screenTracker.js +12 -0
  75. package/lib/commonjs/screenTracker.js.map +1 -1
  76. package/lib/commonjs/surfaces/BannerBar.js +79 -61
  77. package/lib/commonjs/surfaces/BannerBar.js.map +1 -1
  78. package/lib/commonjs/surfaces/BannerSurface.js +26 -0
  79. package/lib/commonjs/surfaces/BannerSurface.js.map +1 -1
  80. package/lib/commonjs/surfaces/TooltipSurface.js +43 -41
  81. package/lib/commonjs/surfaces/TooltipSurface.js.map +1 -1
  82. package/lib/commonjs/surfaces/bannerBarLayout.js +77 -10
  83. package/lib/commonjs/surfaces/bannerBarLayout.js.map +1 -1
  84. package/lib/commonjs/surfaces/bannerWebView/BannerWebViewBar.js +112 -63
  85. package/lib/commonjs/surfaces/bannerWebView/BannerWebViewBar.js.map +1 -1
  86. package/lib/commonjs/surfaces/bannerWebView/buildCustomBannerHtml.js +59 -11
  87. package/lib/commonjs/surfaces/bannerWebView/buildCustomBannerHtml.js.map +1 -1
  88. package/lib/commonjs/surfaces/hostAccessibilityTrap.js +28 -0
  89. package/lib/commonjs/surfaces/hostAccessibilityTrap.js.map +1 -0
  90. package/lib/commonjs/surfaces/resolveBannerTheme.js +6 -3
  91. package/lib/commonjs/surfaces/resolveBannerTheme.js.map +1 -1
  92. package/lib/commonjs/surfaces/tooltip/TooltipBubble.js +3 -2
  93. package/lib/commonjs/surfaces/tooltip/TooltipBubble.js.map +1 -1
  94. package/lib/commonjs/surfaces/tooltip/targetSearchSchedule.js +134 -0
  95. package/lib/commonjs/surfaces/tooltip/targetSearchSchedule.js.map +1 -0
  96. package/lib/commonjs/version.js +1 -1
  97. package/lib/module/anchors/AutoAnchorRegistry.js +145 -35
  98. package/lib/module/anchors/AutoAnchorRegistry.js.map +1 -1
  99. package/lib/module/anchors/animationFrame.js +29 -2
  100. package/lib/module/anchors/animationFrame.js.map +1 -1
  101. package/lib/module/anchors/appActive.js +57 -0
  102. package/lib/module/anchors/appActive.js.map +1 -0
  103. package/lib/module/anchors/elementConditionEvaluator.js +26 -9
  104. package/lib/module/anchors/elementConditionEvaluator.js.map +1 -1
  105. package/lib/module/anchors/elementTapMonitor.js +67 -12
  106. package/lib/module/anchors/elementTapMonitor.js.map +1 -1
  107. package/lib/module/anchors/elementTargetMatch.js +32 -7
  108. package/lib/module/anchors/elementTargetMatch.js.map +1 -1
  109. package/lib/module/anchors/fiber/fiberInternals.js +65 -0
  110. package/lib/module/anchors/fiber/fiberInternals.js.map +1 -1
  111. package/lib/module/anchors/fiber/indexHostFibers.js +4 -3
  112. package/lib/module/anchors/fiber/indexHostFibers.js.map +1 -1
  113. package/lib/module/anchors/fiber/resolveFiberPath.js +30 -15
  114. package/lib/module/anchors/fiber/resolveFiberPath.js.map +1 -1
  115. package/lib/module/anchors/fiberAnchorCache.js +19 -0
  116. package/lib/module/anchors/fiberAnchorCache.js.map +1 -1
  117. package/lib/module/anchors/gestureHandlerHandoff.js +298 -0
  118. package/lib/module/anchors/gestureHandlerHandoff.js.map +1 -0
  119. package/lib/module/anchors/resolveAnchorHost.js +1 -0
  120. package/lib/module/anchors/resolveAnchorHost.js.map +1 -1
  121. package/lib/module/anchors/resolveAutoAnchorHost.js +11 -6
  122. package/lib/module/anchors/resolveAutoAnchorHost.js.map +1 -1
  123. package/lib/module/anchors/resolveElementTargets.js +63 -8
  124. package/lib/module/anchors/resolveElementTargets.js.map +1 -1
  125. package/lib/module/anchors/semanticMatcher.js +43 -21
  126. package/lib/module/anchors/semanticMatcher.js.map +1 -1
  127. package/lib/module/anchors/tapSlop.js +11 -0
  128. package/lib/module/anchors/tapSlop.js.map +1 -0
  129. package/lib/module/anchors/targetPressMonitor.js +53 -8
  130. package/lib/module/anchors/targetPressMonitor.js.map +1 -1
  131. package/lib/module/authoring/fingerprintFromInstance.js +6 -10
  132. package/lib/module/authoring/fingerprintFromInstance.js.map +1 -1
  133. package/lib/module/content/RichContentRenderer.js +3 -3
  134. package/lib/module/content/RichContentRenderer.js.map +1 -1
  135. package/lib/module/content/openSafeUrl.js +3 -1
  136. package/lib/module/content/openSafeUrl.js.map +1 -1
  137. package/lib/module/expo-router/useUserflowExpoRouter.js +7 -1
  138. package/lib/module/expo-router/useUserflowExpoRouter.js.map +1 -1
  139. package/lib/module/index.js +22 -7
  140. package/lib/module/index.js.map +1 -1
  141. package/lib/module/navigation/navigateUrlUtils.js +94 -0
  142. package/lib/module/navigation/navigateUrlUtils.js.map +1 -0
  143. package/lib/module/navigation/openExternalNavigateUrl.js +11 -0
  144. package/lib/module/navigation/openExternalNavigateUrl.js.map +1 -0
  145. package/lib/module/navigation/openFlowNavigateUrl.js +22 -36
  146. package/lib/module/navigation/openFlowNavigateUrl.js.map +1 -1
  147. package/lib/module/pairing/PairingController.js +3 -1
  148. package/lib/module/pairing/PairingController.js.map +1 -1
  149. package/lib/module/runtime/BannerHost.js +38 -29
  150. package/lib/module/runtime/BannerHost.js.map +1 -1
  151. package/lib/module/runtime/TargetPressBridge.js +56 -8
  152. package/lib/module/runtime/TargetPressBridge.js.map +1 -1
  153. package/lib/module/runtime/UserflowOverlay.js +5 -11
  154. package/lib/module/runtime/UserflowOverlay.js.map +1 -1
  155. package/lib/module/runtime/UserflowProvider.js +66 -40
  156. package/lib/module/runtime/UserflowProvider.js.map +1 -1
  157. package/lib/module/runtime/bannerEngine.js +7 -2
  158. package/lib/module/runtime/bannerEngine.js.map +1 -1
  159. package/lib/module/runtime/bannerFlowSpacer.js +65 -0
  160. package/lib/module/runtime/bannerFlowSpacer.js.map +1 -0
  161. package/lib/module/runtime/flowEngine.js +11 -0
  162. package/lib/module/runtime/flowEngine.js.map +1 -1
  163. package/lib/module/runtime/previewStart.js +35 -0
  164. package/lib/module/runtime/previewStart.js.map +1 -0
  165. package/lib/module/runtime/pushBannerLayoutContext.js +91 -0
  166. package/lib/module/runtime/pushBannerLayoutContext.js.map +1 -0
  167. package/lib/module/screenTracker.js +11 -0
  168. package/lib/module/screenTracker.js.map +1 -1
  169. package/lib/module/surfaces/BannerBar.js +80 -62
  170. package/lib/module/surfaces/BannerBar.js.map +1 -1
  171. package/lib/module/surfaces/BannerSurface.js +26 -0
  172. package/lib/module/surfaces/BannerSurface.js.map +1 -1
  173. package/lib/module/surfaces/TooltipSurface.js +44 -42
  174. package/lib/module/surfaces/TooltipSurface.js.map +1 -1
  175. package/lib/module/surfaces/bannerBarLayout.js +72 -11
  176. package/lib/module/surfaces/bannerBarLayout.js.map +1 -1
  177. package/lib/module/surfaces/bannerWebView/BannerWebViewBar.js +113 -64
  178. package/lib/module/surfaces/bannerWebView/BannerWebViewBar.js.map +1 -1
  179. package/lib/module/surfaces/bannerWebView/buildCustomBannerHtml.js +59 -11
  180. package/lib/module/surfaces/bannerWebView/buildCustomBannerHtml.js.map +1 -1
  181. package/lib/module/surfaces/hostAccessibilityTrap.js +24 -0
  182. package/lib/module/surfaces/hostAccessibilityTrap.js.map +1 -0
  183. package/lib/module/surfaces/resolveBannerTheme.js +6 -3
  184. package/lib/module/surfaces/resolveBannerTheme.js.map +1 -1
  185. package/lib/module/surfaces/tooltip/TooltipBubble.js +3 -2
  186. package/lib/module/surfaces/tooltip/TooltipBubble.js.map +1 -1
  187. package/lib/module/surfaces/tooltip/targetSearchSchedule.js +128 -0
  188. package/lib/module/surfaces/tooltip/targetSearchSchedule.js.map +1 -0
  189. package/lib/module/version.js +1 -1
  190. package/lib/typescript/commonjs/src/anchors/AutoAnchorRegistry.d.ts +36 -2
  191. package/lib/typescript/commonjs/src/anchors/AutoAnchorRegistry.d.ts.map +1 -1
  192. package/lib/typescript/commonjs/src/anchors/animationFrame.d.ts +0 -4
  193. package/lib/typescript/commonjs/src/anchors/animationFrame.d.ts.map +1 -1
  194. package/lib/typescript/commonjs/src/anchors/appActive.d.ts +8 -0
  195. package/lib/typescript/commonjs/src/anchors/appActive.d.ts.map +1 -0
  196. package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts +17 -0
  197. package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts.map +1 -1
  198. package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts +7 -0
  199. package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts.map +1 -1
  200. package/lib/typescript/commonjs/src/anchors/fiber/fiberInternals.d.ts +7 -0
  201. package/lib/typescript/commonjs/src/anchors/fiber/fiberInternals.d.ts.map +1 -1
  202. package/lib/typescript/commonjs/src/anchors/fiber/indexHostFibers.d.ts +3 -2
  203. package/lib/typescript/commonjs/src/anchors/fiber/indexHostFibers.d.ts.map +1 -1
  204. package/lib/typescript/commonjs/src/anchors/fiber/resolveFiberPath.d.ts +3 -0
  205. package/lib/typescript/commonjs/src/anchors/fiber/resolveFiberPath.d.ts.map +1 -1
  206. package/lib/typescript/commonjs/src/anchors/fiberAnchorCache.d.ts +5 -0
  207. package/lib/typescript/commonjs/src/anchors/fiberAnchorCache.d.ts.map +1 -1
  208. package/lib/typescript/commonjs/src/anchors/gestureHandlerHandoff.d.ts +70 -0
  209. package/lib/typescript/commonjs/src/anchors/gestureHandlerHandoff.d.ts.map +1 -0
  210. package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts +1 -0
  211. package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts.map +1 -1
  212. package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts +11 -4
  213. package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
  214. package/lib/typescript/commonjs/src/anchors/resolveElementTargets.d.ts.map +1 -1
  215. package/lib/typescript/commonjs/src/anchors/semanticMatcher.d.ts +2 -0
  216. package/lib/typescript/commonjs/src/anchors/semanticMatcher.d.ts.map +1 -1
  217. package/lib/typescript/commonjs/src/anchors/tapSlop.d.ts +9 -0
  218. package/lib/typescript/commonjs/src/anchors/tapSlop.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts +13 -8
  220. package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts.map +1 -1
  221. package/lib/typescript/commonjs/src/authoring/fingerprintFromInstance.d.ts.map +1 -1
  222. package/lib/typescript/commonjs/src/content/RichContentRenderer.d.ts.map +1 -1
  223. package/lib/typescript/commonjs/src/content/openSafeUrl.d.ts.map +1 -1
  224. package/lib/typescript/commonjs/src/expo-router/useUserflowExpoRouter.d.ts.map +1 -1
  225. package/lib/typescript/commonjs/src/index.d.ts +6 -5
  226. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  227. package/lib/typescript/commonjs/src/navigation/navigateUrlUtils.d.ts +15 -0
  228. package/lib/typescript/commonjs/src/navigation/navigateUrlUtils.d.ts.map +1 -0
  229. package/lib/typescript/commonjs/src/navigation/openExternalNavigateUrl.d.ts +3 -0
  230. package/lib/typescript/commonjs/src/navigation/openExternalNavigateUrl.d.ts.map +1 -0
  231. package/lib/typescript/commonjs/src/navigation/openFlowNavigateUrl.d.ts +2 -5
  232. package/lib/typescript/commonjs/src/navigation/openFlowNavigateUrl.d.ts.map +1 -1
  233. package/lib/typescript/commonjs/src/pairing/PairingController.d.ts +6 -0
  234. package/lib/typescript/commonjs/src/pairing/PairingController.d.ts.map +1 -1
  235. package/lib/typescript/commonjs/src/runtime/BannerHost.d.ts.map +1 -1
  236. package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts +3 -0
  237. package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts.map +1 -1
  238. package/lib/typescript/commonjs/src/runtime/UserflowOverlay.d.ts.map +1 -1
  239. package/lib/typescript/commonjs/src/runtime/UserflowProvider.d.ts.map +1 -1
  240. package/lib/typescript/commonjs/src/runtime/bannerEngine.d.ts +5 -1
  241. package/lib/typescript/commonjs/src/runtime/bannerEngine.d.ts.map +1 -1
  242. package/lib/typescript/commonjs/src/runtime/bannerFlowSpacer.d.ts +15 -0
  243. package/lib/typescript/commonjs/src/runtime/bannerFlowSpacer.d.ts.map +1 -0
  244. package/lib/typescript/commonjs/src/runtime/flowEngine.d.ts.map +1 -1
  245. package/lib/typescript/commonjs/src/runtime/previewStart.d.ts +13 -0
  246. package/lib/typescript/commonjs/src/runtime/previewStart.d.ts.map +1 -0
  247. package/lib/typescript/commonjs/src/runtime/pushBannerLayoutContext.d.ts +17 -0
  248. package/lib/typescript/commonjs/src/runtime/pushBannerLayoutContext.d.ts.map +1 -0
  249. package/lib/typescript/commonjs/src/screenTracker.d.ts +6 -0
  250. package/lib/typescript/commonjs/src/screenTracker.d.ts.map +1 -1
  251. package/lib/typescript/commonjs/src/surfaces/BannerBar.d.ts +3 -1
  252. package/lib/typescript/commonjs/src/surfaces/BannerBar.d.ts.map +1 -1
  253. package/lib/typescript/commonjs/src/surfaces/BannerSurface.d.ts +5 -1
  254. package/lib/typescript/commonjs/src/surfaces/BannerSurface.d.ts.map +1 -1
  255. package/lib/typescript/commonjs/src/surfaces/TooltipSurface.d.ts +1 -1
  256. package/lib/typescript/commonjs/src/surfaces/TooltipSurface.d.ts.map +1 -1
  257. package/lib/typescript/commonjs/src/surfaces/bannerBarLayout.d.ts +17 -0
  258. package/lib/typescript/commonjs/src/surfaces/bannerBarLayout.d.ts.map +1 -1
  259. package/lib/typescript/commonjs/src/surfaces/bannerWebView/BannerWebViewBar.d.ts +3 -1
  260. package/lib/typescript/commonjs/src/surfaces/bannerWebView/BannerWebViewBar.d.ts.map +1 -1
  261. package/lib/typescript/commonjs/src/surfaces/bannerWebView/buildCustomBannerHtml.d.ts.map +1 -1
  262. package/lib/typescript/commonjs/src/surfaces/hostAccessibilityTrap.d.ts +14 -0
  263. package/lib/typescript/commonjs/src/surfaces/hostAccessibilityTrap.d.ts.map +1 -0
  264. package/lib/typescript/commonjs/src/surfaces/resolveBannerTheme.d.ts +4 -1
  265. package/lib/typescript/commonjs/src/surfaces/resolveBannerTheme.d.ts.map +1 -1
  266. package/lib/typescript/commonjs/src/surfaces/tooltip/TooltipBubble.d.ts +7 -1
  267. package/lib/typescript/commonjs/src/surfaces/tooltip/TooltipBubble.d.ts.map +1 -1
  268. package/lib/typescript/commonjs/src/surfaces/tooltip/targetSearchSchedule.d.ts +60 -0
  269. package/lib/typescript/commonjs/src/surfaces/tooltip/targetSearchSchedule.d.ts.map +1 -0
  270. package/lib/typescript/commonjs/src/version.d.ts +1 -1
  271. package/lib/typescript/module/src/anchors/AutoAnchorRegistry.d.ts +36 -2
  272. package/lib/typescript/module/src/anchors/AutoAnchorRegistry.d.ts.map +1 -1
  273. package/lib/typescript/module/src/anchors/animationFrame.d.ts +0 -4
  274. package/lib/typescript/module/src/anchors/animationFrame.d.ts.map +1 -1
  275. package/lib/typescript/module/src/anchors/appActive.d.ts +8 -0
  276. package/lib/typescript/module/src/anchors/appActive.d.ts.map +1 -0
  277. package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts +17 -0
  278. package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts.map +1 -1
  279. package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts +7 -0
  280. package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts.map +1 -1
  281. package/lib/typescript/module/src/anchors/fiber/fiberInternals.d.ts +7 -0
  282. package/lib/typescript/module/src/anchors/fiber/fiberInternals.d.ts.map +1 -1
  283. package/lib/typescript/module/src/anchors/fiber/indexHostFibers.d.ts +3 -2
  284. package/lib/typescript/module/src/anchors/fiber/indexHostFibers.d.ts.map +1 -1
  285. package/lib/typescript/module/src/anchors/fiber/resolveFiberPath.d.ts +3 -0
  286. package/lib/typescript/module/src/anchors/fiber/resolveFiberPath.d.ts.map +1 -1
  287. package/lib/typescript/module/src/anchors/fiberAnchorCache.d.ts +5 -0
  288. package/lib/typescript/module/src/anchors/fiberAnchorCache.d.ts.map +1 -1
  289. package/lib/typescript/module/src/anchors/gestureHandlerHandoff.d.ts +70 -0
  290. package/lib/typescript/module/src/anchors/gestureHandlerHandoff.d.ts.map +1 -0
  291. package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts +1 -0
  292. package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts.map +1 -1
  293. package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts +11 -4
  294. package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
  295. package/lib/typescript/module/src/anchors/resolveElementTargets.d.ts.map +1 -1
  296. package/lib/typescript/module/src/anchors/semanticMatcher.d.ts +2 -0
  297. package/lib/typescript/module/src/anchors/semanticMatcher.d.ts.map +1 -1
  298. package/lib/typescript/module/src/anchors/tapSlop.d.ts +9 -0
  299. package/lib/typescript/module/src/anchors/tapSlop.d.ts.map +1 -0
  300. package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts +13 -8
  301. package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts.map +1 -1
  302. package/lib/typescript/module/src/authoring/fingerprintFromInstance.d.ts.map +1 -1
  303. package/lib/typescript/module/src/content/RichContentRenderer.d.ts.map +1 -1
  304. package/lib/typescript/module/src/content/openSafeUrl.d.ts.map +1 -1
  305. package/lib/typescript/module/src/expo-router/useUserflowExpoRouter.d.ts.map +1 -1
  306. package/lib/typescript/module/src/index.d.ts +6 -5
  307. package/lib/typescript/module/src/index.d.ts.map +1 -1
  308. package/lib/typescript/module/src/navigation/navigateUrlUtils.d.ts +15 -0
  309. package/lib/typescript/module/src/navigation/navigateUrlUtils.d.ts.map +1 -0
  310. package/lib/typescript/module/src/navigation/openExternalNavigateUrl.d.ts +3 -0
  311. package/lib/typescript/module/src/navigation/openExternalNavigateUrl.d.ts.map +1 -0
  312. package/lib/typescript/module/src/navigation/openFlowNavigateUrl.d.ts +2 -5
  313. package/lib/typescript/module/src/navigation/openFlowNavigateUrl.d.ts.map +1 -1
  314. package/lib/typescript/module/src/pairing/PairingController.d.ts +6 -0
  315. package/lib/typescript/module/src/pairing/PairingController.d.ts.map +1 -1
  316. package/lib/typescript/module/src/runtime/BannerHost.d.ts.map +1 -1
  317. package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts +3 -0
  318. package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts.map +1 -1
  319. package/lib/typescript/module/src/runtime/UserflowOverlay.d.ts.map +1 -1
  320. package/lib/typescript/module/src/runtime/UserflowProvider.d.ts.map +1 -1
  321. package/lib/typescript/module/src/runtime/bannerEngine.d.ts +5 -1
  322. package/lib/typescript/module/src/runtime/bannerEngine.d.ts.map +1 -1
  323. package/lib/typescript/module/src/runtime/bannerFlowSpacer.d.ts +15 -0
  324. package/lib/typescript/module/src/runtime/bannerFlowSpacer.d.ts.map +1 -0
  325. package/lib/typescript/module/src/runtime/flowEngine.d.ts.map +1 -1
  326. package/lib/typescript/module/src/runtime/previewStart.d.ts +13 -0
  327. package/lib/typescript/module/src/runtime/previewStart.d.ts.map +1 -0
  328. package/lib/typescript/module/src/runtime/pushBannerLayoutContext.d.ts +17 -0
  329. package/lib/typescript/module/src/runtime/pushBannerLayoutContext.d.ts.map +1 -0
  330. package/lib/typescript/module/src/screenTracker.d.ts +6 -0
  331. package/lib/typescript/module/src/screenTracker.d.ts.map +1 -1
  332. package/lib/typescript/module/src/surfaces/BannerBar.d.ts +3 -1
  333. package/lib/typescript/module/src/surfaces/BannerBar.d.ts.map +1 -1
  334. package/lib/typescript/module/src/surfaces/BannerSurface.d.ts +5 -1
  335. package/lib/typescript/module/src/surfaces/BannerSurface.d.ts.map +1 -1
  336. package/lib/typescript/module/src/surfaces/TooltipSurface.d.ts +1 -1
  337. package/lib/typescript/module/src/surfaces/TooltipSurface.d.ts.map +1 -1
  338. package/lib/typescript/module/src/surfaces/bannerBarLayout.d.ts +17 -0
  339. package/lib/typescript/module/src/surfaces/bannerBarLayout.d.ts.map +1 -1
  340. package/lib/typescript/module/src/surfaces/bannerWebView/BannerWebViewBar.d.ts +3 -1
  341. package/lib/typescript/module/src/surfaces/bannerWebView/BannerWebViewBar.d.ts.map +1 -1
  342. package/lib/typescript/module/src/surfaces/bannerWebView/buildCustomBannerHtml.d.ts.map +1 -1
  343. package/lib/typescript/module/src/surfaces/hostAccessibilityTrap.d.ts +14 -0
  344. package/lib/typescript/module/src/surfaces/hostAccessibilityTrap.d.ts.map +1 -0
  345. package/lib/typescript/module/src/surfaces/resolveBannerTheme.d.ts +4 -1
  346. package/lib/typescript/module/src/surfaces/resolveBannerTheme.d.ts.map +1 -1
  347. package/lib/typescript/module/src/surfaces/tooltip/TooltipBubble.d.ts +7 -1
  348. package/lib/typescript/module/src/surfaces/tooltip/TooltipBubble.d.ts.map +1 -1
  349. package/lib/typescript/module/src/surfaces/tooltip/targetSearchSchedule.d.ts +60 -0
  350. package/lib/typescript/module/src/surfaces/tooltip/targetSearchSchedule.d.ts.map +1 -0
  351. package/lib/typescript/module/src/version.d.ts +1 -1
  352. package/package.json +1 -1
  353. package/src/anchors/AutoAnchorRegistry.ts +166 -35
  354. package/src/anchors/animationFrame.ts +31 -1
  355. package/src/anchors/appActive.ts +63 -0
  356. package/src/anchors/elementConditionEvaluator.ts +29 -12
  357. package/src/anchors/elementTapMonitor.ts +68 -10
  358. package/src/anchors/elementTargetMatch.ts +34 -7
  359. package/src/anchors/fiber/fiberInternals.ts +68 -0
  360. package/src/anchors/fiber/indexHostFibers.ts +8 -3
  361. package/src/anchors/fiber/resolveFiberPath.ts +25 -16
  362. package/src/anchors/fiberAnchorCache.ts +19 -0
  363. package/src/anchors/gestureHandlerHandoff.ts +356 -0
  364. package/src/anchors/resolveAnchorHost.ts +2 -0
  365. package/src/anchors/resolveAutoAnchorHost.ts +18 -8
  366. package/src/anchors/resolveElementTargets.ts +64 -7
  367. package/src/anchors/semanticMatcher.ts +48 -27
  368. package/src/anchors/tapSlop.ts +18 -0
  369. package/src/anchors/targetPressMonitor.ts +56 -19
  370. package/src/authoring/fingerprintFromInstance.ts +4 -5
  371. package/src/content/RichContentRenderer.tsx +4 -3
  372. package/src/content/openSafeUrl.ts +3 -1
  373. package/src/expo-router/useUserflowExpoRouter.ts +10 -1
  374. package/src/index.ts +20 -9
  375. package/src/navigation/navigateUrlUtils.ts +100 -0
  376. package/src/navigation/openExternalNavigateUrl.ts +9 -0
  377. package/src/navigation/openFlowNavigateUrl.ts +36 -36
  378. package/src/pairing/PairingController.ts +9 -1
  379. package/src/runtime/BannerHost.tsx +41 -23
  380. package/src/runtime/TargetPressBridge.tsx +66 -9
  381. package/src/runtime/UserflowOverlay.tsx +7 -9
  382. package/src/runtime/UserflowProvider.tsx +56 -32
  383. package/src/runtime/bannerEngine.ts +10 -2
  384. package/src/runtime/bannerFlowSpacer.tsx +70 -0
  385. package/src/runtime/flowEngine.ts +11 -0
  386. package/src/runtime/previewStart.ts +49 -0
  387. package/src/runtime/pushBannerLayoutContext.tsx +121 -0
  388. package/src/screenTracker.ts +11 -0
  389. package/src/surfaces/BannerBar.tsx +93 -55
  390. package/src/surfaces/BannerSurface.tsx +59 -3
  391. package/src/surfaces/TooltipSurface.tsx +63 -51
  392. package/src/surfaces/bannerBarLayout.ts +80 -7
  393. package/src/surfaces/bannerWebView/BannerWebViewBar.tsx +149 -57
  394. package/src/surfaces/bannerWebView/buildCustomBannerHtml.ts +63 -11
  395. package/src/surfaces/hostAccessibilityTrap.ts +25 -0
  396. package/src/surfaces/resolveBannerTheme.ts +14 -3
  397. package/src/surfaces/tooltip/TooltipBubble.tsx +8 -1
  398. package/src/surfaces/tooltip/targetSearchSchedule.ts +140 -0
  399. package/src/version.ts +1 -1
  400. package/vendor/core/dist/engine/BannerSessionEngine.d.ts +29 -2
  401. package/vendor/core/dist/engine/BannerSessionEngine.d.ts.map +1 -1
  402. package/vendor/core/dist/engine/BannerSessionEngine.js +87 -6
  403. package/vendor/core/dist/engine/BannerSessionEngine.js.map +1 -1
  404. package/vendor/core/dist/engine/ClientConditionEngine.d.ts.map +1 -1
  405. package/vendor/core/dist/engine/ClientConditionEngine.js +30 -7
  406. package/vendor/core/dist/engine/ClientConditionEngine.js.map +1 -1
  407. package/vendor/core/dist/engine/PairingEngine.d.ts +6 -1
  408. package/vendor/core/dist/engine/PairingEngine.d.ts.map +1 -1
  409. package/vendor/core/dist/engine/PairingEngine.js +23 -3
  410. package/vendor/core/dist/engine/PairingEngine.js.map +1 -1
  411. package/vendor/core/dist/engine/handleActions.d.ts.map +1 -1
  412. package/vendor/core/dist/engine/handleActions.js +67 -2
  413. package/vendor/core/dist/engine/handleActions.js.map +1 -1
  414. package/vendor/core/dist/version.d.ts +1 -1
  415. package/vendor/core/dist/version.js +1 -1
  416. package/vendor/core/package.json +1 -1
  417. package/vendor/protocol/package.json +1 -1
@@ -15,6 +15,9 @@ export interface TargetPressBridgeProps {
15
15
  * Preview-chrome double taps are observed by `DoubleTapBridge` around the
16
16
  * whole provider tree — this bridge never sees overlay touches.
17
17
  *
18
+ * A touch that gesture-handler cancels is not dropped. The start is kept and
19
+ * counts as a tap if that handler later ends from ACTIVE.
20
+ *
18
21
  * Does not claim the gesture responder.
19
22
  */
20
23
  export declare function TargetPressBridge({ children }: TargetPressBridgeProps): React.ReactElement;
@@ -1 +1 @@
1
- {"version":3,"file":"TargetPressBridge.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/TargetPressBridge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,GAAG,KAAK,CAAC,YAAY,CAuD1F"}
1
+ {"version":3,"file":"TargetPressBridge.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/TargetPressBridge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAY/B,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,GAAG,KAAK,CAAC,YAAY,CA+D1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserflowOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/UserflowOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAe/B,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,mBAAmB,CAAC;IAClC,6EAA6E;IAC7E,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,YAAY,EACZ,YAAY,GACb,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAqF3C"}
1
+ {"version":3,"file":"UserflowOverlay.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/UserflowOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgB/B,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,YAAY,EAAE,mBAAmB,CAAC;IAClC,6EAA6E;IAC7E,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAC9B,MAAM,EACN,YAAY,EACZ,YAAY,GACb,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAkF3C"}
@@ -1 +1 @@
1
- {"version":3,"file":"UserflowProvider.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/UserflowProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA2B/B,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAID,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,yDAAyD;IACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AA0CD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,gBAAgB,GAC/B,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAoF5C;AAoBD,2EAA2E;AAC3E,wBAAgB,WAAW,IAAI,oBAAoB,CAMlD"}
1
+ {"version":3,"file":"UserflowProvider.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/UserflowProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA2B/B,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAID,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,yDAAyD;IACzD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AA0CD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,YAAY,EAAE,gBAAgB,GAC/B,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,CA+F5C;AAoBD,2EAA2E;AAC3E,wBAAgB,WAAW,IAAI,oBAAoB,CAMlD"}
@@ -6,7 +6,11 @@ export declare function attachBannerSessionEngine(core: UserflowCore): BannerSes
6
6
  /** Clear the banner session and detach. Call from {@link Userflow.reset}. */
7
7
  export declare function resetBannerSessionEngine(): void;
8
8
  /** Drop the local banner without detaching (preview exit, user switch). */
9
- export declare function clearBannerSessionEngineLocalSession(): void;
9
+ export declare function clearBannerSessionEngineLocalSession(options?: {
10
+ rememberDraftForPreviewEnd?: boolean;
11
+ }): void;
12
+ /** Best-effort end of a Builder preview banner draft (including after local clear). */
13
+ export declare function endDraftBannerSession(): Promise<void>;
10
14
  /** Test helper: drop the singleton so the next get recreates it. */
11
15
  export declare function __resetBannerSessionEngineForTests(): void;
12
16
  //# sourceMappingURL=bannerEngine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bannerEngine.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/bannerEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAU7E,iGAAiG;AACjG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,CAoB9E;AAED,4EAA4E;AAC5E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,CAIjF;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,2EAA2E;AAC3E,wBAAgB,oCAAoC,IAAI,IAAI,CAE3D;AAED,oEAAoE;AACpE,wBAAgB,kCAAkC,IAAI,IAAI,CAGzD"}
1
+ {"version":3,"file":"bannerEngine.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/bannerEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAW7E,iGAAiG;AACjG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,CAoB9E;AAED,4EAA4E;AAC5E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,CAIjF;AAED,6EAA6E;AAC7E,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AAED,2EAA2E;AAC3E,wBAAgB,oCAAoC,CAAC,OAAO,CAAC,EAAE;IAC7D,0BAA0B,CAAC,EAAE,OAAO,CAAC;CACtC,GAAG,IAAI,CAEP;AAED,uFAAuF;AACvF,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAE3D;AAED,oEAAoE;AACpE,wBAAgB,kCAAkC,IAAI,IAAI,CAGzD"}
@@ -0,0 +1,15 @@
1
+ import type { BannerSessionEngine } from '@userflow-tech/core';
2
+ import * as React from 'react';
3
+ type SpacerEdge = 'top' | 'bottom';
4
+ /** @internal */
5
+ export declare function setBannerFlowSpacerHeight(edge: SpacerEdge, height: number): void;
6
+ /**
7
+ * Reserves layout space when a custom-css WebView banner is painted in the
8
+ * overlay host but the builder marked it `overlay: false` (push layout).
9
+ */
10
+ export declare function BannerWebViewFlowSpacer({ engine, edge, }: {
11
+ engine: BannerSessionEngine;
12
+ edge: SpacerEdge;
13
+ }): React.ReactElement | null;
14
+ export {};
15
+ //# sourceMappingURL=bannerFlowSpacer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bannerFlowSpacer.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/bannerFlowSpacer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,KAAK,UAAU,GAAG,KAAK,GAAG,QAAQ,CAAC;AAWnC,gBAAgB;AAChB,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAOhF;AAaD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,MAAM,EACN,IAAI,GACL,EAAE;IACD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,IAAI,EAAE,UAAU,CAAC;CAClB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAoB5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"flowEngine.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/flowEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAa3E,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,CAsB1E;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,CAI7E;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQzD;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C;AAkBD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzF;AAED,oEAAoE;AACpE,wBAAgB,gCAAgC,IAAI,IAAI,CAIvD"}
1
+ {"version":3,"file":"flowEngine.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/flowEngine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAa3E,+FAA+F;AAC/F,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,CAiC1E;AAED,4EAA4E;AAC5E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,YAAY,GAAG,iBAAiB,CAI7E;AAED,qEAAqE;AACrE,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAED;;;GAGG;AACH,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQzD;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,IAAI,IAAI,CAI5C;AAkBD;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAIzF;AAED,oEAAoE;AACpE,wBAAgB,gCAAgC,IAAI,IAAI,CAIvD"}
@@ -0,0 +1,13 @@
1
+ import type { UserflowCore } from '@userflow-tech/core';
2
+ /**
3
+ * Drop local tour state and reset eval before a Builder `startFlowWithToken`.
4
+ *
5
+ * When a draft banner is still active, end it on the server first. The channel
6
+ * dedupes an unchanged `SetBannerSession`, so clearing the banner locally
7
+ * without ending the draft leaves nothing visible on a second preview of the
8
+ * same banner.
9
+ */
10
+ export declare function prepareForBuilderPreviewStart(core: UserflowCore): Promise<void>;
11
+ /** End tour and banner Builder drafts on the server (preview exit). */
12
+ export declare function endDraftPreviewSessions(): Promise<void>;
13
+ //# sourceMappingURL=previewStart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"previewStart.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/previewStart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAgBxD;;;;;;;GAOG;AACH,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBrF;AAED,uEAAuE;AACvE,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7D"}
@@ -0,0 +1,17 @@
1
+ import * as React from 'react';
2
+ import type { LayoutChangeEvent } from 'react-native';
3
+ export type PushBannerLayoutEdge = 'top' | 'bottom';
4
+ export declare function PushBannerLayoutProvider({ children, onActiveEdgeChange, }: {
5
+ children: React.ReactNode;
6
+ onActiveEdgeChange: (edge: PushBannerLayoutEdge | null) => void;
7
+ }): React.ReactElement;
8
+ /** @internal */
9
+ export declare function usePushBannerLayoutRegistration(edge: PushBannerLayoutEdge | null | undefined, sessionId: string | undefined): void;
10
+ /**
11
+ * Clears the host top/bottom safe-area override only after push-layout chrome
12
+ * has laid out, so a session without visible chrome cannot leave a white strip.
13
+ *
14
+ * @internal
15
+ */
16
+ export declare function usePushBannerHostInsetRegistration(edge: PushBannerLayoutEdge | null | undefined, sessionId: string, enabled: boolean): (event: LayoutChangeEvent) => void;
17
+ //# sourceMappingURL=pushBannerLayoutContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pushBannerLayoutContext.d.ts","sourceRoot":"","sources":["../../../../../src/runtime/pushBannerLayoutContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,QAAQ,CAAC;AA8BpD,wBAAgB,wBAAwB,CAAC,EACvC,QAAQ,EACR,kBAAkB,GACnB,EAAE;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,kBAAkB,EAAE,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,KAAK,IAAI,CAAC;CACjE,GAAG,KAAK,CAAC,YAAY,CA+BrB;AAED,gBAAgB;AAChB,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAC7C,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,IAAI,CAYN;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,IAAI,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,EAC7C,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,GACf,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAoBpC"}
@@ -7,6 +7,12 @@ export type HandleScreenChangeOptions = {
7
7
  /** Re-run the reporter even when the location matches the last report. */
8
8
  force?: boolean;
9
9
  };
10
+ /**
11
+ * The screen id stored on an AUTO envelope (`path` for Expo Router, `screen`
12
+ * otherwise). Missing or blank locations are `'unknown'`, the same sentinel
13
+ * the element picker writes when it has not seen a screen yet.
14
+ */
15
+ export declare function screenIdFromLocation(location: ClientLocationUpdate | null | undefined): string;
10
16
  /** Event attributes for `screen_viewed`, or `null` when the location has no identity. */
11
17
  export declare function screenViewedAttributes(location: ClientLocationUpdate): {
12
18
  screen_name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"screenTracker.d.ts","sourceRoot":"","sources":["../../../../src/screenTracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE5E,MAAM,MAAM,yBAAyB,GAAG;IACtC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAeF,yFAAyF;AACzF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,oBAAoB,GAC7B;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIhC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAalF;AAeD,kFAAkF;AAClF,wBAAgB,wBAAwB,IAAI,oBAAoB,GAAG,IAAI,CAEtE;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,IAAI,CAS3C;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,EAC1C,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAgBN;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD"}
1
+ {"version":3,"file":"screenTracker.d.ts","sourceRoot":"","sources":["../../../../src/screenTracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAEpE,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AAEnD,sEAAsE;AACtE,MAAM,MAAM,oBAAoB,GAAG,CAAC,QAAQ,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE5E,MAAM,MAAM,yBAAyB,GAAG;IACtC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAeF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAI9F;AAED,yFAAyF;AACzF,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,oBAAoB,GAC7B;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAIhC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,GAAG,IAAI,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAalF;AAeD,kFAAkF;AAClF,wBAAgB,wBAAwB,IAAI,oBAAoB,GAAG,IAAI,CAEtE;AAED,iFAAiF;AACjF,wBAAgB,oBAAoB,IAAI,IAAI,CAS3C;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,IAAI,IAAI,CAK5C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,oBAAoB,GAAG,SAAS,EAC1C,OAAO,CAAC,EAAE,yBAAyB,GAClC,IAAI,CAgBN;AAED,sFAAsF;AACtF,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED,iFAAiF;AACjF,wBAAgB,0BAA0B,IAAI,IAAI,CAMjD"}
@@ -3,6 +3,8 @@ import { EndFlowReasonInput, type BannerSessionFragment } from '@userflow-tech/p
3
3
  import * as React from 'react';
4
4
  export interface BannerBarProps {
5
5
  session: BannerSessionFragment;
6
+ pushLayoutEdge?: 'top' | 'bottom' | null;
7
+ overlaySafeEdge?: 'top' | 'bottom' | null;
6
8
  onActions: (actions: FlowActionFragment[]) => void;
7
9
  onDismiss: (endReason: EndFlowReasonInput) => void;
8
10
  }
@@ -10,5 +12,5 @@ export interface BannerBarProps {
10
12
  * Banner chrome. An overlay parent floats this over the host. A flow parent
11
13
  * keeps it in layout so the app is pushed instead of covered.
12
14
  */
13
- export declare function BannerBar({ session, onActions, onDismiss, }: BannerBarProps): React.ReactElement | null;
15
+ export declare function BannerBar({ session, pushLayoutEdge, overlaySafeEdge, onActions, onDismiss, }: BannerBarProps): React.ReactElement | null;
14
16
  //# sourceMappingURL=BannerBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BannerBar.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/BannerBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,kBAAkB,EAClB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAqB/B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACnD,SAAS,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACpD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,SAAS,EACT,SAAS,GACV,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAgG5C"}
1
+ {"version":3,"file":"BannerBar.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/BannerBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,kBAAkB,EAClB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAyB/B,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,qBAAqB,CAAC;IAC/B,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,CAAC;IACnD,SAAS,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACpD;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EACxB,OAAO,EACP,cAAqB,EACrB,eAAsB,EACtB,SAAS,EACT,SAAS,GACV,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA8H5C"}
@@ -2,6 +2,10 @@ import type { BannerSessionFragment, EndFlowReasonInput, FlowActionFragment } fr
2
2
  import * as React from 'react';
3
3
  export interface BannerSurfaceProps {
4
4
  session: BannerSessionFragment;
5
+ /** When set, the banner pushes host layout and fills the safe-area inset on this edge. */
6
+ pushLayoutEdge?: 'top' | 'bottom' | null;
7
+ /** Overlay host edge — paints safe-area padding without pushing layout. */
8
+ overlaySafeEdge?: 'top' | 'bottom' | null;
5
9
  onActions: (actions: FlowActionFragment[]) => void | Promise<void>;
6
10
  onDismiss: (endReason: EndFlowReasonInput) => void;
7
11
  }
@@ -9,7 +13,7 @@ export interface BannerSurfaceProps {
9
13
  * Native banner bar, or a WebView when a button runs Evaluate JavaScript or the
10
14
  * theme has published custom CSS (same CDN stylesheet as userflow.js iframes).
11
15
  */
12
- export declare function BannerSurface({ session, onActions, onDismiss, }: BannerSurfaceProps): React.ReactElement | null;
16
+ export declare function BannerSurface({ session, pushLayoutEdge, overlaySafeEdge, onActions, onDismiss, }: BannerSurfaceProps): React.ReactElement | null;
13
17
  /** @internal */
14
18
  export declare function resetBannerSurfaceWarningsForTests(): void;
15
19
  //# sourceMappingURL=BannerSurface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BannerSurface.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/BannerSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,SAAS,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACpD;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,SAAS,GACV,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA+ChD;AAED,gBAAgB;AAChB,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD"}
1
+ {"version":3,"file":"BannerSurface.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/BannerSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAU/B,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,0FAA0F;IAC1F,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC,2EAA2E;IAC3E,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,SAAS,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACpD;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,cAAqB,EACrB,eAAsB,EACtB,SAAS,EACT,SAAS,GACV,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAiGhD;AAED,gBAAgB;AAChB,wBAAgB,kCAAkC,IAAI,IAAI,CAEzD"}
@@ -1,5 +1,5 @@
1
1
  import type { FlowSessionEngine } from '@userflow-tech/core';
2
- import type { FlowSessionFragment, FlowStepFragment, ThemeFragment } from '@userflow-tech/protocol';
2
+ import { type FlowSessionFragment, type FlowStepFragment, type ThemeFragment } from '@userflow-tech/protocol';
3
3
  import * as React from 'react';
4
4
  import type { LookupAttribute } from '../content/types';
5
5
  export interface TooltipSurfaceProps {
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipSurface.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/TooltipSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAEV,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA6B/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA4CxD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAQD;;;GAGG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAuCzC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,EACP,WAAW,EACX,KAAK,EACL,eAAe,EACf,UAAc,GACf,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA23BjD"}
1
+ {"version":3,"file":"TooltipSurface.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/TooltipSurface.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA+B/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AA8CxD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,EAAE,mBAAmB,CAAC;IAC7B,WAAW,EAAE,gBAAgB,CAAC;IAC9B,KAAK,EAAE,aAAa,CAAC;IACrB,eAAe,EAAE,eAAe,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID;;;GAGG;AACH,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAuCzC;;;GAGG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,OAAO,EACP,WAAW,EACX,KAAK,EACL,eAAe,EACf,UAAc,GACf,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAs4BjD"}
@@ -3,6 +3,16 @@ import { BannerContentLayout } from '@userflow-tech/protocol';
3
3
  import type { ViewStyle } from 'react-native';
4
4
  import type { EdgeInsets } from './safeArea';
5
5
  export { BANNER_CLOSE_SLOT_SIZE, BANNER_ROOT_PADDING } from './bannerBarTokens';
6
+ /** Fixed horizontal chrome inside the embed width (padding, close/spacer slots, inner margins). */
7
+ export declare function bannerHorizontalChromeWidth(): number;
8
+ /** Outer bar cap — max embed width only (max content width limits the inner row on web). */
9
+ export declare function resolveBannerFrameMaxWidth(banner: BannerFragment): number | null;
10
+ export declare function bannerHasMaxContentWidth(banner: BannerFragment): boolean;
11
+ /**
12
+ * Cap for the native inner row and WebView HTML `.userflowjs-banner-inner` only.
13
+ * Returns null when max content width is unset. May be 0 when embed width is narrower than chrome.
14
+ */
15
+ export declare function resolveBannerInnerMaxWidth(banner: BannerFragment): number | null;
6
16
  /** Outer frame: max embed width and builder outer margin (web `userflowjs-banner-frame`). */
7
17
  export declare function bannerFrameStyle(banner: BannerFragment): ViewStyle;
8
18
  /** Corner radius on the painted bar when configured in the builder. */
@@ -11,5 +21,12 @@ export declare function resolveBannerBarBorderRadius(banner: BannerFragment): nu
11
21
  export declare function bannerOverlayHostPadding(insets: EdgeInsets): ViewStyle;
12
22
  /** Flex justification for the inner row (web content-layout modifiers). */
13
23
  export declare function bannerInnerJustifyContent(layout: BannerContentLayout): ViewStyle['justifyContent'];
24
+ /**
25
+ * Push-layout chrome: safe-area pad + bar background on the same node as the
26
+ * fade so an animated banner does not leave a visible status-bar strip at opacity 0.
27
+ */
28
+ export declare function bannerPushLayoutChrome(edge: 'top' | 'bottom', insets: EdgeInsets, backgroundColor: string): ViewStyle;
29
+ /** Painted bar (`userflow-banner`) — fill the frame so max embed width clips chrome, not just margins. */
30
+ export declare function bannerBarRootStyle(banner: BannerFragment): ViewStyle;
14
31
  export declare function bannerInnerStyle(banner: BannerFragment): ViewStyle;
15
32
  //# sourceMappingURL=bannerBarLayout.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bannerBarLayout.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/bannerBarLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAQ9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAMhF,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAWlE;AAED,uEAAuE;AACvE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAGtE;AAED,2EAA2E;AAC3E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,GAC1B,SAAS,CAAC,gBAAgB,CAAC,CAU7B;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAelE"}
1
+ {"version":3,"file":"bannerBarLayout.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/bannerBarLayout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAU9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAMhF,mGAAmG;AACnG,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,4FAA4F;AAC5F,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAEhF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAExE;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI,CAUhF;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAkBlE;AAED,uEAAuE;AACvE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,GAAG,SAAS,CAEvF;AAED,2FAA2F;AAC3F,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAGtE;AAED,2EAA2E;AAC3E,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,mBAAmB,GAC1B,SAAS,CAAC,gBAAgB,CAAC,CAU7B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,KAAK,GAAG,QAAQ,EACtB,MAAM,EAAE,UAAU,EAClB,eAAe,EAAE,MAAM,GACtB,SAAS,CAMX;AAKD,0GAA0G;AAC1G,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAQpE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAmBlE"}
@@ -3,8 +3,10 @@ import { EndFlowReasonInput, type BannerSessionFragment } from '@userflow-tech/p
3
3
  import * as React from 'react';
4
4
  export interface BannerWebViewBarProps {
5
5
  session: BannerSessionFragment;
6
+ pushLayoutEdge?: 'top' | 'bottom' | null;
7
+ overlaySafeEdge?: 'top' | 'bottom' | null;
6
8
  onActions: (actions: FlowActionFragment[]) => void | Promise<void>;
7
9
  onDismiss: (endReason: EndFlowReasonInput) => void;
8
10
  }
9
- export declare function BannerWebViewBar({ session, onActions, onDismiss, }: BannerWebViewBarProps): React.ReactElement | null;
11
+ export declare function BannerWebViewBar({ session, pushLayoutEdge, overlaySafeEdge, onActions, onDismiss, }: BannerWebViewBarProps): React.ReactElement | null;
10
12
  //# sourceMappingURL=BannerWebViewBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BannerWebViewBar.d.ts","sourceRoot":"","sources":["../../../../../../src/surfaces/bannerWebView/BannerWebViewBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,kBAAkB,EAClB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAgC/B,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,SAAS,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACpD;AAyBD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,SAAS,EACT,SAAS,GACV,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA+OnD"}
1
+ {"version":3,"file":"BannerWebViewBar.d.ts","sourceRoot":"","sources":["../../../../../../src/surfaces/bannerWebView/BannerWebViewBar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAEL,kBAAkB,EAClB,KAAK,qBAAqB,EAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAoC/B,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;IAC1C,SAAS,EAAE,CAAC,OAAO,EAAE,kBAAkB,EAAE,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,SAAS,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,IAAI,CAAC;CACpD;AAyBD,wBAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,cAAqB,EACrB,eAAsB,EACtB,SAAS,EACT,SAAS,GACV,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAmUnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"buildCustomBannerHtml.d.ts","sourceRoot":"","sources":["../../../../../../src/surfaces/bannerWebView/buildCustomBannerHtml.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AA8GxD,MAAM,WAAW,4BAA4B;IAC3C,+FAA+F;IAC/F,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAC/C,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CAqCR;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAC/C,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CAGR"}
1
+ {"version":3,"file":"buildCustomBannerHtml.d.ts","sourceRoot":"","sources":["../../../../../../src/surfaces/bannerWebView/buildCustomBannerHtml.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAIrF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAyJxD,MAAM,WAAW,4BAA4B;IAC3C,+FAA+F;IAC/F,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAC/C,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CA8CR;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,qBAAqB,EAC9B,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,EAC/C,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,4BAA4B,GACrC,MAAM,CAGR"}
@@ -0,0 +1,14 @@
1
+ import type { FlowStepFragment } from '@userflow-tech/protocol';
2
+ /**
3
+ * Whether a step hides host app content from the accessibility tree.
4
+ *
5
+ * Modals always do. A tooltip does only when `tooltipTargetBlocked` seals its
6
+ * target too — otherwise the target is the control the step asks the user to
7
+ * press, so a screen reader has to be able to reach it.
8
+ *
9
+ * `UserflowOverlay` traps the host with this, and tooltip cards gate
10
+ * `accessibilityViewIsModal` on it: on iOS that flag alone drops the host app,
11
+ * target included, out of VoiceOver's reach.
12
+ */
13
+ export declare function stepTrapsHostAccessibility(step: Pick<FlowStepFragment, 'appearance' | 'tooltipTargetBlocked'>): boolean;
14
+ //# sourceMappingURL=hostAccessibilityTrap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hostAccessibilityTrap.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/hostAccessibilityTrap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,sBAAsB,CAAC,GAClE,OAAO,CAST"}
@@ -1,5 +1,8 @@
1
1
  import type { ThemeFragment } from '@userflow-tech/protocol';
2
- /** Default banner chrome when theme banner tokens are unset (matches product / web debugger palette). */
2
+ /**
3
+ * Last-resort banner chrome when neither banner nor brand tokens are set on the
4
+ * wire (web `applyThemeDefaults` falls back to brand first).
5
+ */
3
6
  export declare const DEFAULT_BANNER_BACKGROUND_COLOR = "#0A1A24";
4
7
  export declare const DEFAULT_BANNER_FOREGROUND_COLOR = "#FFFFFF";
5
8
  export declare function resolveBannerBackgroundColor(theme: ThemeFragment): string;
@@ -1 +1 @@
1
- {"version":3,"file":"resolveBannerTheme.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/resolveBannerTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,yGAAyG;AACzG,eAAO,MAAM,+BAA+B,YAAY,CAAC;AACzD,eAAO,MAAM,+BAA+B,YAAY,CAAC;AAOzD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAEzE;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAEzE"}
1
+ {"version":3,"file":"resolveBannerTheme.d.ts","sourceRoot":"","sources":["../../../../../src/surfaces/resolveBannerTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D;;;GAGG;AACH,eAAO,MAAM,+BAA+B,YAAY,CAAC;AACzD,eAAO,MAAM,+BAA+B,YAAY,CAAC;AAOzD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAMzE;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAMzE"}
@@ -15,6 +15,12 @@ export interface TooltipBubbleProps {
15
15
  * target. Defaults to true so isolated chrome tests keep the diamond.
16
16
  */
17
17
  showNotch?: boolean;
18
+ /**
19
+ * iOS: confine VoiceOver to this card. VoiceOver then skips the host app,
20
+ * including the target, so set it only while the host is hidden from
21
+ * accessibility anyway. Defaults to false.
22
+ */
23
+ accessibilityViewIsModal?: boolean;
18
24
  }
19
25
  /**
20
26
  * Tooltip chrome shell: diamond notch + card fill sharing one shadow family.
@@ -34,5 +40,5 @@ export interface TooltipBubbleProps {
34
40
  * iOS gets `shadow*` on the notch (`elevation` is inert there); Android gets
35
41
  * `elevation`, which is the only shadow it honors on a rotated view.
36
42
  */
37
- export declare function TooltipBubble({ chrome, notchPosition, style, onLayout, children, maxHeight, showNotch: showNotchProp, }: TooltipBubbleProps): React.ReactElement;
43
+ export declare function TooltipBubble({ chrome, notchPosition, style, onLayout, children, maxHeight, showNotch: showNotchProp, accessibilityViewIsModal, }: TooltipBubbleProps): React.ReactElement;
38
44
  //# sourceMappingURL=TooltipBubble.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TooltipBubble.d.ts","sourceRoot":"","sources":["../../../../../../src/surfaces/tooltip/TooltipBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,aAAa,EACb,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EAAE,aAAoB,GAChC,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAgIzC"}
1
+ {"version":3,"file":"TooltipBubble.d.ts","sourceRoot":"","sources":["../../../../../../src/surfaces/tooltip/TooltipBubble.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAIL,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAGnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC9C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,4FAA4F;IAC5F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,aAAa,EACb,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EAAE,aAAoB,EAC/B,wBAAgC,GACjC,EAAE,kBAAkB,GAAG,KAAK,CAAC,YAAY,CAgIzC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * When TooltipSurface looks for its target.
3
+ *
4
+ * - Anchored: a steady poll, so a covered or remounted host is noticed quickly.
5
+ * Each search is a cache hit for the resolved host.
6
+ * - Missing: exponential backoff. A miss walks the tree and scores registered
7
+ * hosts, so a target on another screen must not cost a full search every
8
+ * second for as long as the flow stays open.
9
+ * - Registry churn (list rows mounting while the user scrolls) pulls the next
10
+ * missing search forward, never closer than {@link MISSING_TRIGGER_GAP_MS}
11
+ * to the previous one.
12
+ * - A screen change or a return to the foreground starts the backoff over.
13
+ * - Nothing runs while paused (app not active).
14
+ */
15
+ /** Poll while the target is anchored. */
16
+ export declare const ANCHORED_POLL_MS = 250;
17
+ /** First retry after a miss; doubles per consecutive miss. */
18
+ export declare const MISSING_BACKOFF_BASE_MS = 250;
19
+ /** Ceiling for the missing-target backoff. */
20
+ export declare const MISSING_BACKOFF_MAX_MS = 4000;
21
+ /** Closest a registry change can pull a missing search to the previous one. */
22
+ export declare const MISSING_TRIGGER_GAP_MS = 500;
23
+ export type TargetSearchMode = 'anchored' | 'missing';
24
+ export interface TargetSearchClock {
25
+ now(): number;
26
+ setTimeout(handler: () => void, ms: number): ReturnType<typeof setTimeout>;
27
+ clearTimeout(handle: ReturnType<typeof setTimeout>): void;
28
+ }
29
+ /** Delay before the next search after `misses` consecutive missing searches. */
30
+ export declare function missingBackoffDelay(misses: number): number;
31
+ export declare class TargetSearchSchedule {
32
+ private readonly search;
33
+ private readonly clock;
34
+ private mode;
35
+ /** Searches run since the target was last anchored (or the backoff restarted). */
36
+ private misses;
37
+ private lastRunAt;
38
+ private handle;
39
+ private dueAt;
40
+ private paused;
41
+ private disposed;
42
+ constructor(search: () => void, clock?: TargetSearchClock);
43
+ /** Search now and schedule the next one. No-op while paused. */
44
+ runNow(): void;
45
+ /** The target was found or lost. Starts the matching cadence from now. */
46
+ setMode(mode: TargetSearchMode): void;
47
+ /** Something the target may depend on changed (a registry mount / unmount). */
48
+ trigger(): void;
49
+ /** Restart the backoff and search now (screen change, foreground). */
50
+ rearm(): void;
51
+ /** Stop searching until {@link resume}. */
52
+ pause(): void;
53
+ /** Leave the paused state and search right away. */
54
+ resume(): void;
55
+ dispose(): void;
56
+ private nextDelay;
57
+ private scheduleIn;
58
+ private cancel;
59
+ }
60
+ //# sourceMappingURL=targetSearchSchedule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"targetSearchSchedule.d.ts","sourceRoot":"","sources":["../../../../../../src/surfaces/tooltip/targetSearchSchedule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,yCAAyC;AACzC,eAAO,MAAM,gBAAgB,MAAM,CAAC;AACpC,8DAA8D;AAC9D,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,8CAA8C;AAC9C,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAC3C,+EAA+E;AAC/E,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,GAAG,IAAI,MAAM,CAAC;IACd,UAAU,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;IAC3E,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,GAAG,IAAI,CAAC;CAC3D;AAQD,gFAAgF;AAChF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,qBAAa,oBAAoB;IAW7B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAXxB,OAAO,CAAC,IAAI,CAA+B;IAC3C,kFAAkF;IAClF,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,MAAM,CAA8C;IAC5D,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;gBAGN,MAAM,EAAE,MAAM,IAAI,EAClB,KAAK,GAAE,iBAAgC;IAG1D,gEAAgE;IAChE,MAAM,IAAI,IAAI;IAcd,0EAA0E;IAC1E,OAAO,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI;IAQrC,+EAA+E;IAC/E,OAAO,IAAI,IAAI;IAQf,sEAAsE;IACtE,KAAK,IAAI,IAAI;IAMb,2CAA2C;IAC3C,KAAK,IAAI,IAAI;IAMb,oDAAoD;IACpD,MAAM,IAAI,IAAI;IAMd,OAAO,IAAI,IAAI;IAKf,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,MAAM;CAOf"}
@@ -1,3 +1,3 @@
1
1
  /** Generated by scripts/write-version.mjs — do not edit. */
2
- export declare const SDK_VERSION = "0.4.5";
2
+ export declare const SDK_VERSION = "0.5.0";
3
3
  //# sourceMappingURL=version.d.ts.map
@@ -83,6 +83,22 @@ export declare class AutoAnchorRegistry {
83
83
  private readonly liveContent;
84
84
  private readonly listeners;
85
85
  private notifyScheduled;
86
+ /** Settled {@link AutoAnchorInstance.ambiguous} verdicts by instance id. */
87
+ private readonly ambiguity;
88
+ /**
89
+ * Groups whose verdicts are out of date: `r:` registry key, `t:` template
90
+ * path, `m:` manual id. Mounting a list or reading changed row labels marks
91
+ * a group once; it is settled once, on the next read of a verdict, instead
92
+ * of being recomputed for every member that changed.
93
+ */
94
+ private readonly staleGroups;
95
+ /**
96
+ * Set instead of {@link staleGroups} once that outgrows the registry: with
97
+ * no flow or element condition reading verdicts, marks from list mounts
98
+ * would otherwise pile up for the whole session.
99
+ */
100
+ private allStale;
101
+ private settling;
86
102
  registerInstance(input: RegisterInstanceInput): {
87
103
  instanceId: string;
88
104
  dispose: () => void;
@@ -104,7 +120,9 @@ export declare class AutoAnchorRegistry {
104
120
  *
105
121
  * Direct fiber pointers are preferred; the scan-root index is built lazily
106
122
  * and only if some instance cannot reach its fiber that way (Paper release
107
- * builds, mainly), then reused for the rest of the pass.
123
+ * builds, mainly), then reused for the rest of the pass. Finding which fiber
124
+ * of each pair is committed walks to the root; the pass shares one walk per
125
+ * ancestor across every instance.
108
126
  *
109
127
  * Silent — does not notify listeners.
110
128
  */
@@ -136,14 +154,30 @@ export declare class AutoAnchorRegistry {
136
154
  * peer shares.
137
155
  */
138
156
  private isTwinWithin;
157
+ /**
158
+ * Back {@link AutoAnchorInstance.ambiguous} with a verdict that is settled on
159
+ * read, so callers holding an instance always see the current value.
160
+ */
161
+ private defineAmbiguity;
162
+ /** Every group `inst` belongs to, plus ids it was indexed under before a change. */
163
+ private markStale;
164
+ private groupIds;
139
165
  /**
140
166
  * Instances sharing a template path are only twins while they look alike.
141
167
  * Four rows from one `field()` helper are indistinguishable at register time
142
168
  * and separate once their labels are read, so ambiguity is decided on
143
169
  * content, not on the shared path alone. An instance stays ambiguous when it
144
170
  * carries no content of its own, or when a peer carries the same content.
171
+ * An instance with a manual id is ambiguous only when another shares the id.
172
+ *
173
+ * Each stale group is settled once, in time linear in its size: recomputing
174
+ * a whole group for every member that changed made a list whose labels all
175
+ * changed cost the cube of its length.
145
176
  */
146
- private recomputeAmbiguity;
177
+ private settleAmbiguity;
178
+ private computeAmbiguous;
179
+ /** {@link isTwinWithin} against a whole registry group, with the group's evidence memoized. */
180
+ private isTwinInGroup;
147
181
  private addIndex;
148
182
  private removeIndex;
149
183
  private idsToInstances;
@@ -1 +1 @@
1
- {"version":3,"file":"AutoAnchorRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/AutoAnchorRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutoAnchorRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/AutoAnchorRegistry.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,3 @@
1
- /**
2
- * Shared requestAnimationFrame hub so multiple surfaces never stack loops.
3
- * Mirrors web userflowjs `util/animation-frame.tsx`.
4
- */
5
1
  type Callback = () => void;
6
2
  /**
7
3
  * `callback` runs on every animation frame. Starts the shared loop when the
@@ -1 +1 @@
1
- {"version":3,"file":"animationFrame.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/animationFrame.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAM3B;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAOlE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAQrE;AAED,uEAAuE;AACvE,wBAAgB,2BAA2B,IAAI,IAAI,CAIlD;AAED,kDAAkD;AAClD,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD"}
1
+ {"version":3,"file":"animationFrame.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/animationFrame.ts"],"names":[],"mappings":"AAWA,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAQ3B;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAQlE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CASrE;AAED,uEAAuE;AACvE,wBAAgB,2BAA2B,IAAI,IAAI,CAKlD;AAED,kDAAkD;AAClD,wBAAgB,6BAA6B,IAAI,MAAM,CAEtD"}
@@ -0,0 +1,8 @@
1
+ /** Whether the app is in the foreground right now. */
2
+ export declare function isAppActive(): boolean;
3
+ /**
4
+ * `listener(active)` runs when the app moves between foreground and anything
5
+ * else. Repeated reports of the same side are dropped. Returns an unsubscribe.
6
+ */
7
+ export declare function subscribeAppActive(listener: (active: boolean) => void): () => void;
8
+ //# sourceMappingURL=appActive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appActive.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/appActive.ts"],"names":[],"mappings":"AA4BA,sDAAsD;AACtD,wBAAgB,WAAW,IAAI,OAAO,CAMrC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAqBlF"}
@@ -6,6 +6,9 @@
6
6
  * tooltip target-press monitor uses. The host fiber is the one captured at
7
7
  * touch start, before the press's setState commits a new tree.
8
8
  *
9
+ * A touch that gesture-handler cancels is handed off instead of dropped: the
10
+ * same fiber is emitted if that handler later ends as a tap.
11
+ *
9
12
  * With no subscribers the monitor stores nothing, so the bridge can skip the
10
13
  * fiber lookup entirely.
11
14
  */
@@ -18,18 +21,32 @@ export type ElementTapListener = (tap: ElementTap) => void;
18
21
  export declare class ElementTapMonitor {
19
22
  private readonly listeners;
20
23
  private readonly touchStarts;
24
+ private readonly handoffStops;
21
25
  get subscriberCount(): number;
22
26
  subscribe(listener: ElementTapListener): () => void;
27
+ /** Fingers with a recorded start that have not ended, cancelled, or been handed off. */
28
+ inProgressIdentifiers(): TouchIdentifier[];
29
+ hasTouch(identifier: TouchIdentifier): boolean;
30
+ /** Fiber captured at touch start, or null when this finger is not in progress. */
31
+ startFiber(identifier: TouchIdentifier): AnyFiber | null;
23
32
  handleTouchStart(identifier: TouchIdentifier, pageX: number, pageY: number, targetFiber: AnyFiber | null): void;
24
33
  /**
25
34
  * Emit a tap when this finger started and ended within slop on a resolved
26
35
  * host. Never claims the responder.
27
36
  */
28
37
  handleTouchEnd(identifier: TouchIdentifier, pageX: number, pageY: number): void;
38
+ /**
39
+ * Gesture-handler cancelled this finger. Forget the RN touch and emit the
40
+ * start fiber if that handler later ends as a tap. A start with no fiber
41
+ * cannot latch, so it is dropped.
42
+ */
43
+ handOffTouch(identifier: TouchIdentifier, handlerTags: readonly number[]): void;
29
44
  /** Drop in-progress gesture(s). Omit `identifier` to clear every finger. */
30
45
  cancelTouch(identifier?: TouchIdentifier): void;
31
46
  /** Test helper. */
32
47
  resetForTests(): void;
48
+ private emit;
49
+ private dropHandoffs;
33
50
  }
34
51
  /** Shared singleton used by TargetPressBridge and the element-condition evaluator. */
35
52
  export declare const elementTapMonitor: ElementTapMonitor;
@@ -1 +1 @@
1
- {"version":3,"file":"elementTapMonitor.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/elementTapMonitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,KAAK,eAAe,EAAkC,MAAM,sBAAsB,CAAC;AAE5F,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,QAAQ,CAAC;CACvB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;AAM3D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0C;IAEtE,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAUnD,gBAAgB,CACd,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,QAAQ,GAAG,IAAI,GAC3B,IAAI;IAQP;;;OAGG;IACH,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAkB/E,4EAA4E;IAC5E,WAAW,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI;IAQ/C,mBAAmB;IACnB,aAAa,IAAI,IAAI;CAItB;AAED,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
1
+ {"version":3,"file":"elementTapMonitor.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/elementTapMonitor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,KAAK,eAAe,EAAkC,MAAM,sBAAsB,CAAC;AAE5F,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,QAAQ,CAAC;CACvB;AAED,MAAM,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,UAAU,KAAK,IAAI,CAAC;AAM3D,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA0C;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0C;IAEvE,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,SAAS,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAWnD,wFAAwF;IACxF,qBAAqB,IAAI,eAAe,EAAE;IAI1C,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,OAAO;IAI9C,kFAAkF;IAClF,UAAU,CAAC,UAAU,EAAE,eAAe,GAAG,QAAQ,GAAG,IAAI;IAIxD,gBAAgB,CACd,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,QAAQ,GAAG,IAAI,GAC3B,IAAI;IAQP;;;OAGG;IACH,cAAc,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAS/E;;;;OAIG;IACH,YAAY,CAAC,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAoB/E,4EAA4E;IAC5E,WAAW,CAAC,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI;IAU/C,mBAAmB;IACnB,aAAa,IAAI,IAAI;IAMrB,OAAO,CAAC,IAAI;IAcZ,OAAO,CAAC,YAAY;CAIrB;AAED,sFAAsF;AACtF,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
@@ -9,6 +9,13 @@ import { type AnyFiber } from './fiber/fiberInternals';
9
9
  * shared by every click condition it is delivered to.
10
10
  */
11
11
  export declare function anchorIdsAboveTap(tap: ElementTap): ReadonlySet<string>;
12
+ /**
13
+ * The fiber on `start` (or an ancestor) that carries `anchorId`.
14
+ *
15
+ * The touch-start fiber is kept after the press navigates away, so a click can
16
+ * still match when a live scan of the new screen no longer finds the id.
17
+ */
18
+ export declare function fiberBearingAnchorId(start: AnyFiber, anchorId: string): AnyFiber | null;
12
19
  export declare function sameFiber(a: AnyFiber, b: AnyFiber): boolean;
13
20
  /** True when `node` is `host` or a descendant of it. */
14
21
  export declare function fiberIsUnder(node: AnyFiber, host: AnyFiber): boolean;