@userflow-tech/react-native 0.3.0 → 0.4.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 (253) hide show
  1. package/README.md +360 -70
  2. package/docs/anchoring.md +58 -42
  3. package/docs/troubleshooting.md +69 -27
  4. package/expo-plugin/hostDependencyWarnings.d.ts +21 -0
  5. package/expo-plugin/hostDependencyWarnings.d.ts.map +1 -0
  6. package/expo-plugin/hostDependencyWarnings.js +101 -0
  7. package/expo-plugin/hostDependencyWarnings.js.map +1 -0
  8. package/expo-plugin/withUserflow.d.ts.map +1 -1
  9. package/expo-plugin/withUserflow.js +16 -0
  10. package/expo-plugin/withUserflow.js.map +1 -1
  11. package/lib/commonjs/anchors/AnchorRegistry.js +7 -0
  12. package/lib/commonjs/anchors/AnchorRegistry.js.map +1 -1
  13. package/lib/commonjs/anchors/elementConditionEvaluator.js +189 -55
  14. package/lib/commonjs/anchors/elementConditionEvaluator.js.map +1 -1
  15. package/lib/commonjs/anchors/elementTapMonitor.js +92 -0
  16. package/lib/commonjs/anchors/elementTapMonitor.js.map +1 -0
  17. package/lib/commonjs/anchors/elementTargetMatch.js +85 -0
  18. package/lib/commonjs/anchors/elementTargetMatch.js.map +1 -0
  19. package/lib/commonjs/anchors/fiber/findAnchorFiber.js +64 -39
  20. package/lib/commonjs/anchors/fiber/findAnchorFiber.js.map +1 -1
  21. package/lib/commonjs/anchors/fiber/touchTargetFiber.js +105 -0
  22. package/lib/commonjs/anchors/fiber/touchTargetFiber.js.map +1 -0
  23. package/lib/commonjs/anchors/resolveAnchorHost.js +2 -1
  24. package/lib/commonjs/anchors/resolveAnchorHost.js.map +1 -1
  25. package/lib/commonjs/anchors/resolveAutoAnchorHost.js +4 -2
  26. package/lib/commonjs/anchors/resolveAutoAnchorHost.js.map +1 -1
  27. package/lib/commonjs/anchors/resolveElementTargets.js +158 -0
  28. package/lib/commonjs/anchors/resolveElementTargets.js.map +1 -0
  29. package/lib/commonjs/anchors/targetPressMonitor.js +9 -3
  30. package/lib/commonjs/anchors/targetPressMonitor.js.map +1 -1
  31. package/lib/commonjs/anchors/useUserflowAnchor.js +1 -0
  32. package/lib/commonjs/anchors/useUserflowAnchor.js.map +1 -1
  33. package/lib/commonjs/anonymousId.js +16 -7
  34. package/lib/commonjs/anonymousId.js.map +1 -1
  35. package/lib/commonjs/authoring/capturePickerScreenshot.js +9 -1
  36. package/lib/commonjs/authoring/capturePickerScreenshot.js.map +1 -1
  37. package/lib/commonjs/evalJs/getWebView.js +5 -13
  38. package/lib/commonjs/evalJs/getWebView.js.map +1 -1
  39. package/lib/commonjs/hostAppVersion.js +6 -1
  40. package/lib/commonjs/hostAppVersion.js.map +1 -1
  41. package/lib/commonjs/index.js +5 -0
  42. package/lib/commonjs/index.js.map +1 -1
  43. package/lib/commonjs/installCheck.js +183 -0
  44. package/lib/commonjs/installCheck.js.map +1 -0
  45. package/lib/commonjs/nativeModules.js +44 -0
  46. package/lib/commonjs/nativeModules.js.map +1 -0
  47. package/lib/commonjs/network.js +20 -7
  48. package/lib/commonjs/network.js.map +1 -1
  49. package/lib/commonjs/pairing/deviceId.js +14 -11
  50. package/lib/commonjs/pairing/deviceId.js.map +1 -1
  51. package/lib/commonjs/pairing/tokenStorage.js +17 -4
  52. package/lib/commonjs/pairing/tokenStorage.js.map +1 -1
  53. package/lib/commonjs/runtime/TargetPressBridge.js +12 -1
  54. package/lib/commonjs/runtime/TargetPressBridge.js.map +1 -1
  55. package/lib/commonjs/runtime/UserflowProvider.js +6 -3
  56. package/lib/commonjs/runtime/UserflowProvider.js.map +1 -1
  57. package/lib/commonjs/storage/asyncStorage.js +67 -0
  58. package/lib/commonjs/storage/asyncStorage.js.map +1 -0
  59. package/lib/commonjs/surfaces/BannerSurface.js +3 -1
  60. package/lib/commonjs/surfaces/BannerSurface.js.map +1 -1
  61. package/lib/commonjs/surfaces/safeArea.js +74 -28
  62. package/lib/commonjs/surfaces/safeArea.js.map +1 -1
  63. package/lib/commonjs/version.js +1 -1
  64. package/lib/module/anchors/AnchorRegistry.js +7 -0
  65. package/lib/module/anchors/AnchorRegistry.js.map +1 -1
  66. package/lib/module/anchors/elementConditionEvaluator.js +189 -55
  67. package/lib/module/anchors/elementConditionEvaluator.js.map +1 -1
  68. package/lib/module/anchors/elementTapMonitor.js +87 -0
  69. package/lib/module/anchors/elementTapMonitor.js.map +1 -0
  70. package/lib/module/anchors/elementTargetMatch.js +78 -0
  71. package/lib/module/anchors/elementTargetMatch.js.map +1 -0
  72. package/lib/module/anchors/fiber/findAnchorFiber.js +62 -39
  73. package/lib/module/anchors/fiber/findAnchorFiber.js.map +1 -1
  74. package/lib/module/anchors/fiber/touchTargetFiber.js +100 -0
  75. package/lib/module/anchors/fiber/touchTargetFiber.js.map +1 -0
  76. package/lib/module/anchors/resolveAnchorHost.js +2 -1
  77. package/lib/module/anchors/resolveAnchorHost.js.map +1 -1
  78. package/lib/module/anchors/resolveAutoAnchorHost.js +3 -3
  79. package/lib/module/anchors/resolveAutoAnchorHost.js.map +1 -1
  80. package/lib/module/anchors/resolveElementTargets.js +152 -0
  81. package/lib/module/anchors/resolveElementTargets.js.map +1 -0
  82. package/lib/module/anchors/targetPressMonitor.js +8 -3
  83. package/lib/module/anchors/targetPressMonitor.js.map +1 -1
  84. package/lib/module/anchors/useUserflowAnchor.js +1 -0
  85. package/lib/module/anchors/useUserflowAnchor.js.map +1 -1
  86. package/lib/module/anonymousId.js +15 -5
  87. package/lib/module/anonymousId.js.map +1 -1
  88. package/lib/module/authoring/capturePickerScreenshot.js +9 -1
  89. package/lib/module/authoring/capturePickerScreenshot.js.map +1 -1
  90. package/lib/module/evalJs/getWebView.js +5 -13
  91. package/lib/module/evalJs/getWebView.js.map +1 -1
  92. package/lib/module/hostAppVersion.js +6 -1
  93. package/lib/module/hostAppVersion.js.map +1 -1
  94. package/lib/module/index.js +5 -0
  95. package/lib/module/index.js.map +1 -1
  96. package/lib/module/installCheck.js +169 -0
  97. package/lib/module/installCheck.js.map +1 -0
  98. package/lib/module/nativeModules.js +40 -0
  99. package/lib/module/nativeModules.js.map +1 -0
  100. package/lib/module/network.js +20 -7
  101. package/lib/module/network.js.map +1 -1
  102. package/lib/module/pairing/deviceId.js +14 -10
  103. package/lib/module/pairing/deviceId.js.map +1 -1
  104. package/lib/module/pairing/tokenStorage.js +17 -4
  105. package/lib/module/pairing/tokenStorage.js.map +1 -1
  106. package/lib/module/runtime/TargetPressBridge.js +12 -1
  107. package/lib/module/runtime/TargetPressBridge.js.map +1 -1
  108. package/lib/module/runtime/UserflowProvider.js +7 -4
  109. package/lib/module/runtime/UserflowProvider.js.map +1 -1
  110. package/lib/module/storage/asyncStorage.js +61 -0
  111. package/lib/module/storage/asyncStorage.js.map +1 -0
  112. package/lib/module/surfaces/BannerSurface.js +3 -1
  113. package/lib/module/surfaces/BannerSurface.js.map +1 -1
  114. package/lib/module/surfaces/safeArea.js +70 -28
  115. package/lib/module/surfaces/safeArea.js.map +1 -1
  116. package/lib/module/version.js +1 -1
  117. package/lib/typescript/commonjs/src/anchors/AnchorRegistry.d.ts +7 -0
  118. package/lib/typescript/commonjs/src/anchors/AnchorRegistry.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/anchors/elementConditionEvaluator.d.ts +12 -16
  120. package/lib/typescript/commonjs/src/anchors/elementConditionEvaluator.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts +36 -0
  122. package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts.map +1 -0
  123. package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts +20 -0
  124. package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts.map +1 -0
  125. package/lib/typescript/commonjs/src/anchors/fiber/findAnchorFiber.d.ts +17 -5
  126. package/lib/typescript/commonjs/src/anchors/fiber/findAnchorFiber.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/src/anchors/fiber/touchTargetFiber.d.ts +24 -0
  128. package/lib/typescript/commonjs/src/anchors/fiber/touchTargetFiber.d.ts.map +1 -0
  129. package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts +2 -1
  130. package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts +10 -1
  132. package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/anchors/resolveElementTargets.d.ts +39 -0
  134. package/lib/typescript/commonjs/src/anchors/resolveElementTargets.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts +2 -0
  136. package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/src/anchors/useUserflowAnchor.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/src/anonymousId.d.ts +2 -0
  139. package/lib/typescript/commonjs/src/anonymousId.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/src/authoring/capturePickerScreenshot.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/src/evalJs/getWebView.d.ts +2 -1
  142. package/lib/typescript/commonjs/src/evalJs/getWebView.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/src/hostAppVersion.d.ts +1 -1
  144. package/lib/typescript/commonjs/src/hostAppVersion.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/src/installCheck.d.ts +48 -0
  147. package/lib/typescript/commonjs/src/installCheck.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/src/nativeModules.d.ts +13 -0
  149. package/lib/typescript/commonjs/src/nativeModules.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/src/network.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/src/pairing/deviceId.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/src/pairing/tokenStorage.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts +2 -1
  154. package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/src/runtime/UserflowProvider.d.ts.map +1 -1
  156. package/lib/typescript/commonjs/src/storage/asyncStorage.d.ts +15 -0
  157. package/lib/typescript/commonjs/src/storage/asyncStorage.d.ts.map +1 -0
  158. package/lib/typescript/commonjs/src/surfaces/BannerSurface.d.ts.map +1 -1
  159. package/lib/typescript/commonjs/src/surfaces/safeArea.d.ts +6 -2
  160. package/lib/typescript/commonjs/src/surfaces/safeArea.d.ts.map +1 -1
  161. package/lib/typescript/commonjs/src/version.d.ts +1 -1
  162. package/lib/typescript/module/src/anchors/AnchorRegistry.d.ts +7 -0
  163. package/lib/typescript/module/src/anchors/AnchorRegistry.d.ts.map +1 -1
  164. package/lib/typescript/module/src/anchors/elementConditionEvaluator.d.ts +12 -16
  165. package/lib/typescript/module/src/anchors/elementConditionEvaluator.d.ts.map +1 -1
  166. package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts +36 -0
  167. package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts.map +1 -0
  168. package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts +20 -0
  169. package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts.map +1 -0
  170. package/lib/typescript/module/src/anchors/fiber/findAnchorFiber.d.ts +17 -5
  171. package/lib/typescript/module/src/anchors/fiber/findAnchorFiber.d.ts.map +1 -1
  172. package/lib/typescript/module/src/anchors/fiber/touchTargetFiber.d.ts +24 -0
  173. package/lib/typescript/module/src/anchors/fiber/touchTargetFiber.d.ts.map +1 -0
  174. package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts +2 -1
  175. package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts.map +1 -1
  176. package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts +10 -1
  177. package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
  178. package/lib/typescript/module/src/anchors/resolveElementTargets.d.ts +39 -0
  179. package/lib/typescript/module/src/anchors/resolveElementTargets.d.ts.map +1 -0
  180. package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts +2 -0
  181. package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts.map +1 -1
  182. package/lib/typescript/module/src/anchors/useUserflowAnchor.d.ts.map +1 -1
  183. package/lib/typescript/module/src/anonymousId.d.ts +2 -0
  184. package/lib/typescript/module/src/anonymousId.d.ts.map +1 -1
  185. package/lib/typescript/module/src/authoring/capturePickerScreenshot.d.ts.map +1 -1
  186. package/lib/typescript/module/src/evalJs/getWebView.d.ts +2 -1
  187. package/lib/typescript/module/src/evalJs/getWebView.d.ts.map +1 -1
  188. package/lib/typescript/module/src/hostAppVersion.d.ts +1 -1
  189. package/lib/typescript/module/src/hostAppVersion.d.ts.map +1 -1
  190. package/lib/typescript/module/src/index.d.ts.map +1 -1
  191. package/lib/typescript/module/src/installCheck.d.ts +48 -0
  192. package/lib/typescript/module/src/installCheck.d.ts.map +1 -0
  193. package/lib/typescript/module/src/nativeModules.d.ts +13 -0
  194. package/lib/typescript/module/src/nativeModules.d.ts.map +1 -0
  195. package/lib/typescript/module/src/network.d.ts.map +1 -1
  196. package/lib/typescript/module/src/pairing/deviceId.d.ts.map +1 -1
  197. package/lib/typescript/module/src/pairing/tokenStorage.d.ts.map +1 -1
  198. package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts +2 -1
  199. package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts.map +1 -1
  200. package/lib/typescript/module/src/runtime/UserflowProvider.d.ts.map +1 -1
  201. package/lib/typescript/module/src/storage/asyncStorage.d.ts +15 -0
  202. package/lib/typescript/module/src/storage/asyncStorage.d.ts.map +1 -0
  203. package/lib/typescript/module/src/surfaces/BannerSurface.d.ts.map +1 -1
  204. package/lib/typescript/module/src/surfaces/safeArea.d.ts +6 -2
  205. package/lib/typescript/module/src/surfaces/safeArea.d.ts.map +1 -1
  206. package/lib/typescript/module/src/version.d.ts +1 -1
  207. package/package.json +25 -8
  208. package/src/anchors/AnchorRegistry.ts +12 -0
  209. package/src/anchors/elementConditionEvaluator.ts +235 -70
  210. package/src/anchors/elementTapMonitor.ts +95 -0
  211. package/src/anchors/elementTargetMatch.ts +90 -0
  212. package/src/anchors/fiber/findAnchorFiber.ts +66 -35
  213. package/src/anchors/fiber/touchTargetFiber.ts +125 -0
  214. package/src/anchors/resolveAnchorHost.ts +2 -1
  215. package/src/anchors/resolveAutoAnchorHost.ts +3 -3
  216. package/src/anchors/resolveElementTargets.ts +165 -0
  217. package/src/anchors/targetPressMonitor.ts +12 -3
  218. package/src/anchors/useUserflowAnchor.ts +1 -0
  219. package/src/anonymousId.ts +19 -8
  220. package/src/authoring/capturePickerScreenshot.ts +10 -1
  221. package/src/evalJs/getWebView.ts +6 -13
  222. package/src/hostAppVersion.ts +7 -1
  223. package/src/index.ts +10 -0
  224. package/src/installCheck.ts +225 -0
  225. package/src/nativeModules.ts +48 -0
  226. package/src/network.ts +27 -11
  227. package/src/pairing/deviceId.ts +14 -11
  228. package/src/pairing/tokenStorage.ts +23 -7
  229. package/src/runtime/TargetPressBridge.tsx +17 -1
  230. package/src/runtime/UserflowProvider.tsx +11 -4
  231. package/src/storage/asyncStorage.ts +88 -0
  232. package/src/surfaces/BannerSurface.tsx +7 -5
  233. package/src/surfaces/safeArea.ts +85 -40
  234. package/src/version.ts +1 -1
  235. package/vendor/core/dist/constants.d.ts +2 -0
  236. package/vendor/core/dist/constants.d.ts.map +1 -1
  237. package/vendor/core/dist/constants.js +2 -0
  238. package/vendor/core/dist/constants.js.map +1 -1
  239. package/vendor/core/dist/engine/ClientConditionEngine.d.ts +20 -1
  240. package/vendor/core/dist/engine/ClientConditionEngine.d.ts.map +1 -1
  241. package/vendor/core/dist/engine/ClientConditionEngine.js +13 -10
  242. package/vendor/core/dist/engine/ClientConditionEngine.js.map +1 -1
  243. package/vendor/core/dist/engine/UserflowCore.d.ts.map +1 -1
  244. package/vendor/core/dist/engine/UserflowCore.js +21 -2
  245. package/vendor/core/dist/engine/UserflowCore.js.map +1 -1
  246. package/vendor/core/dist/index.d.ts +1 -1
  247. package/vendor/core/dist/index.d.ts.map +1 -1
  248. package/vendor/core/dist/index.js.map +1 -1
  249. package/vendor/core/dist/version.d.ts +1 -1
  250. package/vendor/core/dist/version.js +1 -1
  251. package/vendor/core/package.json +1 -1
  252. package/vendor/protocol/package.json +1 -1
  253. package/docs/webview-custom-banner-poc.md +0 -64
