@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
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import AsyncStorage from '@react-native-async-storage/async-storage';
4
3
  import { uuid } from "../anonymousId.js";
4
+ import { getAsyncStorage } from "../storage/asyncStorage.js";
5
5
 
6
6
  /**
7
7
  * Stable id for this install on the pairing channel.
@@ -14,20 +14,24 @@ export const PAIRING_DEVICE_ID_STORAGE_KEY = 'userflow:pairingDeviceId';
14
14
  let memoized = null;
15
15
  export async function getOrCreatePairingDeviceId() {
16
16
  if (memoized !== null) return memoized;
17
- try {
18
- const stored = await AsyncStorage.getItem(PAIRING_DEVICE_ID_STORAGE_KEY);
19
- if (typeof stored === 'string' && stored.length > 0) {
20
- memoized = stored;
21
- return stored;
17
+ const storage = getAsyncStorage();
18
+ if (storage) {
19
+ try {
20
+ const stored = await storage.getItem(PAIRING_DEVICE_ID_STORAGE_KEY);
21
+ if (typeof stored === 'string' && stored.length > 0) {
22
+ memoized = stored;
23
+ return stored;
24
+ }
25
+ } catch {
26
+ memoized = uuid();
27
+ return memoized;
22
28
  }
23
- } catch {
24
- memoized = uuid();
25
- return memoized;
26
29
  }
27
30
  const created = uuid();
28
31
  memoized = created;
32
+ if (!storage) return created;
29
33
  try {
30
- await AsyncStorage.setItem(PAIRING_DEVICE_ID_STORAGE_KEY, created);
34
+ await storage.setItem(PAIRING_DEVICE_ID_STORAGE_KEY, created);
31
35
  } catch {
32
36
  // Keep the in-memory id for this process. A later launch may mint another.
33
37
  }
@@ -1 +1 @@
1
- {"version":3,"names":["AsyncStorage","uuid","PAIRING_DEVICE_ID_STORAGE_KEY","memoized","getOrCreatePairingDeviceId","stored","getItem","length","created","setItem","resetPairingDeviceIdForTests"],"sourceRoot":"../../../src","sources":["pairing/deviceId.ts"],"mappings":";;AAAA,OAAOA,YAAY,MAAM,2CAA2C;AAEpE,SAASC,IAAI,QAAQ,mBAAgB;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,6BAA6B,GAAG,0BAA0B;AAEvE,IAAIC,QAAuB,GAAG,IAAI;AAElC,OAAO,eAAeC,0BAA0BA,CAAA,EAAoB;EAClE,IAAID,QAAQ,KAAK,IAAI,EAAE,OAAOA,QAAQ;EAEtC,IAAI;IACF,MAAME,MAAM,GAAG,MAAML,YAAY,CAACM,OAAO,CAACJ,6BAA6B,CAAC;IACxE,IAAI,OAAOG,MAAM,KAAK,QAAQ,IAAIA,MAAM,CAACE,MAAM,GAAG,CAAC,EAAE;MACnDJ,QAAQ,GAAGE,MAAM;MACjB,OAAOA,MAAM;IACf;EACF,CAAC,CAAC,MAAM;IACNF,QAAQ,GAAGF,IAAI,CAAC,CAAC;IACjB,OAAOE,QAAQ;EACjB;EAEA,MAAMK,OAAO,GAAGP,IAAI,CAAC,CAAC;EACtBE,QAAQ,GAAGK,OAAO;EAClB,IAAI;IACF,MAAMR,YAAY,CAACS,OAAO,CAACP,6BAA6B,EAAEM,OAAO,CAAC;EACpE,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,OAAOA,OAAO;AAChB;;AAEA;AACA,OAAO,SAASE,4BAA4BA,CAAA,EAAS;EACnDP,QAAQ,GAAG,IAAI;AACjB","ignoreList":[]}
1
+ {"version":3,"names":["uuid","getAsyncStorage","PAIRING_DEVICE_ID_STORAGE_KEY","memoized","getOrCreatePairingDeviceId","storage","stored","getItem","length","created","setItem","resetPairingDeviceIdForTests"],"sourceRoot":"../../../src","sources":["pairing/deviceId.ts"],"mappings":";;AAAA,SAASA,IAAI,QAAQ,mBAAgB;AACrC,SAASC,eAAe,QAAQ,4BAAyB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,6BAA6B,GAAG,0BAA0B;AAEvE,IAAIC,QAAuB,GAAG,IAAI;AAElC,OAAO,eAAeC,0BAA0BA,CAAA,EAAoB;EAClE,IAAID,QAAQ,KAAK,IAAI,EAAE,OAAOA,QAAQ;EAEtC,MAAME,OAAO,GAAGJ,eAAe,CAAC,CAAC;EACjC,IAAII,OAAO,EAAE;IACX,IAAI;MACF,MAAMC,MAAM,GAAG,MAAMD,OAAO,CAACE,OAAO,CAACL,6BAA6B,CAAC;MACnE,IAAI,OAAOI,MAAM,KAAK,QAAQ,IAAIA,MAAM,CAACE,MAAM,GAAG,CAAC,EAAE;QACnDL,QAAQ,GAAGG,MAAM;QACjB,OAAOA,MAAM;MACf;IACF,CAAC,CAAC,MAAM;MACNH,QAAQ,GAAGH,IAAI,CAAC,CAAC;MACjB,OAAOG,QAAQ;IACjB;EACF;EAEA,MAAMM,OAAO,GAAGT,IAAI,CAAC,CAAC;EACtBG,QAAQ,GAAGM,OAAO;EAClB,IAAI,CAACJ,OAAO,EAAE,OAAOI,OAAO;EAC5B,IAAI;IACF,MAAMJ,OAAO,CAACK,OAAO,CAACR,6BAA6B,EAAEO,OAAO,CAAC;EAC/D,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,OAAOA,OAAO;AAChB;;AAEA;AACA,OAAO,SAASE,4BAA4BA,CAAA,EAAS;EACnDR,QAAQ,GAAG,IAAI;AACjB","ignoreList":[]}
@@ -6,34 +6,47 @@
6
6
  * the in-memory fallback does not survive a process restart.
7
7
  */
8
8
 
9
+ import { isNativeModuleLinked } from "../nativeModules.js";
9
10
  import { parsePairingPurpose } from "./deepLink.js";
10
11
 
11
12
  // SecureStore rejects keys outside [A-Za-z0-9._-], so no `userflow:` prefix here.
12
13
  export const PAIRING_TOKEN_STORAGE_KEY = 'userflow.pairingToken';
