@userflow-tech/react-native 0.3.0 → 0.3.1

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 (197) hide show
  1. package/README.md +325 -63
  2. package/docs/anchoring.md +58 -42
  3. package/docs/troubleshooting.md +63 -27
  4. package/expo-plugin/hostDependencyWarnings.d.ts +18 -0
  5. package/expo-plugin/hostDependencyWarnings.d.ts.map +1 -0
  6. package/expo-plugin/hostDependencyWarnings.js +91 -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/index.js +5 -0
  36. package/lib/commonjs/index.js.map +1 -1
  37. package/lib/commonjs/installCheck.js +151 -0
  38. package/lib/commonjs/installCheck.js.map +1 -0
  39. package/lib/commonjs/pairing/deviceId.js +14 -11
  40. package/lib/commonjs/pairing/deviceId.js.map +1 -1
  41. package/lib/commonjs/runtime/TargetPressBridge.js +12 -1
  42. package/lib/commonjs/runtime/TargetPressBridge.js.map +1 -1
  43. package/lib/commonjs/runtime/UserflowProvider.js +6 -3
  44. package/lib/commonjs/runtime/UserflowProvider.js.map +1 -1
  45. package/lib/commonjs/storage/asyncStorage.js +67 -0
  46. package/lib/commonjs/storage/asyncStorage.js.map +1 -0
  47. package/lib/commonjs/surfaces/safeArea.js +68 -28
  48. package/lib/commonjs/surfaces/safeArea.js.map +1 -1
  49. package/lib/commonjs/version.js +1 -1
  50. package/lib/module/anchors/AnchorRegistry.js +7 -0
  51. package/lib/module/anchors/AnchorRegistry.js.map +1 -1
  52. package/lib/module/anchors/elementConditionEvaluator.js +189 -55
  53. package/lib/module/anchors/elementConditionEvaluator.js.map +1 -1
  54. package/lib/module/anchors/elementTapMonitor.js +87 -0
  55. package/lib/module/anchors/elementTapMonitor.js.map +1 -0
  56. package/lib/module/anchors/elementTargetMatch.js +78 -0
  57. package/lib/module/anchors/elementTargetMatch.js.map +1 -0
  58. package/lib/module/anchors/fiber/findAnchorFiber.js +62 -39
  59. package/lib/module/anchors/fiber/findAnchorFiber.js.map +1 -1
  60. package/lib/module/anchors/fiber/touchTargetFiber.js +100 -0
  61. package/lib/module/anchors/fiber/touchTargetFiber.js.map +1 -0
  62. package/lib/module/anchors/resolveAnchorHost.js +2 -1
  63. package/lib/module/anchors/resolveAnchorHost.js.map +1 -1
  64. package/lib/module/anchors/resolveAutoAnchorHost.js +3 -3
  65. package/lib/module/anchors/resolveAutoAnchorHost.js.map +1 -1
  66. package/lib/module/anchors/resolveElementTargets.js +152 -0
  67. package/lib/module/anchors/resolveElementTargets.js.map +1 -0
  68. package/lib/module/anchors/targetPressMonitor.js +8 -3
  69. package/lib/module/anchors/targetPressMonitor.js.map +1 -1
  70. package/lib/module/anchors/useUserflowAnchor.js +1 -0
  71. package/lib/module/anchors/useUserflowAnchor.js.map +1 -1
  72. package/lib/module/anonymousId.js +15 -5
  73. package/lib/module/anonymousId.js.map +1 -1
  74. package/lib/module/index.js +5 -0
  75. package/lib/module/index.js.map +1 -1
  76. package/lib/module/installCheck.js +139 -0
  77. package/lib/module/installCheck.js.map +1 -0
  78. package/lib/module/pairing/deviceId.js +14 -10
  79. package/lib/module/pairing/deviceId.js.map +1 -1
  80. package/lib/module/runtime/TargetPressBridge.js +12 -1
  81. package/lib/module/runtime/TargetPressBridge.js.map +1 -1
  82. package/lib/module/runtime/UserflowProvider.js +7 -4
  83. package/lib/module/runtime/UserflowProvider.js.map +1 -1
  84. package/lib/module/storage/asyncStorage.js +61 -0
  85. package/lib/module/storage/asyncStorage.js.map +1 -0
  86. package/lib/module/surfaces/safeArea.js +65 -28
  87. package/lib/module/surfaces/safeArea.js.map +1 -1
  88. package/lib/module/version.js +1 -1
  89. package/lib/typescript/commonjs/src/anchors/AnchorRegistry.d.ts +7 -0
  90. package/lib/typescript/commonjs/src/anchors/AnchorRegistry.d.ts.map +1 -1
  91. package/lib/typescript/commonjs/src/anchors/elementConditionEvaluator.d.ts +12 -16
  92. package/lib/typescript/commonjs/src/anchors/elementConditionEvaluator.d.ts.map +1 -1
  93. package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts +36 -0
  94. package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts.map +1 -0
  95. package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts +20 -0
  96. package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts.map +1 -0
  97. package/lib/typescript/commonjs/src/anchors/fiber/findAnchorFiber.d.ts +17 -5
  98. package/lib/typescript/commonjs/src/anchors/fiber/findAnchorFiber.d.ts.map +1 -1
  99. package/lib/typescript/commonjs/src/anchors/fiber/touchTargetFiber.d.ts +24 -0
  100. package/lib/typescript/commonjs/src/anchors/fiber/touchTargetFiber.d.ts.map +1 -0
  101. package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts +2 -1
  102. package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts.map +1 -1
  103. package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts +10 -1
  104. package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
  105. package/lib/typescript/commonjs/src/anchors/resolveElementTargets.d.ts +39 -0
  106. package/lib/typescript/commonjs/src/anchors/resolveElementTargets.d.ts.map +1 -0
  107. package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts +2 -0
  108. package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/src/anchors/useUserflowAnchor.d.ts.map +1 -1
  110. package/lib/typescript/commonjs/src/anonymousId.d.ts +2 -0
  111. package/lib/typescript/commonjs/src/anonymousId.d.ts.map +1 -1
  112. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  113. package/lib/typescript/commonjs/src/installCheck.d.ts +33 -0
  114. package/lib/typescript/commonjs/src/installCheck.d.ts.map +1 -0
  115. package/lib/typescript/commonjs/src/pairing/deviceId.d.ts.map +1 -1
  116. package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts +2 -1
  117. package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts.map +1 -1
  118. package/lib/typescript/commonjs/src/runtime/UserflowProvider.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/src/storage/asyncStorage.d.ts +15 -0
  120. package/lib/typescript/commonjs/src/storage/asyncStorage.d.ts.map +1 -0
  121. package/lib/typescript/commonjs/src/surfaces/safeArea.d.ts +4 -2
  122. package/lib/typescript/commonjs/src/surfaces/safeArea.d.ts.map +1 -1
  123. package/lib/typescript/commonjs/src/version.d.ts +1 -1
  124. package/lib/typescript/module/src/anchors/AnchorRegistry.d.ts +7 -0
  125. package/lib/typescript/module/src/anchors/AnchorRegistry.d.ts.map +1 -1
  126. package/lib/typescript/module/src/anchors/elementConditionEvaluator.d.ts +12 -16
  127. package/lib/typescript/module/src/anchors/elementConditionEvaluator.d.ts.map +1 -1
  128. package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts +36 -0
  129. package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts.map +1 -0
  130. package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts +20 -0
  131. package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts.map +1 -0
  132. package/lib/typescript/module/src/anchors/fiber/findAnchorFiber.d.ts +17 -5
  133. package/lib/typescript/module/src/anchors/fiber/findAnchorFiber.d.ts.map +1 -1
  134. package/lib/typescript/module/src/anchors/fiber/touchTargetFiber.d.ts +24 -0
  135. package/lib/typescript/module/src/anchors/fiber/touchTargetFiber.d.ts.map +1 -0
  136. package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts +2 -1
  137. package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts.map +1 -1
  138. package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts +10 -1
  139. package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
  140. package/lib/typescript/module/src/anchors/resolveElementTargets.d.ts +39 -0
  141. package/lib/typescript/module/src/anchors/resolveElementTargets.d.ts.map +1 -0
  142. package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts +2 -0
  143. package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts.map +1 -1
  144. package/lib/typescript/module/src/anchors/useUserflowAnchor.d.ts.map +1 -1
  145. package/lib/typescript/module/src/anonymousId.d.ts +2 -0
  146. package/lib/typescript/module/src/anonymousId.d.ts.map +1 -1
  147. package/lib/typescript/module/src/index.d.ts.map +1 -1
  148. package/lib/typescript/module/src/installCheck.d.ts +33 -0
  149. package/lib/typescript/module/src/installCheck.d.ts.map +1 -0
  150. package/lib/typescript/module/src/pairing/deviceId.d.ts.map +1 -1
  151. package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts +2 -1
  152. package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts.map +1 -1
  153. package/lib/typescript/module/src/runtime/UserflowProvider.d.ts.map +1 -1
  154. package/lib/typescript/module/src/storage/asyncStorage.d.ts +15 -0
  155. package/lib/typescript/module/src/storage/asyncStorage.d.ts.map +1 -0
  156. package/lib/typescript/module/src/surfaces/safeArea.d.ts +4 -2
  157. package/lib/typescript/module/src/surfaces/safeArea.d.ts.map +1 -1
  158. package/lib/typescript/module/src/version.d.ts +1 -1
  159. package/package.json +13 -1
  160. package/src/anchors/AnchorRegistry.ts +12 -0
  161. package/src/anchors/elementConditionEvaluator.ts +235 -70
  162. package/src/anchors/elementTapMonitor.ts +95 -0
  163. package/src/anchors/elementTargetMatch.ts +90 -0
  164. package/src/anchors/fiber/findAnchorFiber.ts +66 -35
  165. package/src/anchors/fiber/touchTargetFiber.ts +125 -0
  166. package/src/anchors/resolveAnchorHost.ts +2 -1
  167. package/src/anchors/resolveAutoAnchorHost.ts +3 -3
  168. package/src/anchors/resolveElementTargets.ts +165 -0
  169. package/src/anchors/targetPressMonitor.ts +12 -3
  170. package/src/anchors/useUserflowAnchor.ts +1 -0
  171. package/src/anonymousId.ts +19 -8
  172. package/src/index.ts +10 -0
  173. package/src/installCheck.ts +191 -0
  174. package/src/pairing/deviceId.ts +14 -11
  175. package/src/runtime/TargetPressBridge.tsx +17 -1
  176. package/src/runtime/UserflowProvider.tsx +11 -4
  177. package/src/storage/asyncStorage.ts +88 -0
  178. package/src/surfaces/safeArea.ts +80 -40
  179. package/src/version.ts +1 -1
  180. package/vendor/core/dist/constants.d.ts +2 -0
  181. package/vendor/core/dist/constants.d.ts.map +1 -1
  182. package/vendor/core/dist/constants.js +2 -0
  183. package/vendor/core/dist/constants.js.map +1 -1
  184. package/vendor/core/dist/engine/ClientConditionEngine.d.ts +20 -1
  185. package/vendor/core/dist/engine/ClientConditionEngine.d.ts.map +1 -1
  186. package/vendor/core/dist/engine/ClientConditionEngine.js +13 -10
  187. package/vendor/core/dist/engine/ClientConditionEngine.js.map +1 -1
  188. package/vendor/core/dist/engine/UserflowCore.d.ts.map +1 -1
  189. package/vendor/core/dist/engine/UserflowCore.js +21 -2
  190. package/vendor/core/dist/engine/UserflowCore.js.map +1 -1
  191. package/vendor/core/dist/index.d.ts +1 -1
  192. package/vendor/core/dist/index.d.ts.map +1 -1
  193. package/vendor/core/dist/index.js.map +1 -1
  194. package/vendor/core/dist/version.d.ts +1 -1
  195. package/vendor/core/dist/version.js +1 -1
  196. package/vendor/core/package.json +1 -1
  197. package/vendor/protocol/package.json +1 -1
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Pass-through tap observation for ELEMENT CLICK / NOT_CLICK conditions.
5
+ *
6
+ * Many conditions can subscribe at once. Touch start/end are paired per finger
7
+ * and a tap is emitted only when movement stays within the same slop the
8
+ * tooltip target-press monitor uses. The host fiber is the one captured at
9
+ * touch start, before the press's setState commits a new tree.
10
+ *
11
+ * With no subscribers the monitor stores nothing, so the bridge can skip the
12
+ * fiber lookup entirely.
13
+ */
14
+
15
+ import { withinTapSlop } from "./targetPressMonitor.js";
16
+ export class ElementTapMonitor {
17
+ listeners = new Set();
18
+ touchStarts = new Map();
19
+ get subscriberCount() {
20
+ return this.listeners.size;
21
+ }
22
+ subscribe(listener) {
23
+ this.listeners.add(listener);
24
+ return () => {
25
+ this.listeners.delete(listener);
26
+ if (this.listeners.size === 0) {
27
+ this.touchStarts.clear();
28
+ }
29
+ };
30
+ }
31
+ handleTouchStart(identifier, pageX, pageY, targetFiber) {
32
+ if (this.listeners.size === 0) {
33
+ this.touchStarts.clear();
34
+ return;
35
+ }
36
+ this.touchStarts.set(identifier, {
37
+ pageX,
38
+ pageY,
39
+ targetFiber
40
+ });
41
+ }
42
+
43
+ /**
44
+ * Emit a tap when this finger started and ended within slop on a resolved
45
+ * host. Never claims the responder.
46
+ */
47
+ handleTouchEnd(identifier, pageX, pageY) {
48
+ const start = this.touchStarts.get(identifier) ?? null;
49
+ this.touchStarts.delete(identifier);
50
+ if (!start || this.listeners.size === 0 || !start.targetFiber) return;
51
+ if (!withinTapSlop(start, {
52
+ pageX,
53
+ pageY
54
+ })) return;
55
+ const tap = {
56
+ targetFiber: start.targetFiber
57
+ };
58
+ for (const listener of this.listeners) {
59
+ // One condition's failure must not cost the others this tap, or abort
60
+ // the bridge's handling of the event's remaining touches.
61
+ try {
62
+ listener(tap);
63
+ } catch {
64
+ // The condition stays at its current value.
65
+ }
66
+ }
67
+ }
68
+
69
+ /** Drop in-progress gesture(s). Omit `identifier` to clear every finger. */
70
+ cancelTouch(identifier) {
71
+ if (identifier == null) {
72
+ this.touchStarts.clear();
73
+ return;
74
+ }
75
+ this.touchStarts.delete(identifier);
76
+ }
77
+
78
+ /** Test helper. */
79
+ resetForTests() {
80
+ this.listeners.clear();
81
+ this.touchStarts.clear();
82
+ }
83
+ }
84
+
85
+ /** Shared singleton used by TargetPressBridge and the element-condition evaluator. */
86
+ export const elementTapMonitor = new ElementTapMonitor();
87
+ //# sourceMappingURL=elementTapMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["withinTapSlop","ElementTapMonitor","listeners","Set","touchStarts","Map","subscriberCount","size","subscribe","listener","add","delete","clear","handleTouchStart","identifier","pageX","pageY","targetFiber","set","handleTouchEnd","start","get","tap","cancelTouch","resetForTests","elementTapMonitor"],"sourceRoot":"../../../src","sources":["anchors/elementTapMonitor.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAgDA,aAAa,QAAQ,yBAAsB;AAY3F,OAAO,MAAMC,iBAAiB,CAAC;EACZC,SAAS,GAAG,IAAIC,GAAG,CAAqB,CAAC;EACzCC,WAAW,GAAG,IAAIC,GAAG,CAA8B,CAAC;EAErE,IAAIC,eAAeA,CAAA,EAAW;IAC5B,OAAO,IAAI,CAACJ,SAAS,CAACK,IAAI;EAC5B;EAEAC,SAASA,CAACC,QAA4B,EAAc;IAClD,IAAI,CAACP,SAAS,CAACQ,GAAG,CAACD,QAAQ,CAAC;IAC5B,OAAO,MAAM;MACX,IAAI,CAACP,SAAS,CAACS,MAAM,CAACF,QAAQ,CAAC;MAC/B,IAAI,IAAI,CAACP,SAAS,CAACK,IAAI,KAAK,CAAC,EAAE;QAC7B,IAAI,CAACH,WAAW,CAACQ,KAAK,CAAC,CAAC;MAC1B;IACF,CAAC;EACH;EAEAC,gBAAgBA,CACdC,UAA2B,EAC3BC,KAAa,EACbC,KAAa,EACbC,WAA4B,EACtB;IACN,IAAI,IAAI,CAACf,SAAS,CAACK,IAAI,KAAK,CAAC,EAAE;MAC7B,IAAI,CAACH,WAAW,CAACQ,KAAK,CAAC,CAAC;MACxB;IACF;IACA,IAAI,CAACR,WAAW,CAACc,GAAG,CAACJ,UAAU,EAAE;MAAEC,KAAK;MAAEC,KAAK;MAAEC;IAAY,CAAC,CAAC;EACjE;;EAEA;AACF;AACA;AACA;EACEE,cAAcA,CAACL,UAA2B,EAAEC,KAAa,EAAEC,KAAa,EAAQ;IAC9E,MAAMI,KAAK,GAAG,IAAI,CAAChB,WAAW,CAACiB,GAAG,CAACP,UAAU,CAAC,IAAI,IAAI;IACtD,IAAI,CAACV,WAAW,CAACO,MAAM,CAACG,UAAU,CAAC;IACnC,IAAI,CAACM,KAAK,IAAI,IAAI,CAAClB,SAAS,CAACK,IAAI,KAAK,CAAC,IAAI,CAACa,KAAK,CAACH,WAAW,EAAE;IAC/D,IAAI,CAACjB,aAAa,CAACoB,KAAK,EAAE;MAAEL,KAAK;MAAEC;IAAM,CAAC,CAAC,EAAE;IAE7C,MAAMM,GAAe,GAAG;MAAEL,WAAW,EAAEG,KAAK,CAACH;IAAY,CAAC;IAC1D,KAAK,MAAMR,QAAQ,IAAI,IAAI,CAACP,SAAS,EAAE;MACrC;MACA;MACA,IAAI;QACFO,QAAQ,CAACa,GAAG,CAAC;MACf,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;EACF;;EAEA;EACAC,WAAWA,CAACT,UAA4B,EAAQ;IAC9C,IAAIA,UAAU,IAAI,IAAI,EAAE;MACtB,IAAI,CAACV,WAAW,CAACQ,KAAK,CAAC,CAAC;MACxB;IACF;IACA,IAAI,CAACR,WAAW,CAACO,MAAM,CAACG,UAAU,CAAC;EACrC;;EAEA;EACAU,aAAaA,CAAA,EAAS;IACpB,IAAI,CAACtB,SAAS,CAACU,KAAK,CAAC,CAAC;IACtB,IAAI,CAACR,WAAW,CAACQ,KAAK,CAAC,CAAC;EAC1B;AACF;;AAEA;AACA,OAAO,MAAMa,iBAAiB,GAAG,IAAIxB,iBAAiB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Compare a touch-start fiber with a host resolved later, tolerating the
5
+ * alternate swap a Pressable `pressed` re-render does mid-gesture.
6
+ */
7
+
8
+ import { MAX_ANCESTOR_WALK, getAlternate, getLiveHostProps, getMemoizedProps, getReturn } from "./fiber/fiberInternals.js";
9
+ import { ANCHOR_PROP_TIERS } from "./fiber/findAnchorFiber.js";
10
+ const anchorIdsByTap = new WeakMap();
11
+
12
+ /**
13
+ * Anchor ids on the tapped fiber and its ancestors, built once per tap and
14
+ * shared by every click condition it is delivered to.
15
+ */
16
+ export function anchorIdsAboveTap(tap) {
17
+ const cached = anchorIdsByTap.get(tap);
18
+ if (cached) return cached;
19
+ const ids = new Set();
20
+ let current = tap.targetFiber;
21
+ for (let depth = 0; current && depth < MAX_ANCESTOR_WALK; depth += 1) {
22
+ const props = getMemoizedProps(current);
23
+ if (props) {
24
+ for (const tier of ANCHOR_PROP_TIERS) {
25
+ const value = props[tier];
26
+ if (typeof value === 'string') ids.add(value);
27
+ }
28
+ }
29
+ current = getReturn(current);
30
+ }
31
+ anchorIdsByTap.set(tap, ids);
32
+ return ids;
33
+ }
34
+ export function sameFiber(a, b) {
35
+ if (a == null || b == null) return false;
36
+ if (a === b) return true;
37
+ const aAlt = getAlternate(a);
38
+ const bAlt = getAlternate(b);
39
+ return a === bAlt || aAlt === b || aAlt != null && aAlt === bAlt;
40
+ }
41
+
42
+ /** True when `node` is `host` or a descendant of it. */
43
+ export function fiberIsUnder(node, host) {
44
+ let current = node;
45
+ for (let depth = 0; current && depth < MAX_ANCESTOR_WALK; depth += 1) {
46
+ if (sameFiber(current, host)) return true;
47
+ current = getReturn(current);
48
+ }
49
+ return false;
50
+ }
51
+ function fiberDisabled(fiber) {
52
+ let props;
53
+ try {
54
+ props = getLiveHostProps(fiber);
55
+ } catch {
56
+ return false;
57
+ }
58
+ if (!props) return false;
59
+ if (props.disabled === true) return true;
60
+ if (props['aria-disabled'] === true) return true;
61
+ const state = props.accessibilityState;
62
+ return typeof state === 'object' && state !== null && state.disabled === true;
63
+ }
64
+
65
+ /**
66
+ * True when the tapped fiber, the matched host, or a fiber between them is
67
+ * disabled. Browsers do not fire `click` on a disabled control.
68
+ */
69
+ export function tapPathDisabled(tapped, host) {
70
+ let current = tapped;
71
+ for (let depth = 0; current && depth < MAX_ANCESTOR_WALK; depth += 1) {
72
+ if (fiberDisabled(current)) return true;
73
+ if (sameFiber(current, host)) return false;
74
+ current = getReturn(current);
75
+ }
76
+ return fiberDisabled(host);
77
+ }
78
+ //# sourceMappingURL=elementTargetMatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["MAX_ANCESTOR_WALK","getAlternate","getLiveHostProps","getMemoizedProps","getReturn","ANCHOR_PROP_TIERS","anchorIdsByTap","WeakMap","anchorIdsAboveTap","tap","cached","get","ids","Set","current","targetFiber","depth","props","tier","value","add","set","sameFiber","a","b","aAlt","bAlt","fiberIsUnder","node","host","fiberDisabled","fiber","disabled","state","accessibilityState","tapPathDisabled","tapped"],"sourceRoot":"../../../src","sources":["anchors/elementTargetMatch.ts"],"mappings":"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","ignoreList":[]}
@@ -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":";;AAAA,SAEEA,iBAAiB,EACjBC,QAAQ,EACRC,gBAAgB,EAChBC,SAAS,EACTC,UAAU,EACVC,WAAW,QACN,qBAAkB;AACzB,SAASC,iBAAiB,QAAQ,wBAAqB;;AAEvD;AACA;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG,MAAM;;AAExB;AACA,IAAIC,cAAc,GAAG,KAAK;AAI1B,MAAMC,UAA4B,GAAG,CAAC,QAAQ,EAAE,UAAU,EAAE,oBAAoB,CAAC;AAOjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,eAAeA,CAACC,SAAmB,EAAEC,EAAU,EAAyB;EACtF,IAAI,CAACD,SAAS,IAAI,CAACC,EAAE,EAAE,OAAO;IAAEC,MAAM,EAAE;EAAU,CAAC;EAEnD,IAAI;IACF,MAAMC,MAA0C,GAAG;MACjDC,MAAM,EAAE,EAAE;MACVC,QAAQ,EAAE,EAAE;MACZC,kBAAkB,EAAE;IACtB,CAAC;IAED,MAAM;MAAEC,OAAO;MAAEC;IAAU,CAAC,GAAGb,iBAAiB,CAC9CK,SAAS,EACRS,KAAK,IAAK;MACT,MAAMC,KAAK,GAAGnB,gBAAgB,CAACkB,KAAK,CAAC;MACrC,IAAI,CAACC,KAAK,EAAE;MACZ,IAAI,OAAOA,KAAK,CAACN,MAAM,KAAK,QAAQ,IAAIM,KAAK,CAACN,MAAM,KAAKH,EAAE,EAAE;QAC3DE,MAAM,CAACC,MAAM,CAACO,IAAI,CAACF,KAAK,CAAC;MAC3B;MACA,IAAI,OAAOC,KAAK,CAACL,QAAQ,KAAK,QAAQ,IAAIK,KAAK,CAACL,QAAQ,KAAKJ,EAAE,EAAE;QAC/DE,MAAM,CAACE,QAAQ,CAACM,IAAI,CAACF,KAAK,CAAC;MAC7B;MACA,IAAI,OAAOC,KAAK,CAACJ,kBAAkB,KAAK,QAAQ,IAAII,KAAK,CAACJ,kBAAkB,KAAKL,EAAE,EAAE;QACnFE,MAAM,CAACG,kBAAkB,CAACK,IAAI,CAACF,KAAK,CAAC;MACvC;IACF,CAAC,EACDb,SACF,CAAC;IAED,IAAIY,SAAS,IAAID,OAAO,IAAIX,SAAS,EAAE;MACrC;MACA;MACA,MAAMgB,IAAI,GAAIC,OAAe,IAAWC,OAAO,CAACF,IAAI,CAACC,OAAO,CAAC;MAC7D,IAAIE,OAAO,EAAE;QACXH,IAAI,CACF,+BAA+BX,EAAE,mBAAmBL,SAAS,UAAU,GACrE,yEAAyE,GACzE,sBAAsBK,EAAE,sBAC5B,CAAC;MACH,CAAC,MAAM,IAAI,CAACJ,cAAc,EAAE;QAC1BA,cAAc,GAAG,IAAI;QACrBe,IAAI,CACF,wCAAwChB,SAAS,2BAA2B,GAC1E,8DACJ,CAAC;MACH;IACF;IAEA,KAAK,MAAMoB,IAAI,IAAIlB,UAAU,EAAE;MAC7B,MAAMmB,OAAO,GAAGd,MAAM,CAACa,IAAI,CAAC;MAC5B,IAAIC,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE;MAE1B,MAAMC,KAAK,GAAGC,WAAW,CAACH,OAAO,CAAC;MAClC,IAAIE,KAAK,CAACD,MAAM,KAAK,CAAC,EAAE;MACxB,IAAIC,KAAK,CAACD,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO;UAAEhB,MAAM,EAAE,OAAO;UAAEO,KAAK,EAAEU,KAAK,CAAC,CAAC,CAAE;UAAEH;QAAK,CAAC;MACpD;MAEA,MAAMK,SAAS,GAAGC,gBAAgB,CAACH,KAAK,CAAC;MACzC,IAAIE,SAAS,CAACH,MAAM,KAAK,CAAC,EAAE;QAC1B,OAAO;UAAEhB,MAAM,EAAE,OAAO;UAAEO,KAAK,EAAEY,SAAS,CAAC,CAAC,CAAE;UAAEL;QAAK,CAAC;MACxD;MACA,OAAO;QAAEd,MAAM,EAAE,WAAW;QAAEc;MAAK,CAAC;IACtC;IAEA,OAAO;MAAEd,MAAM,EAAE;IAAU,CAAC;EAC9B,CAAC,CAAC,MAAM;IACN,OAAO;MAAEA,MAAM,EAAE;IAAU,CAAC;EAC9B;AACF;;AAEA;AACA;AACA;AACA;AACA,SAASkB,WAAWA,CAACH,OAAmB,EAAc;EACpD,MAAMM,SAAS,GAAGC,oBAAoB,CAACP,OAAO,CAAC;EAC/C,MAAMQ,IAAI,GAAG,IAAIC,GAAG,CAAW,CAAC;EAChC,MAAMC,GAAe,GAAG,EAAE;EAC1B,KAAK,MAAMC,KAAK,IAAIX,OAAO,EAAE;IAC3B,MAAMY,IAAI,GAAGnC,WAAW,CAACkC,KAAK,CAAC,GAAGA,KAAK,GAAGE,aAAa,CAACF,KAAK,EAAEL,SAAS,CAACQ,GAAG,CAACH,KAAK,CAAC,CAAC;IACpF,IAAI,CAACC,IAAI,EAAE;IACX,MAAMG,QAAQ,GAAGH,IAAI,CAACI,SAAS,IAAIJ,IAAI;IACvC,IAAIJ,IAAI,CAACS,GAAG,CAACL,IAAI,CAAC,IAAIJ,IAAI,CAACS,GAAG,CAACF,QAAQ,CAAC,EAAE;IAC1CP,IAAI,CAACU,GAAG,CAACN,IAAI,CAAC;IACdJ,IAAI,CAACU,GAAG,CAACH,QAAQ,CAAC;IAClB,IAAIH,IAAI,CAACI,SAAS,EAAER,IAAI,CAACU,GAAG,CAACN,IAAI,CAACI,SAAS,CAAC;IAC5CN,GAAG,CAAChB,IAAI,CAACkB,IAAI,CAAC;EAChB;EACA,OAAOF,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,aAAaA,CAACM,SAAmB,EAAEC,QAAgC,EAAmB;EAC7F,MAAMC,MAAM,GAAGD,QAAQ,GAAGf,gBAAgB,CAACe,QAAQ,CAAC,GAAG,EAAE;EACzD,IAAIC,MAAM,CAACpB,MAAM,KAAK,CAAC,EAAE,OAAOoB,MAAM,CAAC,CAAC,CAAC;EACzC,OAAOC,qBAAqB,CAACH,SAAS,CAAC;AACzC;;AAEA;AACA,SAASZ,oBAAoBA,CAACP,OAAmB,EAA6B;EAC5E,MAAMuB,UAAU,GAAG,IAAIC,GAAG,CAAqB,CAAC;EAChD,KAAK,MAAMb,KAAK,IAAIX,OAAO,EAAE;IAC3B,IAAIvB,WAAW,CAACkC,KAAK,CAAC,EAAE;IACxBY,UAAU,CAACE,GAAG,CAACd,KAAK,EAAEA,KAAK,CAAC;IAC5B,IAAIA,KAAK,CAACK,SAAS,EAAEO,UAAU,CAACE,GAAG,CAACd,KAAK,CAACK,SAAS,EAAEL,KAAK,CAAC;EAC7D;EACA,MAAMD,GAAG,GAAG,IAAIc,GAAG,CAAuB,CAAC;EAC3C,IAAID,UAAU,CAACG,IAAI,KAAK,CAAC,EAAE,OAAOhB,GAAG;EACrC,KAAK,MAAME,IAAI,IAAIZ,OAAO,EAAE;IAC1B,IAAI,CAACvB,WAAW,CAACmC,IAAI,CAAC,EAAE;IACxB,IAAIe,GAAG,GAAGpD,SAAS,CAACqC,IAAI,CAAC;IACzB,KAAK,IAAIgB,KAAK,GAAG,CAAC,EAAED,GAAG,IAAIC,KAAK,GAAGxD,iBAAiB,EAAEwD,KAAK,IAAI,CAAC,EAAE;MAChE,MAAMT,SAAS,GAAGI,UAAU,CAACT,GAAG,CAACa,GAAG,CAAC;MACrC,IAAIR,SAAS,EAAE;QACb,MAAMC,QAAQ,GAAGV,GAAG,CAACI,GAAG,CAACK,SAAS,CAAC;QACnC,IAAIC,QAAQ,EAAEA,QAAQ,CAAC1B,IAAI,CAACkB,IAAI,CAAC,CAAC,KAC7BF,GAAG,CAACe,GAAG,CAACN,SAAS,EAAE,CAACP,IAAI,CAAC,CAAC;MACjC;MACAe,GAAG,GAAGpD,SAAS,CAACoD,GAAG,CAAC;IACtB;EACF;EACA,OAAOjB,GAAG;AACZ;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASY,qBAAqBA,CAAC9B,KAAe,EAAEqC,QAAQ,GAAG,KAAK,EAAmB;EACxF,IAAI,CAACrC,KAAK,EAAE,OAAO,IAAI;EACvB,IAAIf,WAAW,CAACe,KAAK,CAAC,EAAE,OAAOA,KAAK;EAEpC,MAAMsC,KAAiB,GAAG,CAACtC,KAAK,CAAC;EACjC,IAAIF,OAAO,GAAG,CAAC;EACf,OAAOwC,KAAK,CAAC7B,MAAM,GAAG,CAAC,IAAIX,OAAO,GAAGuC,QAAQ,EAAE;IAC7C,MAAME,CAAC,GAAGD,KAAK,CAACE,KAAK,CAAC,CAAC;IACvB,IAAI,CAACD,CAAC,EAAE;IACRzC,OAAO,IAAI,CAAC;IACZ,IAAIyC,CAAC,KAAKvC,KAAK,IAAIf,WAAW,CAACsD,CAAC,CAAC,EAAE,OAAOA,CAAC;IAC3C,IAAIE,KAAK,GAAG5D,QAAQ,CAAC0D,CAAC,CAAC;IACvB,OAAOE,KAAK,EAAE;MACZH,KAAK,CAACpC,IAAI,CAACuC,KAAK,CAAC;MACjBA,KAAK,GAAGzD,UAAU,CAACyD,KAAK,CAAC;IAC3B;EACF;EACA,OAAO,IAAI;AACb;;AAEA;AACA;AACA;AACA;AACA,SAAS5B,gBAAgBA,CAACH,KAAiB,EAAc;EACvD,IAAIA,KAAK,CAACD,MAAM,IAAI,CAAC,EAAE,OAAOC,KAAK;;EAEnC;EACA,MAAMgC,SAAqB,GAAG,EAAE;EAChC,KAAK,MAAMC,SAAS,IAAIjC,KAAK,EAAE;IAC7B,IAAIkC,SAAS,GAAG,KAAK;IACrB,KAAK,IAAIC,CAAC,GAAGH,SAAS,CAACjC,MAAM,GAAG,CAAC,EAAEoC,CAAC,IAAI,CAAC,EAAEA,CAAC,IAAI,CAAC,EAAE;MACjD,MAAMC,KAAK,GAAGJ,SAAS,CAACG,CAAC,CAAE;MAC3B,IAAIE,YAAY,CAACD,KAAK,EAAEH,SAAS,CAAC,EAAE;QAClC;QACAC,SAAS,GAAG,IAAI;QAChB;MACF;MACA,IAAIG,YAAY,CAACJ,SAAS,EAAEG,KAAK,CAAC,EAAE;QAClC;QACAJ,SAAS,CAACM,MAAM,CAACH,CAAC,EAAE,CAAC,CAAC;MACxB;IACF;IACA,IAAI,CAACD,SAAS,EAAEF,SAAS,CAACxC,IAAI,CAACyC,SAAS,CAAC;EAC3C;EACA,OAAOD,SAAS;AAClB;AAEA,SAASK,YAAYA,CAACE,QAAkB,EAAEC,UAAoB,EAAW;EACvE,IAAIf,GAAa,GAAGe,UAAU;EAC9B,KAAK,IAAId,KAAK,GAAG,CAAC,EAAED,GAAG,IAAIC,KAAK,GAAGxD,iBAAiB,EAAEwD,KAAK,IAAI,CAAC,EAAE;IAChE,IAAID,GAAG,KAAKc,QAAQ,EAAE,OAAO,IAAI;IACjC,IAAIA,QAAQ,CAACzB,SAAS,IAAIW,GAAG,KAAKc,QAAQ,CAACzB,SAAS,EAAE,OAAO,IAAI;IACjEW,GAAG,GAAGpD,SAAS,CAACoD,GAAG,CAAC;EACtB;EACA,OAAO,KAAK;AACd","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":[]}