@@ -12,28 +12,62 @@ const MAX_NODES = 60_000;
12
12
 
13
13
  /** One production warning per process — truncation must not look like "missing". */
14
14
  let maxNodesWarned = false;
15
- const TIER_ORDER = ['testID', 'nativeID', 'accessibilityLabel'];
15
+ /** Props an anchor id can sit on, strongest first. */
16
+ export const ANCHOR_PROP_TIERS = ['userflowId', 'testID', 'nativeID', 'accessibilityLabel'];
17
+
18
+ /** Every collapsed host of the winning tier. Duplicates stay in the list. */
19
+
16
20
  /**
17
21
  * Bounded DFS under `rootFiber` looking for fibers whose memoizedProps match
18
- * `id` on testID, then nativeID, then accessibilityLabel. Uses the highest
19
- * tier that has any match so a testID hit is never made ambiguous by an
20
- * unrelated accessibilityLabel.
22
+ * `id` on userflowId, then testID, then nativeID, then accessibilityLabel.
23
+ * Uses the highest tier that has any match so a testID hit is never made
24
+ * ambiguous by an unrelated accessibilityLabel.
21
25
  *
22
26
  * A composite match resolves to the host beneath it that carries the same id
23
27
  * (e.g. a tab item that wraps its button in a View and forwards testID to the
24
28
  * button), else to its shallowest host descendant. Multiple matches on a single
25
29
  * root-to-leaf chain (e.g. Pressable forwarding testID to its inner View)
26
- * collapse to the outermost host. Disjoint matches fail closed as ambiguous.
30
+ * collapse to the outermost host. Disjoint matches stay in the list returned by
31
+ * {@link findAnchorFibers}; {@link findAnchorFiber} fails closed on those.
27
32
  *
28
33
  * The walk never follows `rootFiber.sibling` so the Userflow overlay (a sibling
29
34
  * of {@link FiberScanRoot} in UserflowProvider) cannot self-match SDK testIDs.
30
35
  */