13
14
  export const PAIRING_PURPOSE_STORAGE_KEY = 'userflow.pairingPurpose';
14
15
  let cachedSecureStore;
16
+ const SECURE_STORE_MODULE = 'ExpoSecureStore';
17
+ const SECURE_STORE_UNAVAILABLE_WARNING = '[Userflow] Optional peer expo-secure-store is unavailable; ' + 'pairing JWT persistence falls back to in-memory storage.';
15
18
 
16
19
  /** Expo modules must be installed natively — not just the JS package. */
17
20
  function isExpoModulesRuntimeAvailable() {
18
21
  const expo = globalThis.expo;
19
22
  return typeof expo?.EventEmitter === 'function';
20
23
  }
24
+ function warnSecureStoreUnavailable() {
25
+ if (!__DEV__) return;
26
+ // eslint-disable-next-line no-console -- intentional missing-optional-peer diagnostic
27
+ console.warn(SECURE_STORE_UNAVAILABLE_WARNING);
28
+ }
21
29
  function tryLoadExpoSecureStore() {
22
30
  if (cachedSecureStore !== undefined) return cachedSecureStore;
23
31
  if (typeof require !== 'function' || !isExpoModulesRuntimeAvailable()) {
24
32
  cachedSecureStore = null;
25
33
  return cachedSecureStore;
26
34
  }
35
+
36
+ // expo-secure-store calls requireNativeModule at import and throws when the
37
+ // native module is missing. Metro reports that as fatal before try/catch.
38
+ if (!isNativeModuleLinked(SECURE_STORE_MODULE)) {
39
+ cachedSecureStore = null;
40
+ warnSecureStoreUnavailable();
41
+ return cachedSecureStore;
42
+ }
27
43
  try {
28
44
  // Optional peer — absent in bare RN without expo-secure-store.
29
45
  // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires -- optional peer at import time
30
46
  cachedSecureStore = require('expo-secure-store');
31
47
  } catch {
32
48
  cachedSecureStore = null;
33
- if (__DEV__) {
34
- // eslint-disable-next-line no-console -- intentional missing-optional-peer diagnostic
35
- console.warn('[Userflow] Optional peer expo-secure-store is unavailable; ' + 'pairing JWT persistence falls back to in-memory storage.');
36
- }
49
+ warnSecureStoreUnavailable();
37
50
  }
38
51
  return cachedSecureStore;
39
52
  }