31
- export function findAnchorFiber(rootFiber, id) {
36
+ export function findAnchorFibers(rootFiber, id) {
32
37
  if (!rootFiber || !id) return {
33
38
  status: 'missing'
34
39
  };
40
+ const won = winningTier(rootFiber, id);
41
+ if (!won) return {
42
+ status: 'missing'
43
+ };
44
+ return {
45
+ status: 'found',
46
+ fibers: won.hosts,
47
+ tier: won.tier
48
+ };
49
+ }
50
+ export function findAnchorFiber(rootFiber, id) {
51
+ const many = findAnchorFibers(rootFiber, id);
52
+ if (many.status === 'missing') return {
53
+ status: 'missing'
54
+ };
55
+ if (many.fibers.length === 1) {
56
+ return {
57
+ status: 'found',
58
+ fiber: many.fibers[0],
59
+ tier: many.tier
60
+ };
61
+ }
62
+ return {
63
+ status: 'ambiguous',
64
+ tier: many.tier
65
+ };
66
+ }
67
+ function winningTier(rootFiber, id) {
35
68
  try {
36
69
  const byTier = {
70
+ userflowId: [],
37
71
  testID: [],
38
72
  nativeID: [],
39
73
  accessibilityLabel: []
@@ -44,6 +78,9 @@ export function findAnchorFiber(rootFiber, id) {
44
78
  } = walkVisibleFibers(rootFiber, fiber => {
45
79
  const props = getMemoizedProps(fiber);
46
80
  if (!props) return;
81
+ if (typeof props.userflowId === 'string' && props.userflowId === id) {
82
+ byTier.userflowId.push(fiber);
83
+ }
47
84
  if (typeof props.testID === 'string' && props.testID === id) {
48
85
  byTier.testID.push(fiber);
49
86
  }
@@ -55,48 +92,34 @@ export function findAnchorFiber(rootFiber, id) {
55
92
  }
56
93
  }, MAX_NODES);
57
94
  if (truncated || visited >= MAX_NODES) {
58
- // Truncation would otherwise look exactly like "the anchor isn't there".
59
- // eslint-disable-next-line no-console -- actionable: the anchor may exist but was not reached
60
- const warn = message => console.warn(message);
61
- if (__DEV__) {
62
- warn(`[Userflow] Anchor scan for "${id}" stopped after ${MAX_NODES} nodes. ` + `The element may exist but was not reached. Register it explicitly with ` + `useUserflowAnchor("${id}") to skip the scan.`);
63
- } else if (!maxNodesWarned) {
64
- maxNodesWarned = true;
65
- warn(`[Userflow] Anchor scan stopped after ${MAX_NODES} nodes; some anchors may ` + `be missed. Prefer useUserflowAnchor for deep or dense trees.`);
66
- }
95
+ warnScanTruncated(id);
67
96
  }
68
- for (const tier of TIER_ORDER) {
97
+ for (const tier of ANCHOR_PROP_TIERS) {
69
98
  const matches = byTier[tier];
70
99
  if (matches.length === 0) continue;
71
100
  const hosts = uniqueHosts(matches);
72
101
  if (hosts.length === 0) continue;
73
- if (hosts.length === 1) {
74
- return {
75
- status: 'found',
76
- fiber: hosts[0],
77
- tier
78
- };
79
- }
80
- const collapsed = collapseToChains(hosts);
81
- if (collapsed.length === 1) {
82
- return {
83
- status: 'found',
84
- fiber: collapsed[0],
85
- tier
86
- };
87
- }
88
102
  return {
89
- status: 'ambiguous',
90
- tier
103
+ tier,
104
+ hosts: collapseToChains(hosts)
91
105
  };
92
106
  }
93
- return {
94
- status: 'missing'
95
- };
107
+ return null;
96
108
  } catch {
97
- return {
98
- status: 'missing'
99
- };
109
+ return null;
110
+ }
111
+ }
112
+ function warnScanTruncated(id) {
113
+ // Truncation would otherwise look exactly like "the anchor isn't there".
114
+ // eslint-disable-next-line no-console -- actionable: the anchor may exist but was not reached
115
+ const warn = message => console.warn(message);
116
+ if (__DEV__) {
117
+ warn(`[Userflow] Anchor scan for "${id}" stopped after ${MAX_NODES} nodes. ` + `The element may exist but was not reached. Register it explicitly with ` + `useUserflowAnchor("${id}") to skip the scan.`);
118
+ return;
119
+ }
120
+ if (!maxNodesWarned) {
121
+ maxNodesWarned = true;
122
+ warn(`[Userflow] Anchor scan stopped after ${MAX_NODES} nodes; some anchors may ` + `be missed. Prefer useUserflowAnchor for deep or dense trees.`);
100
123
  }
101
124
  }
102
125
 
@@ -1 +1 @@
1
- {"version":3,"names":["MAX_ANCESTOR_WALK","getChild","getMemoizedProps","getReturn","getSibling","isHostFiber","walkVisibleFibers","MAX_NODES","maxNodesWarned","TIER_ORDER","findAnchorFiber","rootFiber","id","status","byTier","testID","nativeID","accessibilityLabel","visited","truncated","fiber","props","push","warn","message","console","__DEV__","tier","matches","length","hosts","uniqueHosts","collapsed","collapseToChains","forwarded","forwardedHostMatches","seen","Set","out","match","host","compositeHost","get","identity","alternate","has","add","composite","carriers","chains","nearestHostDescendant","composites","Map","set","size","cur","depth","maxNodes","queue","f","shift","child","survivors","candidate","dominated","i","other","isAncestorOf","splice","ancestor","descendant"],"sourceRoot":"../../../../src","sources":["anchors/fiber/findAnchorFiber.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["MAX_ANCESTOR_WALK","getChild","getMemoizedProps","getReturn","getSibling","isHostFiber","walkVisibleFibers","MAX_NODES","maxNodesWarned","ANCHOR_PROP_TIERS","findAnchorFibers","rootFiber","id","status","won","winningTier","fibers","hosts","tier","findAnchorFiber","many","length","fiber","byTier","userflowId","testID","nativeID","accessibilityLabel","visited","truncated","props","push","warnScanTruncated","matches","uniqueHosts","collapseToChains","warn","message","console","__DEV__","forwarded","forwardedHostMatches","seen","Set","out","match","host","compositeHost","get","identity","alternate","has","add","composite","carriers","chains","nearestHostDescendant","composites","Map","set","size","cur","depth","maxNodes","queue","f","shift","child","survivors","candidate","dominated","i","other","isAncestorOf","splice","ancestor","descendant"],"sourceRoot":"../../../../src","sources":["anchors/fiber/findAnchorFiber.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Host fiber under a touch, resolved synchronously from the responder event.
5
+ *
6
+ * Feature-detected and never throws. A renderer that does not expose any of
7
+ * these pointers degrades to "no target", so a click condition simply does not
8
+ * latch.
9
+ *
10
+ * Order:
11
+ * 1. `event._targetInst` (React's fiber for the touched component)
12
+ * 2. `event.target` public instance via {@link lookupHostFiber}
13
+ * 3. The touch's native tag (`changedTouches[].target`, else `nativeEvent.target`)
14
+ * via the scan-root host index
15
+ */
16
+
17
+ import { isHostFiber, isReactFiber, nativeTagFromHostFiber, resolveCurrentFiber } from "./fiberInternals.js";
18
+ import { nearestHostDescendant } from "./findAnchorFiber.js";
19
+ import { createLazyHostFiberIndex, lookupHostFiber } from "./indexHostFibers.js";
20
+ export function touchTargetFiber(event, identifier) {
21
+ try {
22
+ const tag = nativeTagForTouch(event, identifier);
23
+ const fromInst = hostFromFiber(readTargetInst(event));
24
+ if (fromInst && tagMatches(fromInst, tag)) return fromInst;
25
+ const fromInstance = hostFromInstance(event.target);
26
+ if (fromInstance && tagMatches(fromInstance, tag)) return fromInstance;
27
+ if (tag === undefined) return null;
28
+ // The event-level fibers belong to another finger's view, so only the
29
+ // index can name this one. A miss must not fall back to theirs.
30
+ return createLazyHostFiberIndex()().byNativeTag.get(tag) ?? null;
31
+ } catch {
32
+ return null;
33
+ }
34
+ }
35
+
36
+ /**
37
+ * Fabric sends one touch event per touched view, and each lists every finger
38
+ * that changed. True when `identifier`'s finger is on this event's own view,
39
+ * so a caller can record each finger once, from its own event, instead of
40
+ * overwriting it from another finger's. Unreadable tags count as this event's.
41
+ */
42
+ export function touchBelongsToEvent(event, identifier) {
43
+ try {
44
+ const tag = nativeTagForTouch(event, identifier);
45
+ if (tag === undefined) return true;
46
+ const own = hostFromFiber(readTargetInst(event)) ?? hostFromInstance(event.target);
47
+ return own == null || tagMatches(own, tag);
48
+ } catch {
49
+ return true;
50
+ }
51
+ }
52
+ function readTargetInst(event) {
53
+ return event._targetInst;
54
+ }
55
+ function nativeTagForTouch(event, identifier) {
56
+ const native = event.nativeEvent;
57
+ if (identifier != null && native.changedTouches) {
58
+ const touch = native.changedTouches.find(entry => entry.identifier === identifier);
59
+ const touchTag = asTag(touch?.target);
60
+ if (touchTag !== undefined) return touchTag;
61
+ }
62
+ return asTag(native.target);
63
+ }
64
+ function asTag(value) {
65
+ return typeof value === 'number' && Number.isFinite(value) ? value : undefined;
66
+ }
67
+
68
+ /**
69
+ * Accept a host whose tag we cannot read (test renderer, older Paper). Reject
70
+ * only when both sides have a tag and they differ — that event-level fiber
71
+ * belongs to a different finger.
72
+ */
73
+ function tagMatches(fiber, tag) {
74
+ if (tag === undefined) return true;
75
+ const fiberTag = nativeTagFromHostFiber(fiber);
76
+ if (fiberTag === undefined) return true;
77
+ return fiberTag === tag;
78
+ }
79
+ function hostFromFiber(value) {
80
+ if (!isReactFiber(value)) return null;
81
+ try {
82
+ const current = resolveCurrentFiber(value);
83
+ if (isHostFiber(current)) return current;
84
+ return nearestHostDescendant(current);
85
+ } catch {
86
+ return null;
87
+ }
88
+ }
89
+ function hostFromInstance(value) {
90
+ if (!value || typeof value !== 'object') return null;
91
+ try {
92
+ const fiber = lookupHostFiber(createLazyHostFiberIndex(), value);
93
+ if (!fiber) return null;
94
+ if (isHostFiber(fiber)) return fiber;
95
+ return nearestHostDescendant(fiber);
96
+ } catch {
97
+ return null;
98
+ }
99
+ }
100
+ //# sourceMappingURL=touchTargetFiber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["isHostFiber","isReactFiber","nativeTagFromHostFiber","resolveCurrentFiber","nearestHostDescendant","createLazyHostFiberIndex","lookupHostFiber","touchTargetFiber","event","identifier","tag","nativeTagForTouch","fromInst","hostFromFiber","readTargetInst","tagMatches","fromInstance","hostFromInstance","target","undefined","byNativeTag","get","touchBelongsToEvent","own","_targetInst","native","nativeEvent","changedTouches","touch","find","entry","touchTag","asTag","value","Number","isFinite","fiber","fiberTag","current"],"sourceRoot":"../../../../src","sources":["anchors/fiber/touchTargetFiber.ts"],"mappings":"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","ignoreList":[]}
@@ -30,7 +30,8 @@ export function invalidateFiberAnchor(id) {
30
30
  *
31
31
  * Tier 0: {@link anchorRegistry} (`useUserflowAnchor`) — higher priority, fails
32
32
  * closed on ambiguous registry keys.
33
- * Tier 1+: fiber scan for `testID`, then `nativeID`, then `accessibilityLabel`.
33
+ * Tier 1+: fiber scan for `userflowId`, then `testID`, then `nativeID`, then
34
+ * `accessibilityLabel`.
34
35
  *
35
36
  * Synchronous (the walk is pure JS; only measurement is async via the returned
36
37
  * host). Caches the resolved fiber per id and revalidates cheaply before reuse.
@@ -1 +1 @@
1
- {"version":3,"names":["anchorRegistry","fiberScanRoot","isFiberMounted","findAnchorFiber","createFiberMeasureInWindow","isFiberOnVisibleScreen","clearFiberAnchorCache","clearCache","deleteCachedFiberAnchor","getCachedFiberAnchor","getFiberAnchorScreenKey","invalidateFiberAnchor","dropCachedFiberAnchor","notifyAnchorScreenChange","onAnchorScreenChange","setCachedFiberAnchor","screenKey","id","resolveAnchorHost","status","isAmbiguous","registered","get","host","cached","currentScreenKey","fiber","measureInWindow","root","getFiber","result"],"sourceRoot":"../../../src","sources":["anchors/resolveAnchorHost.ts"],"mappings":";;AAAA,SAA0BA,cAAc,QAAQ,qBAAkB;AAClE,SAASC,aAAa,QAAQ,0BAAuB;AAErD,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,eAAe,QAAQ,4BAAyB;AACzD,SAASC,0BAA0B,QAAQ,6BAA0B;AACrE,SAASC,sBAAsB,QAAQ,2BAAwB;AAC/D,SACEC,qBAAqB,IAAIC,UAAU,EACnCC,uBAAuB,EACvBC,oBAAoB,EACpBC,uBAAuB,EACvBC,qBAAqB,IAAIC,qBAAqB,EAC9CC,wBAAwB,IAAIC,oBAAoB,EAChDC,oBAAoB,QACf,uBAAoB;AAO3B;AACA,OAAO,SAASF,wBAAwBA,CAACG,SAAwB,EAAQ;EACvEF,oBAAoB,CAACE,SAAS,CAAC;AACjC;;AAEA;AACA,OAAO,SAASV,qBAAqBA,CAAA,EAAS;EAC5CC,UAAU,CAAC,CAAC;AACd;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASI,qBAAqBA,CAACM,EAAU,EAAQ;EACtDL,qBAAqB,CAACK,EAAE,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACD,EAAU,EAAoB;EAC9D,IAAI,CAACA,EAAE,EAAE,OAAO;IAAEE,MAAM,EAAE;EAAU,CAAC;;EAErC;EACA,IAAInB,cAAc,CAACoB,WAAW,CAACH,EAAE,CAAC,EAAE;IAClC,OAAO;MAAEE,MAAM,EAAE;IAAY,CAAC;EAChC;EACA,MAAME,UAAU,GAAGrB,cAAc,CAACsB,GAAG,CAACL,EAAE,CAAC;EACzC,IAAII,UAAU,EAAE;IACd,OAAO;MAAEF,MAAM,EAAE,OAAO;MAAEI,IAAI,EAAEF;IAAW,CAAC;EAC9C;;EAEA;EACA;EACA,MAAMG,MAAM,GAAGf,oBAAoB,CAACQ,EAAE,CAAC;EACvC,MAAMQ,gBAAgB,GAAGf,uBAAuB,CAAC,CAAC;EAClD,IACEc,MAAM,IACNA,MAAM,CAACR,SAAS,KAAKS,gBAAgB,IACrCvB,cAAc,CAACsB,MAAM,CAACE,KAAK,CAAC,IAC5BrB,sBAAsB,CAACmB,MAAM,CAACE,KAAK,CAAC,EACpC;IACA,OAAO;MACLP,MAAM,EAAE,OAAO;MACfI,IAAI,EAAE;QAAEI,eAAe,EAAEvB,0BAA0B,CAACoB,MAAM,CAACE,KAAK;MAAE,CAAC;MACnEA,KAAK,EAAEF,MAAM,CAACE;IAChB,CAAC;EACH;EACA,IAAIF,MAAM,EAAE;IACVhB,uBAAuB,CAACS,EAAE,CAAC;EAC7B;EAEA,MAAMW,IAAI,GAAG3B,aAAa,CAAC4B,QAAQ,CAAC,CAAC;EACrC,IAAI,CAACD,IAAI,EAAE;IACT,OAAO;MAAET,MAAM,EAAE;IAAU,CAAC;EAC9B;EAEA,MAAMW,MAAM,GAAG3B,eAAe,CAACyB,IAAI,EAAEX,EAAE,CAAC;EACxC,IAAIa,MAAM,CAACX,MAAM,KAAK,WAAW,EAAE;IACjC,OAAO;MAAEA,MAAM,EAAE;IAAY,CAAC;EAChC;EACA,IAAIW,MAAM,CAACX,MAAM,KAAK,SAAS,EAAE;IAC/B,OAAO;MAAEA,MAAM,EAAE;IAAU,CAAC;EAC9B;EAEAJ,oBAAoB,CAACE,EAAE,EAAEa,MAAM,CAACJ,KAAK,CAAC;EACtC,OAAO;IACLP,MAAM,EAAE,OAAO;IACfI,IAAI,EAAE;MAAEI,eAAe,EAAEvB,0BAA0B,CAAC0B,MAAM,CAACJ,KAAK;IAAE,CAAC;IACnEA,KAAK,EAAEI,MAAM,CAACJ;EAChB,CAAC;AACH","ignoreList":[]}
1
+ {"version":3,"names":["anchorRegistry","fiberScanRoot","isFiberMounted","findAnchorFiber","createFiberMeasureInWindow","isFiberOnVisibleScreen","clearFiberAnchorCache","clearCache","deleteCachedFiberAnchor","getCachedFiberAnchor","getFiberAnchorScreenKey","invalidateFiberAnchor","dropCachedFiberAnchor","notifyAnchorScreenChange","onAnchorScreenChange","setCachedFiberAnchor","screenKey","id","resolveAnchorHost","status","isAmbiguous","registered","get","host","cached","currentScreenKey","fiber","measureInWindow","root","getFiber","result"],"sourceRoot":"../../../src","sources":["anchors/resolveAnchorHost.ts"],"mappings":";;AAAA,SAA0BA,cAAc,QAAQ,qBAAkB;AAClE,SAASC,aAAa,QAAQ,0BAAuB;AAErD,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,eAAe,QAAQ,4BAAyB;AACzD,SAASC,0BAA0B,QAAQ,6BAA0B;AACrE,SAASC,sBAAsB,QAAQ,2BAAwB;AAC/D,SACEC,qBAAqB,IAAIC,UAAU,EACnCC,uBAAuB,EACvBC,oBAAoB,EACpBC,uBAAuB,EACvBC,qBAAqB,IAAIC,qBAAqB,EAC9CC,wBAAwB,IAAIC,oBAAoB,EAChDC,oBAAoB,QACf,uBAAoB;AAO3B;AACA,OAAO,SAASF,wBAAwBA,CAACG,SAAwB,EAAQ;EACvEF,oBAAoB,CAACE,SAAS,CAAC;AACjC;;AAEA;AACA,OAAO,SAASV,qBAAqBA,CAAA,EAAS;EAC5CC,UAAU,CAAC,CAAC;AACd;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASI,qBAAqBA,CAACM,EAAU,EAAQ;EACtDL,qBAAqB,CAACK,EAAE,CAAC;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACD,EAAU,EAAoB;EAC9D,IAAI,CAACA,EAAE,EAAE,OAAO;IAAEE,MAAM,EAAE;EAAU,CAAC;;EAErC;EACA,IAAInB,cAAc,CAACoB,WAAW,CAACH,EAAE,CAAC,EAAE;IAClC,OAAO;MAAEE,MAAM,EAAE;IAAY,CAAC;EAChC;EACA,MAAME,UAAU,GAAGrB,cAAc,CAACsB,GAAG,CAACL,EAAE,CAAC;EACzC,IAAII,UAAU,EAAE;IACd,OAAO;MAAEF,MAAM,EAAE,OAAO;MAAEI,IAAI,EAAEF;IAAW,CAAC;EAC9C;;EAEA;EACA;EACA,MAAMG,MAAM,GAAGf,oBAAoB,CAACQ,EAAE,CAAC;EACvC,MAAMQ,gBAAgB,GAAGf,uBAAuB,CAAC,CAAC;EAClD,IACEc,MAAM,IACNA,MAAM,CAACR,SAAS,KAAKS,gBAAgB,IACrCvB,cAAc,CAACsB,MAAM,CAACE,KAAK,CAAC,IAC5BrB,sBAAsB,CAACmB,MAAM,CAACE,KAAK,CAAC,EACpC;IACA,OAAO;MACLP,MAAM,EAAE,OAAO;MACfI,IAAI,EAAE;QAAEI,eAAe,EAAEvB,0BAA0B,CAACoB,MAAM,CAACE,KAAK;MAAE,CAAC;MACnEA,KAAK,EAAEF,MAAM,CAACE;IAChB,CAAC;EACH;EACA,IAAIF,MAAM,EAAE;IACVhB,uBAAuB,CAACS,EAAE,CAAC;EAC7B;EAEA,MAAMW,IAAI,GAAG3B,aAAa,CAAC4B,QAAQ,CAAC,CAAC;EACrC,IAAI,CAACD,IAAI,EAAE;IACT,OAAO;MAAET,MAAM,EAAE;IAAU,CAAC;EAC9B;EAEA,MAAMW,MAAM,GAAG3B,eAAe,CAACyB,IAAI,EAAEX,EAAE,CAAC;EACxC,IAAIa,MAAM,CAACX,MAAM,KAAK,WAAW,EAAE;IACjC,OAAO;MAAEA,MAAM,EAAE;IAAY,CAAC;EAChC;EACA,IAAIW,MAAM,CAACX,MAAM,KAAK,SAAS,EAAE;IAC/B,OAAO;MAAEA,MAAM,EAAE;IAAU,CAAC;EAC9B;EAEAJ,oBAAoB,CAACE,EAAE,EAAEa,MAAM,CAACJ,KAAK,CAAC;EACtC,OAAO;IACLP,MAAM,EAAE,OAAO;IACfI,IAAI,EAAE;MAAEI,eAAe,EAAEvB,0BAA0B,CAAC0B,MAAM,CAACJ,KAAK;IAAE,CAAC;IACnEA,KAAK,EAAEI,MAAM,CAACJ;EAChB,CAAC;AACH","ignoreList":[]}
@@ -40,7 +40,7 @@ function fiberFromInstance(inst) {
40
40
  }
41
41
 
42
42
  /** Authoritative id that the existing fiber / manual resolver can look up. */
43
- function exactIdFromFingerprint(fp) {
43
+ export function exactIdFromFingerprint(fp) {
44
44
  if (fp.userflowId) return fp.userflowId;
45
45
  if (fp.testID) return fp.testID;
46
46
  if (fp.nativeID && !fp.nativeID.startsWith('uf_')) return fp.nativeID;
@@ -97,7 +97,7 @@ function mapMatch(match) {
97
97
  * scored and the unfiltered pool still has a hit, that hit is on a covered
98
98
  * screen — `absent`, matching MANUAL covered-screen semantics.
99
99
  */
100
- function mapScored(fp) {
100
+ export function resolveScoredAutoAnchor(fp) {
101
101
  const visible = matchFingerprint(fp, {
102
102
  instanceFilter: createVisibleInstanceFilter()
103
103
  });
@@ -169,6 +169,6 @@ export function resolveAutoAnchorHost(autoData) {
169
169
  };
170
170
  }
171
171
  }
172
- return mapScored(fp);
172
+ return resolveScoredAutoAnchor(fp);
173
173
  }
174
174
  //# sourceMappingURL=resolveAutoAnchorHost.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["decodeMobileAutoData","fiberFromPublicInstance","createFiberMeasureInWindow","resolveFiberPath","createVisibleInstanceFilter","resolveAnchorHost","matchFingerprint","isMeasurableNode","value","measureInWindow","hostFromInstance","inst","node","ref","current","callback","scrollIntoView","fiber","fiberFromInstance","exactIdFromFingerprint","fp","userflowId","testID","nativeID","startsWith","decodeInput","autoData","trim","mapMatch","match","instance","host","status","reason","mapScored","visible","instanceFilter","any","resolveAutoAnchorHost","decoded","fingerprint","resolver","fiberPath","fiberHit","fiberCacheId","cacheId","exactId","exact"],"sourceRoot":"../../../src","sources":["anchors/resolveAutoAnchorHost.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["decodeMobileAutoData","fiberFromPublicInstance","createFiberMeasureInWindow","resolveFiberPath","createVisibleInstanceFilter","resolveAnchorHost","matchFingerprint","isMeasurableNode","value","measureInWindow","hostFromInstance","inst","node","ref","current","callback","scrollIntoView","fiber","fiberFromInstance","exactIdFromFingerprint","fp","userflowId","testID","nativeID","startsWith","decodeInput","autoData","trim","mapMatch","match","instance","host","status","reason","resolveScoredAutoAnchor","visible","instanceFilter","any","resolveAutoAnchorHost","decoded","fingerprint","resolver","fiberPath","fiberHit","fiberCacheId","cacheId","exactId","exact"],"sourceRoot":"../../../src","sources":["anchors/resolveAutoAnchorHost.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Resolve every host an ELEMENT condition should consider.
5
+ *
6
+ * Tooltips fail closed when an id matches more than one view. Conditions follow
7
+ * the web SDK instead: any match counts. AUTO exact ids (`userflowId`, then
8
+ * `testID`, then a real `nativeID`) use that same multi-host lookup, and fall
9
+ * through to scoring only when nothing matched.
10
+ */
11
+ import { decodeMobileAutoData } from '@userflow-tech/protocol';
12
+ import { anchorRegistry } from "./AnchorRegistry.js";
13
+ import { anchorIdsAboveTap } from "./elementTargetMatch.js";
14
+ import { fiberScanRoot } from "./fiber/FiberScanRoot.js";
15
+ import { publicInstanceFromHostFiber } from "./fiber/fiberInternals.js";
16
+ import { findAnchorFibers } from "./fiber/findAnchorFiber.js";
17
+ import { createLazyHostFiberIndex, lookupHostFiber } from "./fiber/indexHostFibers.js";
18
+ import { createFiberMeasureInWindow } from "./fiber/measureHostFiber.js";
19
+ import { isFiberOnVisibleScreen } from "./fiber/visibleScreens.js";
20
+ import { exactIdFromFingerprint, resolveAutoAnchorHost, resolveScoredAutoAnchor } from "./resolveAutoAnchorHost.js";
21
+ import { resolveManualAnchorId } from "./resolveManualAnchorId.js";
22
+ export function resolveElementTargets(selector) {
23
+ if (selector == null) return {
24
+ status: 'unknown'
25
+ };
26
+ if (selector.type === 'AUTO') {
27
+ return resolveAutoTargets(selector.autoData);
28
+ }
29
+ const anchorId = resolveManualAnchorId(selector.css);
30
+ if (anchorId == null) return {
31
+ status: 'unknown'
32
+ };
33
+ return resolveManualTargets(anchorId);
34
+ }
35
+
36
+ /**
37
+ * False when no target of `selector` can contain `tap`, decided without a tree
38
+ * scan. A fiber-scan target carries its id itself or sits under a composite
39
+ * that does, so a MANUAL id that is neither registered nor on the tap's
40
+ * ancestor chain cannot match. AUTO selectors are not gated: only a scan tells
41
+ * whether the exact id or a scored match applies.
42
+ */
43
+ export function tapMayHitSelector(selector, tap) {
44
+ if (selector == null) return false;
45
+ if (selector.type === 'AUTO') return true;
46
+ const anchorId = resolveManualAnchorId(selector.css);
47
+ if (anchorId == null) return false;
48
+ return anchorRegistry.get(anchorId) != null || anchorIdsAboveTap(tap).has(anchorId);
49
+ }
50
+ function resolveAutoTargets(autoData) {
51
+ const decoded = decodeMobileAutoData(autoData);
52
+ const fingerprint = decoded?.fingerprint;
53
+ if (!decoded || !fingerprint) return {
54
+ status: 'unknown'
55
+ };
56
+ if (decoded.resolver === 'fiber' && decoded.fiberPath) {
57
+ return fromAutoResolution(resolveAutoAnchorHost(decoded));
58
+ }
59
+ const exactId = exactIdFromFingerprint(fingerprint);
60
+ if (exactId) {
61
+ const manual = resolveManualTargets(exactId);
62
+ if (manual.status === 'found') return manual;
63
+ }
64
+
65
+ // The exact id already missed above, so go straight to scoring rather than
66
+ // letting resolveAutoAnchorHost scan for it again.
67
+ return fromAutoResolution(resolveScoredAutoAnchor(fingerprint));
68
+ }
69
+ function fromAutoResolution(resolution) {
70
+ if (resolution.status === 'found') {
71
+ // Scored matches only try the direct ref pointer, which Paper release
72
+ // builds null out. Without the index fallback a tap could never match.
73
+ const fiber = resolution.fiber ?? fiberForNode(createLazyHostFiberIndex(), resolution.match?.instance?.ref.current);
74
+ return {
75
+ status: 'found',
76
+ targets: [{
77
+ host: resolution.host,
78
+ ...(fiber ? {
79
+ fiber
80
+ } : {})
81
+ }]
82
+ };
83
+ }
84
+ if (resolution.status === 'absent') return {
85
+ status: 'absent'
86
+ };
87
+ // Ambiguous and unknown both fail closed. Ambiguous is a real tie, not a
88
+ // broken selector, so it does not warn.
89
+ if (resolution.status === 'ambiguous') return {
90
+ status: 'unknown',
91
+ silent: true
92
+ };
93
+ return {
94
+ status: 'unknown'
95
+ };
96
+ }
97
+ function resolveManualTargets(id) {
98
+ const registered = anchorRegistry.getAll(id);
99
+ if (registered.length > 0) {
100
+ const index = createLazyHostFiberIndex();
101
+ // Registered views on a covered navigator screen still measure non-zero,
102
+ // so drop them here the way the fiber scan skips covered screens. A host
103
+ // whose fiber cannot be found is kept.
104
+ const targets = registered.map(host => {
105
+ const fiber = fiberForNode(index, host.node);
106
+ return fiber ? {
107
+ host,
108
+ fiber
109
+ } : {
110
+ host
111
+ };
112
+ }).filter(target => !target.fiber || isFiberOnVisibleScreen(target.fiber));
113
+ return targets.length > 0 ? {
114
+ status: 'found',
115
+ targets
116
+ } : {
117
+ status: 'absent'
118
+ };
119
+ }
120
+ const root = fiberScanRoot.getFiber();
121
+ if (!root) return {
122
+ status: 'absent'
123
+ };
124
+ const found = findAnchorFibers(root, id);
125
+ if (found.status === 'missing') return {
126
+ status: 'absent'
127
+ };
128
+ return {
129
+ status: 'found',
130
+ targets: found.fibers.map(fiber => {
131
+ const node = publicInstanceFromHostFiber(fiber);
132
+ return {
133
+ host: {
134
+ measureInWindow: createFiberMeasureInWindow(fiber),
135
+ ...(node ? {
136
+ node
137
+ } : {})
138
+ },
139
+ fiber
140
+ };
141
+ })
142
+ };
143
+ }
144
+ function fiberForNode(index, node) {
145
+ if (!node) return undefined;
146
+ try {
147
+ return lookupHostFiber(index, node) ?? undefined;
148
+ } catch {
149
+ return undefined;
150
+ }
151
+ }
152
+ //# sourceMappingURL=resolveElementTargets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["decodeMobileAutoData","anchorRegistry","anchorIdsAboveTap","fiberScanRoot","publicInstanceFromHostFiber","findAnchorFibers","createLazyHostFiberIndex","lookupHostFiber","createFiberMeasureInWindow","isFiberOnVisibleScreen","exactIdFromFingerprint","resolveAutoAnchorHost","resolveScoredAutoAnchor","resolveManualAnchorId","resolveElementTargets","selector","status","type","resolveAutoTargets","autoData","anchorId","css","resolveManualTargets","tapMayHitSelector","tap","get","has","decoded","fingerprint","resolver","fiberPath","fromAutoResolution","exactId","manual","resolution","fiber","fiberForNode","match","instance","ref","current","targets","host","silent","id","registered","getAll","length","index","map","node","filter","target","root","getFiber","found","fibers","measureInWindow","undefined"],"sourceRoot":"../../../src","sources":["anchors/resolveElementTargets.ts"],"mappings":"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","ignoreList":[]}
@@ -13,6 +13,13 @@ export const TARGET_PRESS_TAP_SLOP = 10;
13
13
  export function pointInRect(x, y, rect) {
14
14
  return x >= rect.x && x <= rect.x + rect.width && y >= rect.y && y <= rect.y + rect.height;
15
15
  }
16
+ /** True when the finger moved no more than `slop` between start and end. */
17
+ export function withinTapSlop(start, end, slop = TARGET_PRESS_TAP_SLOP) {
18
+ const dx = end.pageX - start.pageX;
19
+ const dy = end.pageY - start.pageY;
20
+ return dx * dx + dy * dy <= slop * slop;
21
+ }
22
+
16
23
  /**
17
24
  * True when start and end both land in `rect` and movement stays within tap
18
25
  * slop — mirrors a DOM click on the target without claiming the responder.
@@ -20,9 +27,7 @@ export function pointInRect(x, y, rect) {
20
27
  export function isTargetTap(start, end, rect, slop = TARGET_PRESS_TAP_SLOP) {
21
28
  if (!pointInRect(start.pageX, start.pageY, rect)) return false;
22
29
  if (!pointInRect(end.pageX, end.pageY, rect)) return false;
23
- const dx = end.pageX - start.pageX;
24
- const dy = end.pageY - start.pageY;
25
- return dx * dx + dy * dy <= slop * slop;
30
+ return withinTapSlop(start, end, slop);
26
31
  }
27
32
 
28
33
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["TARGET_PRESS_TAP_SLOP","pointInRect","x","y","rect","width","height","isTargetTap","start","end","slop","pageX","pageY","dx","dy","TargetPressMonitor","subscription","touchStarts","Map","set","clear","get","handleTouchStart","identifier","handleTouchEnd","delete","sub","getRect","onPress","cancelTouch","resetForTests","targetPressMonitor"],"sourceRoot":"../../../src","sources":["anchors/targetPressMonitor.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["TARGET_PRESS_TAP_SLOP","pointInRect","x","y","rect","width","height","withinTapSlop","start","end","slop","dx","pageX","dy","pageY","isTargetTap","TargetPressMonitor","subscription","touchStarts","Map","set","clear","get","handleTouchStart","identifier","handleTouchEnd","delete","sub","getRect","onPress","cancelTouch","resetForTests","targetPressMonitor"],"sourceRoot":"../../../src","sources":["anchors/targetPressMonitor.ts"],"mappings":"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","ignoreList":[]}
@@ -68,6 +68,7 @@ export function useUserflowAnchor(id) {
68
68
  measureInWindow: callback => {
69
69
  node.measureInWindow(callback);
70
70
  },
71
+ node,
71
72
  scrollIntoView: () => {
72
73
  const scrollable = node;
73
74
  if (typeof scrollable.scrollIntoView === 'function') {
@@ -1 +1 @@
1
- {"version":3,"names":["React","anchorRegistry","useUserflowAnchor","id","hostRef","useRef","idRef","useEffect","previousId","current","host","unregister","register","useCallback","node","previous","currentId","measureInWindow","callback","scrollIntoView","scrollable","block","inline"],"sourceRoot":"../../../src","sources":["anchors/useUserflowAnchor.ts"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,SAASC,cAAc,QAAyB,qBAAkB;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,EAAU,EAA2B;EACrE,MAAMC,OAAO,GAAGJ,KAAK,CAACK,MAAM,CAAoB,IAAI,CAAC;EACrD,MAAMC,KAAK,GAAGN,KAAK,CAACK,MAAM,CAACF,EAAE,CAAC;EAE9BH,KAAK,CAACO,SAAS,CAAC,MAAM;IACpB,MAAMC,UAAU,GAAGF,KAAK,CAACG,OAAO;IAChC,MAAMC,IAAI,GAAGN,OAAO,CAACK,OAAO;IAC5B,IAAID,UAAU,KAAKL,EAAE,IAAIO,IAAI,EAAE;MAC7BT,cAAc,CAACU,UAAU,CAACH,UAAU,EAAEE,IAAI,CAAC;MAC3C,IAAIP,EAAE,EAAE;QACNF,cAAc,CAACW,QAAQ,CAACT,EAAE,EAAEO,IAAI,CAAC;MACnC;IACF;IACAJ,KAAK,CAACG,OAAO,GAAGN,EAAE;EACpB,CAAC,EAAE,CAACA,EAAE,CAAC,CAAC;EAERH,KAAK,CAACO,SAAS,CAAC,MAAM;IACpB,OAAO,MAAM;MACX,MAAMG,IAAI,GAAGN,OAAO,CAACK,OAAO;MAC5B,IAAIC,IAAI,EAAE;QACRT,cAAc,CAACU,UAAU,CAACL,KAAK,CAACG,OAAO,EAAEC,IAAI,CAAC;QAC9CN,OAAO,CAACK,OAAO,GAAG,IAAI;MACxB;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOT,KAAK,CAACa,WAAW,CAAEC,IAAiB,IAAK;IAC9C,MAAMC,QAAQ,GAAGX,OAAO,CAACK,OAAO;IAChC,MAAMO,SAAS,GAAGV,KAAK,CAACG,OAAO;IAC/B,IAAIM,QAAQ,EAAE;MACZd,cAAc,CAACU,UAAU,CAACK,SAAS,EAAED,QAAQ,CAAC;IAChD;IACA,IAAI,CAACD,IAAI,EAAE;MACTV,OAAO,CAACK,OAAO,GAAG,IAAI;MACtB;IACF;;IAEA;IACA,MAAMC,IAAgB,GAAG;MACvBO,eAAe,EAAGC,QAAQ,IAAK;QAC7BJ,IAAI,CAACG,eAAe,CAACC,QAAQ,CAAC;MAChC,CAAC;MACDC,cAAc,EAAEA,CAAA,KAAM;QACpB,MAAMC,UAAU,GAAGN,IAElB;QACD,IAAI,OAAOM,UAAU,CAACD,cAAc,KAAK,UAAU,EAAE;UACnDC,UAAU,CAACD,cAAc,CAAC;YAAEE,KAAK,EAAE,SAAS;YAAEC,MAAM,EAAE;UAAU,CAAC,CAAC;QACpE;MACF;IACF,CAAC;IACDlB,OAAO,CAACK,OAAO,GAAGC,IAAI;IACtB,IAAIM,SAAS,EAAE;MACbf,cAAc,CAACW,QAAQ,CAACI,SAAS,EAAEN,IAAI,CAAC;IAC1C;EACF,CAAC,EAAE,EAAE,CAAC;AACR","ignoreList":[]}
1
+ {"version":3,"names":["React","anchorRegistry","useUserflowAnchor","id","hostRef","useRef","idRef","useEffect","previousId","current","host","unregister","register","useCallback","node","previous","currentId","measureInWindow","callback","scrollIntoView","scrollable","block","inline"],"sourceRoot":"../../../src","sources":["anchors/useUserflowAnchor.ts"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAG9B,SAASC,cAAc,QAAyB,qBAAkB;;AAElE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAACC,EAAU,EAA2B;EACrE,MAAMC,OAAO,GAAGJ,KAAK,CAACK,MAAM,CAAoB,IAAI,CAAC;EACrD,MAAMC,KAAK,GAAGN,KAAK,CAACK,MAAM,CAACF,EAAE,CAAC;EAE9BH,KAAK,CAACO,SAAS,CAAC,MAAM;IACpB,MAAMC,UAAU,GAAGF,KAAK,CAACG,OAAO;IAChC,MAAMC,IAAI,GAAGN,OAAO,CAACK,OAAO;IAC5B,IAAID,UAAU,KAAKL,EAAE,IAAIO,IAAI,EAAE;MAC7BT,cAAc,CAACU,UAAU,CAACH,UAAU,EAAEE,IAAI,CAAC;MAC3C,IAAIP,EAAE,EAAE;QACNF,cAAc,CAACW,QAAQ,CAACT,EAAE,EAAEO,IAAI,CAAC;MACnC;IACF;IACAJ,KAAK,CAACG,OAAO,GAAGN,EAAE;EACpB,CAAC,EAAE,CAACA,EAAE,CAAC,CAAC;EAERH,KAAK,CAACO,SAAS,CAAC,MAAM;IACpB,OAAO,MAAM;MACX,MAAMG,IAAI,GAAGN,OAAO,CAACK,OAAO;MAC5B,IAAIC,IAAI,EAAE;QACRT,cAAc,CAACU,UAAU,CAACL,KAAK,CAACG,OAAO,EAAEC,IAAI,CAAC;QAC9CN,OAAO,CAACK,OAAO,GAAG,IAAI;MACxB;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOT,KAAK,CAACa,WAAW,CAAEC,IAAiB,IAAK;IAC9C,MAAMC,QAAQ,GAAGX,OAAO,CAACK,OAAO;IAChC,MAAMO,SAAS,GAAGV,KAAK,CAACG,OAAO;IAC/B,IAAIM,QAAQ,EAAE;MACZd,cAAc,CAACU,UAAU,CAACK,SAAS,EAAED,QAAQ,CAAC;IAChD;IACA,IAAI,CAACD,IAAI,EAAE;MACTV,OAAO,CAACK,OAAO,GAAG,IAAI;MACtB;IACF;;IAEA;IACA,MAAMC,IAAgB,GAAG;MACvBO,eAAe,EAAGC,QAAQ,IAAK;QAC7BJ,IAAI,CAACG,eAAe,CAACC,QAAQ,CAAC;MAChC,CAAC;MACDJ,IAAI;MACJK,cAAc,EAAEA,CAAA,KAAM;QACpB,MAAMC,UAAU,GAAGN,IAElB;QACD,IAAI,OAAOM,UAAU,CAACD,cAAc,KAAK,UAAU,EAAE;UACnDC,UAAU,CAACD,cAAc,CAAC;YAAEE,KAAK,EAAE,SAAS;YAAEC,MAAM,EAAE;UAAU,CAAC,CAAC;QACpE;MACF;IACF,CAAC;IACDlB,OAAO,CAACK,OAAO,GAAGC,IAAI;IACtB,IAAIM,SAAS,EAAE;MACbf,cAAc,CAACW,QAAQ,CAACI,SAAS,EAAEN,IAAI,CAAC;IAC1C;EACF,CAAC,EAAE,EAAE,CAAC;AACR","ignoreList":[]}