@@ -1 +1 @@
1
- {"version":3,"names":["parsePairingPurpose","PAIRING_TOKEN_STORAGE_KEY","PAIRING_PURPOSE_STORAGE_KEY","cachedSecureStore","isExpoModulesRuntimeAvailable","expo","globalThis","EventEmitter","tryLoadExpoSecureStore","undefined","require","__DEV__","console","warn","createMemoryPairingTokenStore","value","purposeValue","get","set","token","clear","getPurpose","setPurpose","purpose","createPairingTokenStore","secure","getItemAsync","setItemAsync","error","Error","message","String","deleteItemAsync","resetPairingTokenStoreCacheForTests"],"sourceRoot":"../../../src","sources":["pairing/tokenStorage.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isNativeModuleLinked","parsePairingPurpose","PAIRING_TOKEN_STORAGE_KEY","PAIRING_PURPOSE_STORAGE_KEY","cachedSecureStore","SECURE_STORE_MODULE","SECURE_STORE_UNAVAILABLE_WARNING","isExpoModulesRuntimeAvailable","expo","globalThis","EventEmitter","warnSecureStoreUnavailable","__DEV__","console","warn","tryLoadExpoSecureStore","undefined","require","createMemoryPairingTokenStore","value","purposeValue","get","set","token","clear","getPurpose","setPurpose","purpose","createPairingTokenStore","secure","getItemAsync","setItemAsync","error","Error","message","String","deleteItemAsync","resetPairingTokenStoreCacheForTests"],"sourceRoot":"../../../src","sources":["pairing/tokenStorage.ts"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,8 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { StyleSheet, View } from 'react-native';
5
+ import { elementTapMonitor } from "../anchors/elementTapMonitor.js";
6
+ import { touchBelongsToEvent, touchTargetFiber } from "../anchors/fiber/touchTargetFiber.js";
5
7
  import { targetPressMonitor } from "../anchors/targetPressMonitor.js";
6
8
  import { changedTouchPoints, forEachChangedTouch } from "./changedTouchPoints.js";
7
9
  import { isolateSync } from "./isolateCall.js";
@@ -13,7 +15,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
13
15
  *
14
16
  * The Userflow overlay is a sibling above the app, so hole Pressables would
15
17
  * intercept presses. Instead we hit-test bubbled `onTouchStart` / `onTouchEnd`
16
- * against the rect registered by {@link TooltipSurface}.
18
+ * against the rect registered by {@link TooltipSurface}, and — while an
19
+ * element click condition is tracked — against the fiber under the finger.
17
20
  *
18
21
  * Preview-chrome double taps are observed by `DoubleTapBridge` around the
19
22
  * whole provider tree — this bridge never sees overlay touches.
@@ -25,15 +28,21 @@ export function TargetPressBridge({
25
28
  }) {
26
29
  const onTouchStart = React.useCallback(event => {
27
30
  isolateSync('target-press', () => {
31
+ const observingTaps = elementTapMonitor.subscriberCount > 0;
28
32
  forEachChangedTouch(event, (identifier, pageX, pageY) => {
29
33
  targetPressMonitor.handleTouchStart(identifier, pageX, pageY);
34
+ if (!observingTaps || !touchBelongsToEvent(event, identifier)) return;
35
+ elementTapMonitor.handleTouchStart(identifier, pageX, pageY, touchTargetFiber(event, identifier));
30
36
  });
31
37
  });
32
38
  }, []);
33
39
  const onTouchEnd = React.useCallback(event => {
34
40
  isolateSync('target-press', () => {
41
+ const observingTaps = elementTapMonitor.subscriberCount > 0;
35
42
  forEachChangedTouch(event, (identifier, pageX, pageY) => {
36
43
  targetPressMonitor.handleTouchEnd(identifier, pageX, pageY);
44
+ if (!observingTaps) return;
45
+ elementTapMonitor.handleTouchEnd(identifier, pageX, pageY);
37
46
  });
38
47
  });
39
48
  }, []);
@@ -42,10 +51,12 @@ export function TargetPressBridge({
42
51
  const points = changedTouchPoints(event);
43
52
  if (points.length === 0) {
44
53
  targetPressMonitor.cancelTouch();
54
+ elementTapMonitor.cancelTouch();
45
55
  return;
46
56
  }
47
57
  for (const touch of points) {
48
58
  targetPressMonitor.cancelTouch(touch.identifier);
59
+ elementTapMonitor.cancelTouch(touch.identifier);
49
60
  }
50
61
  });
51
62
  }, []);
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","targetPressMonitor","changedTouchPoints","forEachChangedTouch","isolateSync","jsx","_jsx","TargetPressBridge","children","onTouchStart","useCallback","event","identifier","pageX","pageY","handleTouchStart","onTouchEnd","handleTouchEnd","onTouchCancel","points","length","cancelTouch","touch","style","styles","root","collapsable","testID","create","flex"],"sourceRoot":"../../../src","sources":["runtime/TargetPressBridge.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,EAAEC,IAAI,QAAoC,cAAc;AAE3E,SAASC,kBAAkB,QAAQ,kCAA+B;AAElE,SAASC,kBAAkB,EAAEC,mBAAmB,QAAQ,yBAAsB;AAC9E,SAASC,WAAW,QAAQ,kBAAe;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAM5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,iBAAiBA,CAAC;EAAEC;AAAiC,CAAC,EAAsB;EAC1F,MAAMC,YAAY,GAAGX,KAAK,CAACY,WAAW,CAAEC,KAA4B,IAAK;IACvEP,WAAW,CAAC,cAAc,EAAE,MAAM;MAChCD,mBAAmB,CAACQ,KAAK,EAAE,CAACC,UAAU,EAAEC,KAAK,EAAEC,KAAK,KAAK;QACvDb,kBAAkB,CAACc,gBAAgB,CAACH,UAAU,EAAEC,KAAK,EAAEC,KAAK,CAAC;MAC/D,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAME,UAAU,GAAGlB,KAAK,CAACY,WAAW,CAAEC,KAA4B,IAAK;IACrEP,WAAW,CAAC,cAAc,EAAE,MAAM;MAChCD,mBAAmB,CAACQ,KAAK,EAAE,CAACC,UAAU,EAAEC,KAAK,EAAEC,KAAK,KAAK;QACvDb,kBAAkB,CAACgB,cAAc,CAACL,UAAU,EAAEC,KAAK,EAAEC,KAAK,CAAC;MAC7D,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMI,aAAa,GAAGpB,KAAK,CAACY,WAAW,CAAEC,KAA4B,IAAK;IACxEP,WAAW,CAAC,cAAc,EAAE,MAAM;MAChC,MAAMe,MAAM,GAAGjB,kBAAkB,CAACS,KAAK,CAAC;MACxC,IAAIQ,MAAM,CAACC,MAAM,KAAK,CAAC,EAAE;QACvBnB,kBAAkB,CAACoB,WAAW,CAAC,CAAC;QAChC;MACF;MACA,KAAK,MAAMC,KAAK,IAAIH,MAAM,EAAE;QAC1BlB,kBAAkB,CAACoB,WAAW,CAACC,KAAK,CAACV,UAAU,CAAC;MAClD;IACF,CAAC,CAAC;EACJ,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEN,IAAA,CAACN,IAAI;IACHuB,KAAK,EAAEC,MAAM,CAACC,IAAK;IACnBC,WAAW,EAAE,KAAM;IACnBjB,YAAY,EAAEA,YAAa;IAC3BO,UAAU,EAAEA,UAAW;IACvBE,aAAa,EAAEA,aAAc;IAC7BS,MAAM,EAAC,8BAA8B;IAAAnB,QAAA,EAEpCA;EAAQ,CACL,CAAC;AAEX;AAEA,MAAMgB,MAAM,GAAGzB,UAAU,CAAC6B,MAAM,CAAC;EAC/BH,IAAI,EAAE;IACJI,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","View","elementTapMonitor","touchBelongsToEvent","touchTargetFiber","targetPressMonitor","changedTouchPoints","forEachChangedTouch","isolateSync","jsx","_jsx","TargetPressBridge","children","onTouchStart","useCallback","event","observingTaps","subscriberCount","identifier","pageX","pageY","handleTouchStart","onTouchEnd","handleTouchEnd","onTouchCancel","points","length","cancelTouch","touch","style","styles","root","collapsable","testID","create","flex"],"sourceRoot":"../../../src","sources":["runtime/TargetPressBridge.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ import { FiberScanRoot } from "../anchors/fiber/FiberScanRoot.js";
6
6
  import { DoubleTapBridge } from "../authoring/chrome/DoubleTapBridge.js";
7
7
  import { elementPickerController } from "../authoring/elementPickerController.js";
8
8
  import { ABSOLUTE_FILL } from "../surfaces/absoluteFill.js";
9
- import { getSafeAreaInsetsContext, useUserflowSafeAreaInsets } from "../surfaces/safeArea.js";
9
+ import { getSafeAreaInsetsContext, useParentSafeAreaInsets, useUserflowSafeAreaInsets } from "../surfaces/safeArea.js";
10
10
  import { SurfaceLayoutInsetsProvider } from "../surfaces/surfaceLayoutInsets.js";
11
11
  import { BannerHost } from "./BannerHost.js";
12
12
  import { SdkErrorBoundary } from "./SdkErrorBoundary.js";
@@ -175,14 +175,17 @@ function HostSafeArea({
175
175
  children
176
176
  }) {
177
177
  const Context = getSafeAreaInsetsContext();
178
- const defaultInsets = useUserflowSafeAreaInsets();
179
- if (!Context) {
178
+ // Re-provide only when a parent already supplied insets, or when a banner
179
+ // override applies. Supplying a value with no parent would hide the host's
180
+ // own missing SafeAreaProvider from its useSafeAreaInsets() calls.
181
+ const parent = useParentSafeAreaInsets();
182
+ if (!Context || insets == null && parent == null) {
180
183
  return /*#__PURE__*/_jsx(_Fragment, {
181
184
  children: children
182
185
  });
183
186
  }
184
187
  return /*#__PURE__*/_jsx(Context.Provider, {
185
- value: insets ?? defaultInsets,
188
+ value: insets ?? parent,
186
189
  children: children
187
190
  });
188
191
  }
@@ -1 +1 @@
1
- {"version":3,"names":["React","StyleSheet","View","FiberScanRoot","DoubleTapBridge","elementPickerController","ABSOLUTE_FILL","getSafeAreaInsetsContext","useUserflowSafeAreaInsets","SurfaceLayoutInsetsProvider","BannerHost","SdkErrorBoundary","TargetPressBridge","UserflowOverlay","getBannerSessionEngine","BannerEngineContext","bannerEdge","getFlowSessionEngine","isolateSync","useBannerSession","getUserflowCore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","UserflowContext","createContext","overlayResetKeyFromEngine","engine","session","getFlowSession","id","getCurrentStep","useOverlayErrorBoundaryResetKey","resetKey","setResetKey","useState","useEffect","apply","next","on","UserflowProvider","children","engineProp","bannerEngine","bannerEngineProp","contextValue","useMemo","overlayResetKey","trapHostAccessibility","setTrapHostAccessibility","onTrapChange","useCallback","trap","onOverlayError","bannerSession","safeInsets","pickerActive","setPickerActive","getState","active","subscribe","banner","version","flowEdge","overlay","embedMode","hostInsets","top","bottom","appContent","style","styles","testID","importantForAccessibility","undefined","accessibilityElementsHidden","Provider","value","root","collapsable","placement","edge","hidden","HostSafeArea","insets","pointerEvents","scope","onError","Context","defaultInsets","useUserflow","ctx","useContext","Error","create","flex"],"sourceRoot":"../../../src","sources":["runtime/UserflowProvider.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","StyleSheet","View","FiberScanRoot","DoubleTapBridge","elementPickerController","ABSOLUTE_FILL","getSafeAreaInsetsContext","useParentSafeAreaInsets","useUserflowSafeAreaInsets","SurfaceLayoutInsetsProvider","BannerHost","SdkErrorBoundary","TargetPressBridge","UserflowOverlay","getBannerSessionEngine","BannerEngineContext","bannerEdge","getFlowSessionEngine","isolateSync","useBannerSession","getUserflowCore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","UserflowContext","createContext","overlayResetKeyFromEngine","engine","session","getFlowSession","id","getCurrentStep","useOverlayErrorBoundaryResetKey","resetKey","setResetKey","useState","useEffect","apply","next","on","UserflowProvider","children","engineProp","bannerEngine","bannerEngineProp","contextValue","useMemo","overlayResetKey","trapHostAccessibility","setTrapHostAccessibility","onTrapChange","useCallback","trap","onOverlayError","bannerSession","safeInsets","pickerActive","setPickerActive","getState","active","subscribe","banner","version","flowEdge","overlay","embedMode","hostInsets","top","bottom","appContent","style","styles","testID","importantForAccessibility","undefined","accessibilityElementsHidden","Provider","value","root","collapsable","placement","edge","hidden","HostSafeArea","insets","pointerEvents","scope","onError","Context","parent","useUserflow","ctx","useContext","Error","create","flex"],"sourceRoot":"../../../src","sources":["runtime/UserflowProvider.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ const ASYNC_STORAGE_NATIVE_MODULES = ['RNAsyncStorage', 'RNCAsyncStorage', 'RNC_AsyncSQLiteDBStorage', 'PlatformLocalStorage', 'AsyncSQLiteDBStorage', 'AsyncLocalStorage'];
4
+ let cached;
5
+ function loadReactNative() {
6
+ try {
7
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
8
+ return require('react-native');
9
+ } catch {
10
+ return null;
11
+ }
12
+ }
13
+ function nativeModuleRegistered(name, reactNative) {
14
+ try {
15
+ const turbo = reactNative.TurboModuleRegistry;
16
+ if (typeof turbo?.get === 'function' && turbo.get(name) != null) {
17
+ return true;
18
+ }
19
+ } catch {
20
+ // A missing turbo registry is not a failed link check.
21
+ }
22
+ try {
23
+ return reactNative.NativeModules?.[name] != null;
24
+ } catch {
25
+ return false;
26
+ }
27
+ }
28
+
29
+ /** True when some AsyncStorage native binary is in this build. */
30
+ export function isAsyncStorageLinked() {
31
+ const reactNative = loadReactNative();
32
+ if (!reactNative) return false;
33
+ return ASYNC_STORAGE_NATIVE_MODULES.some(name => nativeModuleRegistered(name, reactNative));
34
+ }
35
+
36
+ /**
37
+ * The AsyncStorage JS API, or `null` when the package or its native module is
38
+ * missing. Never requires the package until the native module is registered.
39
+ */
40
+ export function getAsyncStorage() {
41
+ if (cached !== undefined) return cached;
42
+ if (typeof require !== 'function' || !isAsyncStorageLinked()) {
43
+ cached = null;
44
+ return cached;
45
+ }
46
+ try {
47
+ // eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
48
+ const mod = require('@react-native-async-storage/async-storage');
49
+ const storage = mod?.default ?? mod;
50
+ cached = typeof storage?.getItem === 'function' && typeof storage.setItem === 'function' && typeof storage.removeItem === 'function' ? storage : null;
51
+ } catch {
52
+ cached = null;
53
+ }
54
+ return cached;
55
+ }
56
+
57
+ /** @internal */
58
+ export function resetAsyncStorageCacheForTests() {
59
+ cached = undefined;
60
+ }
61
+ //# sourceMappingURL=asyncStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ASYNC_STORAGE_NATIVE_MODULES","cached","loadReactNative","require","nativeModuleRegistered","name","reactNative","turbo","TurboModuleRegistry","get","NativeModules","isAsyncStorageLinked","some","getAsyncStorage","undefined","mod","storage","default","getItem","setItem","removeItem","resetAsyncStorageCacheForTests"],"sourceRoot":"../../../src","sources":["storage/asyncStorage.ts"],"mappings":";;AAIA,MAAMA,4BAA4B,GAAG,CACnC,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,CACX;AAQV,IAAIC,MAA2C;AAE/C,SAASC,eAAeA,CAAA,EAAmC;EACzD,IAAI;IACF;IACA,OAAOC,OAAO,CAAC,cAAc,CAAC;EAChC,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,SAASC,sBAAsBA,CAACC,IAAY,EAAEC,WAAoC,EAAW;EAC3F,IAAI;IACF,MAAMC,KAAK,GAAGD,WAAW,CAACE,mBAAmB;IAC7C,IAAI,OAAOD,KAAK,EAAEE,GAAG,KAAK,UAAU,IAAIF,KAAK,CAACE,GAAG,CAACJ,IAAI,CAAC,IAAI,IAAI,EAAE;MAC/D,OAAO,IAAI;IACb;EACF,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,IAAI;IACF,OAAOC,WAAW,CAACI,aAAa,GAAGL,IAAI,CAAC,IAAI,IAAI;EAClD,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF;;AAEA;AACA,OAAO,SAASM,oBAAoBA,CAAA,EAAY;EAC9C,MAAML,WAAW,GAAGJ,eAAe,CAAC,CAAC;EACrC,IAAI,CAACI,WAAW,EAAE,OAAO,KAAK;EAC9B,OAAON,4BAA4B,CAACY,IAAI,CAAEP,IAAI,IAAKD,sBAAsB,CAACC,IAAI,EAAEC,WAAW,CAAC,CAAC;AAC/F;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASO,eAAeA,CAAA,EAA4B;EACzD,IAAIZ,MAAM,KAAKa,SAAS,EAAE,OAAOb,MAAM;EAEvC,IAAI,OAAOE,OAAO,KAAK,UAAU,IAAI,CAACQ,oBAAoB,CAAC,CAAC,EAAE;IAC5DV,MAAM,GAAG,IAAI;IACb,OAAOA,MAAM;EACf;EAEA,IAAI;IACF;IACA,MAAMc,GAAG,GAAGZ,OAAO,CAAC,2CAA2C,CAElC;IAC7B,MAAMa,OAAO,GAAGD,GAAG,EAAEE,OAAO,IAAIF,GAAG;IACnCd,MAAM,GACJ,OAAOe,OAAO,EAAEE,OAAO,KAAK,UAAU,IACtC,OAAOF,OAAO,CAACG,OAAO,KAAK,UAAU,IACrC,OAAOH,OAAO,CAACI,UAAU,KAAK,UAAU,GACnCJ,OAAO,GACR,IAAI;EACZ,CAAC,CAAC,MAAM;IACNf,MAAM,GAAG,IAAI;EACf;EAEA,OAAOA,MAAM;AACf;;AAEA;AACA,OAAO,SAASoB,8BAA8BA,CAAA,EAAS;EACrDpB,MAAM,GAAGa,SAAS;AACpB","ignoreList":[]}
@@ -44,7 +44,9 @@ export function BannerSurface({
44
44
  if (!webView) {
45
45
  if (!warnedMissingWebView) {
46
46
  warnedMissingWebView = true;
47
- console.warn('Userflow: WebView banner requires react-native-webview in the native binary. ' + 'Add it to your app (e.g. npx expo install react-native-webview), run pod install under ios/, ' + 'then rebuild with expo run:ios (not Expo Go). Falling back to the native banner bar.');
47
+ if (__DEV__) {
48
+ console.warn('Userflow: WebView banner requires react-native-webview in the native binary. ' + 'Add it to your app (e.g. npx expo install react-native-webview), run pod install under ios/, ' + 'then rebuild with expo run:ios (not Expo Go). Falling back to the native banner bar.');
49
+ }
48
50
  }
49
51
  return /*#__PURE__*/_jsx(BannerBar, {
50
52
  session: session,
@@ -1 +1 @@
1
- {"version":3,"names":["React","evalJsController","getEvalJsWebView","BannerBar","BannerWebViewBar","clearBannerAutoRunEvalSession","bannerNeedsWebView","jsx","_jsx","warnedMissingWebView","BannerSurface","session","onActions","onDismiss","banner","version","theme","needsWebView","webView","useLayoutEffect","setBannerOwnsWebView","id","dismissWebViewBanner","useCallback","endReason","reset","console","warn","resetBannerSurfaceWarningsForTests"],"sourceRoot":"../../../src","sources":["surfaces/BannerSurface.tsx"],"mappings":";;AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,gBAAgB,QAAQ,+BAA4B;AAC7D,SAASC,gBAAgB,QAAQ,yBAAsB;AAEvD,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,gBAAgB,QAAQ,qCAAkC;AACnE,SAASC,6BAA6B,QAAQ,yCAAsC;AACpF,SAASC,kBAAkB,QAAQ,uCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxE,IAAIC,oBAAoB,GAAG,KAAK;;AAEhC;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAC;EAC5BC,OAAO;EACPC,SAAS;EACTC;AACkB,CAAC,EAA6B;EAChD,MAAMC,MAAM,GAAGH,OAAO,CAACI,OAAO,CAACD,MAAM;EACrC,MAAME,KAAK,GAAGL,OAAO,CAACI,OAAO,CAACC,KAAK;EACnC,MAAMC,YAAY,GAAGH,MAAM,IAAI,IAAI,IAAIR,kBAAkB,CAACQ,MAAM,EAAEE,KAAK,CAAC;EACxE,MAAME,OAAO,GAAGD,YAAY,GAAGf,gBAAgB,CAAC,CAAC,GAAG,IAAI;EAExDF,KAAK,CAACmB,eAAe,CAAC,MAAM;IAC1B,IAAI,CAACF,YAAY,IAAI,CAACC,OAAO,EAAE;MAC7B;IACF;IACAjB,gBAAgB,CAACmB,oBAAoB,CAAC,IAAI,CAAC;IAC3C,OAAO,MAAM;MACXnB,gBAAgB,CAACmB,oBAAoB,CAAC,KAAK,CAAC;IAC9C,CAAC;EACH,CAAC,EAAE,CAACH,YAAY,EAAEC,OAAO,EAAEP,OAAO,CAACU,EAAE,CAAC,CAAC;EAEvC,MAAMC,oBAAoB,GAAGtB,KAAK,CAACuB,WAAW,CAC3CC,SAA6B,IAAK;IACjCnB,6BAA6B,CAACM,OAAO,CAACU,EAAE,CAAC;IACzCpB,gBAAgB,CAACwB,KAAK,CAAC,CAAC;IACxBZ,SAAS,CAACW,SAAS,CAAC;EACtB,CAAC,EACD,CAACX,SAAS,EAAEF,OAAO,CAACU,EAAE,CACxB,CAAC;EAED,IAAI,CAACP,MAAM,EAAE;IACX,OAAO,IAAI;EACb;EACA,IAAIG,YAAY,EAAE;IAChB,IAAI,CAACC,OAAO,EAAE;MACZ,IAAI,CAACT,oBAAoB,EAAE;QACzBA,oBAAoB,GAAG,IAAI;QAC3BiB,OAAO,CAACC,IAAI,CACV,+EAA+E,GAC7E,+FAA+F,GAC/F,sFACJ,CAAC;MACH;MACA,oBAAOnB,IAAA,CAACL,SAAS;QAACQ,OAAO,EAAEA,OAAQ;QAACC,SAAS,EAAEA,SAAU;QAACC,SAAS,EAAEA;MAAU,CAAE,CAAC;IACpF;IACA,oBACEL,IAAA,CAACJ,gBAAgB;MAACO,OAAO,EAAEA,OAAQ;MAACC,SAAS,EAAEA,SAAU;MAACC,SAAS,EAAES;IAAqB,CAAE,CAAC;EAEjG;EACA,oBAAOd,IAAA,CAACL,SAAS;IAACQ,OAAO,EAAEA,OAAQ;IAACC,SAAS,EAAEA,SAAU;IAACC,SAAS,EAAEA;EAAU,CAAE,CAAC;AACpF;;AAEA;AACA,OAAO,SAASe,kCAAkCA,CAAA,EAAS;EACzDnB,oBAAoB,GAAG,KAAK;AAC9B","ignoreList":[]}
1
+ {"version":3,"names":["React","evalJsController","getEvalJsWebView","BannerBar","BannerWebViewBar","clearBannerAutoRunEvalSession","bannerNeedsWebView","jsx","_jsx","warnedMissingWebView","BannerSurface","session","onActions","onDismiss","banner","version","theme","needsWebView","webView","useLayoutEffect","setBannerOwnsWebView","id","dismissWebViewBanner","useCallback","endReason","reset","__DEV__","console","warn","resetBannerSurfaceWarningsForTests"],"sourceRoot":"../../../src","sources":["surfaces/BannerSurface.tsx"],"mappings":";;AAKA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,gBAAgB,QAAQ,+BAA4B;AAC7D,SAASC,gBAAgB,QAAQ,yBAAsB;AAEvD,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,gBAAgB,QAAQ,qCAAkC;AACnE,SAASC,6BAA6B,QAAQ,yCAAsC;AACpF,SAASC,kBAAkB,QAAQ,uCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQxE,IAAIC,oBAAoB,GAAG,KAAK;;AAEhC;AACA;AACA;AACA;AACA,OAAO,SAASC,aAAaA,CAAC;EAC5BC,OAAO;EACPC,SAAS;EACTC;AACkB,CAAC,EAA6B;EAChD,MAAMC,MAAM,GAAGH,OAAO,CAACI,OAAO,CAACD,MAAM;EACrC,MAAME,KAAK,GAAGL,OAAO,CAACI,OAAO,CAACC,KAAK;EACnC,MAAMC,YAAY,GAAGH,MAAM,IAAI,IAAI,IAAIR,kBAAkB,CAACQ,MAAM,EAAEE,KAAK,CAAC;EACxE,MAAME,OAAO,GAAGD,YAAY,GAAGf,gBAAgB,CAAC,CAAC,GAAG,IAAI;EAExDF,KAAK,CAACmB,eAAe,CAAC,MAAM;IAC1B,IAAI,CAACF,YAAY,IAAI,CAACC,OAAO,EAAE;MAC7B;IACF;IACAjB,gBAAgB,CAACmB,oBAAoB,CAAC,IAAI,CAAC;IAC3C,OAAO,MAAM;MACXnB,gBAAgB,CAACmB,oBAAoB,CAAC,KAAK,CAAC;IAC9C,CAAC;EACH,CAAC,EAAE,CAACH,YAAY,EAAEC,OAAO,EAAEP,OAAO,CAACU,EAAE,CAAC,CAAC;EAEvC,MAAMC,oBAAoB,GAAGtB,KAAK,CAACuB,WAAW,CAC3CC,SAA6B,IAAK;IACjCnB,6BAA6B,CAACM,OAAO,CAACU,EAAE,CAAC;IACzCpB,gBAAgB,CAACwB,KAAK,CAAC,CAAC;IACxBZ,SAAS,CAACW,SAAS,CAAC;EACtB,CAAC,EACD,CAACX,SAAS,EAAEF,OAAO,CAACU,EAAE,CACxB,CAAC;EAED,IAAI,CAACP,MAAM,EAAE;IACX,OAAO,IAAI;EACb;EACA,IAAIG,YAAY,EAAE;IAChB,IAAI,CAACC,OAAO,EAAE;MACZ,IAAI,CAACT,oBAAoB,EAAE;QACzBA,oBAAoB,GAAG,IAAI;QAC3B,IAAIiB,OAAO,EAAE;UACXC,OAAO,CAACC,IAAI,CACV,+EAA+E,GAC7E,+FAA+F,GAC/F,sFACJ,CAAC;QACH;MACF;MACA,oBAAOpB,IAAA,CAACL,SAAS;QAACQ,OAAO,EAAEA,OAAQ;QAACC,SAAS,EAAEA,SAAU;QAACC,SAAS,EAAEA;MAAU,CAAE,CAAC;IACpF;IACA,oBACEL,IAAA,CAACJ,gBAAgB;MAACO,OAAO,EAAEA,OAAQ;MAACC,SAAS,EAAEA,SAAU;MAACC,SAAS,EAAES;IAAqB,CAAE,CAAC;EAEjG;EACA,oBAAOd,IAAA,CAACL,SAAS;IAACQ,OAAO,EAAEA,OAAQ;IAACC,SAAS,EAAEA,SAAU;IAACC,SAAS,EAAEA;EAAU,CAAE,CAAC;AACpF;;AAEA;AACA,OAAO,SAASgB,kCAAkCA,CAAA,EAAS;EACzDpB,oBAAoB,GAAG,KAAK;AAC9B","ignoreList":[]}
@@ -1,38 +1,92 @@
1
1
  "use strict";
2
2
 
3
+ import React from 'react';
3
4
  const ZERO_INSETS = {
4
5
  top: 0,
5
6
  right: 0,
6
7
  bottom: 0,
7
8
  left: 0
8
9
  };
9
- let cachedHook;
10
- let cachedInsetsContext;
11
10
 
12
11
  /**
13
- * Resolve `useSafeAreaInsets` from the optional peer `react-native-safe-area-context`.
14
- * Returns a zero-inset hook when the peer is not installed.
12
+ * Used only when `react-native-safe-area-context` is not installed, so
13
+ * {@link useUserflowSafeAreaInsets} can call `useContext` unconditionally.
15
14
  */
16
- function resolveUseSafeAreaInsets() {
17
- if (cachedHook !== undefined) return cachedHook ?? (() => ZERO_INSETS);
15
+ const FallbackInsetsContext = /*#__PURE__*/React.createContext(null);
16
+ export const MISSING_SAFE_AREA_PROVIDER_WARNING = '[Userflow] UserflowProvider is not inside a <SafeAreaProvider>, so flow cards use the ' + "device's initial safe-area insets. Wrap your app in <SafeAreaProvider> from " + 'react-native-safe-area-context.';
17
+ let cachedModule;
18
+ let warnedMissingProvider = false;
19
+ function loadSafeAreaModule() {
20
+ if (cachedModule !== undefined) return cachedModule;
18
21
  if (typeof require !== 'function') {
19
- cachedHook = null;
20
- return () => ZERO_INSETS;
22
+ cachedModule = null;
23
+ return null;
21
24
  }
22
25
  try {
23
26
  // Optional peer — Expo / React Navigation apps usually have it.
24
27
  // eslint-disable-next-line @typescript-eslint/no-var-requires
25
28
  const mod = require('react-native-safe-area-context');
26
- cachedHook = typeof mod.useSafeAreaInsets === 'function' ? mod.useSafeAreaInsets : null;
29
+ cachedModule = mod?.SafeAreaInsetsContext ? mod : null;
27
30
  } catch {
28
- cachedHook = null;
31
+ cachedModule = null;
32
+ }
33
+ return cachedModule;
34
+ }
35
+
36
+ /** True when the optional peer's JavaScript package can be loaded. */
37
+ export function isSafeAreaContextInstalled() {
38
+ return loadSafeAreaModule() != null;
39
+ }
40
+ function copyInsets(insets) {
41
+ if (!insets) return null;
42
+ const top = insets.top;
43
+ const right = insets.right;
44
+ const bottom = insets.bottom;
45
+ const left = insets.left;
46
+ if (typeof top !== 'number' || typeof right !== 'number' || typeof bottom !== 'number' || typeof left !== 'number') {
47
+ return null;
29
48
  }
30
- return cachedHook ?? (() => ZERO_INSETS);
49
+ return {
50
+ top,
51
+ right,
52
+ bottom,
53
+ left
54
+ };
55
+ }
56
+
57
+ /** Device insets from the optional peer, before any provider has measured. */
58
+ function readInitialInsets() {
59
+ return copyInsets(loadSafeAreaModule()?.initialWindowMetrics?.insets);
60
+ }
61
+ function warnMissingProvider() {
62
+ if (warnedMissingProvider || !__DEV__) return;
63
+ warnedMissingProvider = true;
64
+ // eslint-disable-next-line no-console -- intentional missing-provider diagnostic
65
+ console.warn(MISSING_SAFE_AREA_PROVIDER_WARNING);
66
+ }
67
+
68
+ /**
69
+ * Safe-area insets for flow chrome.
70
+ *
71
+ * Reads `SafeAreaInsetsContext` directly. `useSafeAreaInsets()` throws when the
72
+ * peer is installed but no `SafeAreaProvider` is mounted, which would take down
73
+ * the host tree. A missing provider falls back to `initialWindowMetrics`, then
74
+ * zero, and warns once in development.
75
+ */
76
+ function insetsContext() {
77
+ return loadSafeAreaModule()?.SafeAreaInsetsContext ?? FallbackInsetsContext;
31
78
  }
32
79
 
33
- /** Safe-area insets with a zero fallback when the optional peer is missing. */
80
+ /** Value from the nearest provider, or `null` when the peer or provider is absent. */
81
+ export function useParentSafeAreaInsets() {
82
+ return copyInsets(React.useContext(insetsContext()));
83
+ }
34
84
  export function useUserflowSafeAreaInsets() {
35
- return resolveUseSafeAreaInsets()();
85
+ const fromProvider = useParentSafeAreaInsets();
86
+ if (fromProvider) return fromProvider;
87
+ if (!loadSafeAreaModule()) return ZERO_INSETS;
88
+ warnMissingProvider();
89
+ return readInitialInsets() ?? ZERO_INSETS;
36
90
  }
37
91
 
38
92
  /**
@@ -40,24 +94,12 @@ export function useUserflowSafeAreaInsets() {
40
94
  * In-flow banners override this so host screens do not add the inset the banner already consumed.
41
95
  */
42
96
  export function getSafeAreaInsetsContext() {
43
- if (cachedInsetsContext !== undefined) return cachedInsetsContext;
44
- if (typeof require !== 'function') {
45
- cachedInsetsContext = null;
46
- return null;
47
- }
48
- try {
49
- // eslint-disable-next-line @typescript-eslint/no-var-requires
50
- const mod = require('react-native-safe-area-context');
51
- cachedInsetsContext = mod.SafeAreaInsetsContext ?? null;
52
- } catch {
53
- cachedInsetsContext = null;
54
- }
55
- return cachedInsetsContext;
97
+ return loadSafeAreaModule()?.SafeAreaInsetsContext ?? null;
56
98
  }
57
99
 
58
100
  /** @internal */
59
101
  export function resetSafeAreaInsetsCacheForTests() {
60
- cachedHook = undefined;
61
- cachedInsetsContext = undefined;
102
+ cachedModule = undefined;
103
+ warnedMissingProvider = false;
62
104
  }
63
105
  //# sourceMappingURL=safeArea.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ZERO_INSETS","top","right","bottom","left","cachedHook","cachedInsetsContext","resolveUseSafeAreaInsets","undefined","require","mod","useSafeAreaInsets","useUserflowSafeAreaInsets","getSafeAreaInsetsContext","SafeAreaInsetsContext","resetSafeAreaInsetsCacheForTests"],"sourceRoot":"../../../src","sources":["surfaces/safeArea.ts"],"mappings":";;AASA,MAAMA,WAAuB,GAAG;EAAEC,GAAG,EAAE,CAAC;EAAEC,KAAK,EAAE,CAAC;EAAEC,MAAM,EAAE,CAAC;EAAEC,IAAI,EAAE;AAAE,CAAC;AAIxE,IAAIC,UAAkD;AACtD,IAAIC,mBAAkE;;AAEtE;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAAA,EAAwB;EACvD,IAAIF,UAAU,KAAKG,SAAS,EAAE,OAAOH,UAAU,KAAK,MAAML,WAAW,CAAC;EAEtE,IAAI,OAAOS,OAAO,KAAK,UAAU,EAAE;IACjCJ,UAAU,GAAG,IAAI;IACjB,OAAO,MAAML,WAAW;EAC1B;EAEA,IAAI;IACF;IACA;IACA,MAAMU,GAAG,GAAGD,OAAO,CAAC,gCAAgC,CAEnD;IACDJ,UAAU,GAAG,OAAOK,GAAG,CAACC,iBAAiB,KAAK,UAAU,GAAGD,GAAG,CAACC,iBAAiB,GAAG,IAAI;EACzF,CAAC,CAAC,MAAM;IACNN,UAAU,GAAG,IAAI;EACnB;EAEA,OAAOA,UAAU,KAAK,MAAML,WAAW,CAAC;AAC1C;;AAEA;AACA,OAAO,SAASY,yBAAyBA,CAAA,EAAe;EACtD,OAAOL,wBAAwB,CAAC,CAAC,CAAC,CAAC;AACrC;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASM,wBAAwBA,CAAA,EAAsC;EAC5E,IAAIP,mBAAmB,KAAKE,SAAS,EAAE,OAAOF,mBAAmB;EAEjE,IAAI,OAAOG,OAAO,KAAK,UAAU,EAAE;IACjCH,mBAAmB,GAAG,IAAI;IAC1B,OAAO,IAAI;EACb;EAEA,IAAI;IACF;IACA,MAAMI,GAAG,GAAGD,OAAO,CAAC,gCAAgC,CAEnD;IACDH,mBAAmB,GAAGI,GAAG,CAACI,qBAAqB,IAAI,IAAI;EACzD,CAAC,CAAC,MAAM;IACNR,mBAAmB,GAAG,IAAI;EAC5B;EAEA,OAAOA,mBAAmB;AAC5B;;AAEA;AACA,OAAO,SAASS,gCAAgCA,CAAA,EAAS;EACvDV,UAAU,GAAGG,SAAS;EACtBF,mBAAmB,GAAGE,SAAS;AACjC","ignoreList":[]}
1
+ {"version":3,"names":["React","ZERO_INSETS","top","right","bottom","left","FallbackInsetsContext","createContext","MISSING_SAFE_AREA_PROVIDER_WARNING","cachedModule","warnedMissingProvider","loadSafeAreaModule","undefined","require","mod","SafeAreaInsetsContext","isSafeAreaContextInstalled","copyInsets","insets","readInitialInsets","initialWindowMetrics","warnMissingProvider","__DEV__","console","warn","insetsContext","useParentSafeAreaInsets","useContext","useUserflowSafeAreaInsets","fromProvider","getSafeAreaInsetsContext","resetSafeAreaInsetsCacheForTests"],"sourceRoot":"../../../src","sources":["surfaces/safeArea.ts"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
 
3
3
  /** Generated by scripts/write-version.mjs — do not edit. */
4
- export const SDK_VERSION = '0.3.0';
4
+ export const SDK_VERSION = '0.4.0';
5
5
  //# sourceMappingURL=version.js.map
@@ -6,6 +6,11 @@ export interface AnchorHost {
6
6
  * Called when the measured rect is not fully visible (bounded retries per step).
7
7
  */
8
8
  scrollIntoView?: () => void;
9
+ /**
10
+ * Public instance this host was registered from, when known. Element click
11
+ * conditions use it to match a tap to this anchor.
12
+ */
13
+ node?: object | null;
9
14
  }
10
15
  type Listener = () => void;
11
16
  /**
@@ -19,6 +24,8 @@ export declare class AnchorRegistry {
19
24
  register(id: string, host: AnchorHost): void;
20
25
  unregister(id: string, host: AnchorHost): void;
21
26
  get(id: string): AnchorHost | null;
27
+ /** Every host registered for `id`, in registration order. */
28
+ getAll(id: string): AnchorHost[];
22
29
  /** True when more than one host is registered for the same id. */
23
30
  isAmbiguous(id: string): boolean;
24
31
  subscribe(listener: Listener): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AnchorRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/AnchorRegistry.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,CACf,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,KACpE,IAAI,CAAC;IACV;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IAEjD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAW5C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAU9C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAUlC,kEAAkE;IAClE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhC,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI;IAOzC,uCAAuC;IACvC,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,IAAI;CAKb;AAED,6EAA6E;AAC7E,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
1
+ {"version":3,"file":"AnchorRegistry.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/AnchorRegistry.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,CACf,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,KACpE,IAAI,CAAC;IACV;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAC;AAE3B;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsC;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAuB;IAEjD,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAW5C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAU9C,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAUlC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,EAAE;IAMhC,kEAAkE;IAClE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIhC,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI;IAOzC,uCAAuC;IACvC,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,IAAI;CAKb;AAED,6EAA6E;AAC7E,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -1,25 +1,21 @@
1
1
  import type { ConditionEvaluator } from '@userflow-tech/core';
2
2
  /**
3
3
  * Evaluate ELEMENT client conditions against manual anchors, fiber-resolved
4
- * `testID` / `nativeID` / `accessibilityLabel` targets, and AUTO (codeless)
5
- * selectors.
4
+ * `userflowId` / `testID` / `nativeID` / `accessibilityLabel` targets, and AUTO
5
+ * (codeless) selectors.
6
6
  *
7
- * Supports PRESENT / NOT_PRESENT for MANUAL selectors (`css` → anchor id) and
8
- * AUTO selectors (`autoData` → {@link resolveAutoAnchorHost}). AUTO fails
9
- * closed: `unknown` / `ambiguous` stay `null` so a gated flow never starts
10
- * just because the auto-anchor registry is empty. Web-interaction states
11
- * (CLICK, DISABLED, …) still report unknown.
7
+ * PRESENT / NOT_PRESENT: any uniquely-or-not host on a visible navigator screen
8
+ * counts (web parity — duplicates are present). A measured 0×0 host counts as
9
+ * absent. AUTO `unknown` / `ambiguous` stay `null`.
12
10
  *
13
- * "Present" means a unique host on a **visible** navigator screen. MANUAL
14
- * goes through `resolveAnchorHost`; AUTO through `resolveAutoAnchorHost`.
15
- * Both skip screens covered by another navigator screen, so an id on a
16
- * pushed-under screen counts as absent. Pixel visibility (off-screen inside a
17
- * ScrollView, opacity 0, etc.) would need async `measureInWindow` and is out
18
- * of scope.
11
+ * CLICK / NOT_CLICK: latch from the first matching tap, including a tap on a
12
+ * descendant. The latch survives re-attach via `previousIsTrue` and is cleared
13
+ * when the server untracks. Disabled hosts are ignored. Until it latches, an
14
+ * AUTO selector that does not resolve reports `null`, like presence.
19
15
  *
20
- * Note: compares string literals rather than importing protocol enums so Jest
21
- * (which cannot resolve the ESM-only `@userflow-tech/protocol` package) stays
22
- * hermetic. Wire values match `FlowConditionElementState` / `FlowSelectorType`.
16
+ * Element states are compared as string literals rather than protocol enums so
17
+ * the wire values stay obvious next to the branches. They match
18
+ * `FlowConditionElementState`.
23
19
  */
24
20
  export declare function createElementConditionEvaluator(warn?: (message: string) => void): ConditionEvaluator;
25
21
  //# sourceMappingURL=elementConditionEvaluator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"elementConditionEvaluator.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/elementConditionEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAW9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAK1B,GACA,kBAAkB,CAkBpB"}
1
+ {"version":3,"file":"elementConditionEvaluator.d.ts","sourceRoot":"","sources":["../../../../../src/anchors/elementConditionEvaluator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAGnB,MAAM,qBAAqB,CAAC;AAmB7B;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,GAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAK1B,GACA,kBAAkB,CA2BpB"}