@userflow-tech/react-native 0.4.5 → 0.6.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.
- package/README.md +31 -2
- package/docs/anchoring.md +6 -1
- package/docs/custom-fonts.md +36 -0
- package/docs/troubleshooting.md +33 -6
- package/lib/commonjs/anchors/AutoAnchorRegistry.js +144 -34
- package/lib/commonjs/anchors/AutoAnchorRegistry.js.map +1 -1
- package/lib/commonjs/anchors/animationFrame.js +29 -1
- package/lib/commonjs/anchors/animationFrame.js.map +1 -1
- package/lib/commonjs/anchors/appActive.js +61 -0
- package/lib/commonjs/anchors/appActive.js.map +1 -0
- package/lib/commonjs/anchors/elementConditionEvaluator.js +25 -8
- package/lib/commonjs/anchors/elementConditionEvaluator.js.map +1 -1
- package/lib/commonjs/anchors/elementTapMonitor.js +67 -12
- package/lib/commonjs/anchors/elementTapMonitor.js.map +1 -1
- package/lib/commonjs/anchors/elementTargetMatch.js +33 -7
- package/lib/commonjs/anchors/elementTargetMatch.js.map +1 -1
- package/lib/commonjs/anchors/fiber/FiberScanRootStore.js +8 -0
- package/lib/commonjs/anchors/fiber/FiberScanRootStore.js.map +1 -1
- package/lib/commonjs/anchors/fiber/detectAppFontFamily.js +341 -0
- package/lib/commonjs/anchors/fiber/detectAppFontFamily.js.map +1 -0
- package/lib/commonjs/anchors/fiber/fiberInternals.js +66 -0
- package/lib/commonjs/anchors/fiber/fiberInternals.js.map +1 -1
- package/lib/commonjs/anchors/fiber/indexHostFibers.js +4 -3
- package/lib/commonjs/anchors/fiber/indexHostFibers.js.map +1 -1
- package/lib/commonjs/anchors/fiber/resolveFiberPath.js +30 -15
- package/lib/commonjs/anchors/fiber/resolveFiberPath.js.map +1 -1
- package/lib/commonjs/anchors/fiber/visibleScreens.js +6 -0
- package/lib/commonjs/anchors/fiber/visibleScreens.js.map +1 -1
- package/lib/commonjs/anchors/fiberAnchorCache.js +20 -0
- package/lib/commonjs/anchors/fiberAnchorCache.js.map +1 -1
- package/lib/commonjs/anchors/gestureHandlerHandoff.js +304 -0
- package/lib/commonjs/anchors/gestureHandlerHandoff.js.map +1 -0
- package/lib/commonjs/anchors/resolveAnchorHost.js +6 -0
- package/lib/commonjs/anchors/resolveAnchorHost.js.map +1 -1
- package/lib/commonjs/anchors/resolveAutoAnchorHost.js +11 -6
- package/lib/commonjs/anchors/resolveAutoAnchorHost.js.map +1 -1
- package/lib/commonjs/anchors/resolveElementTargets.js +63 -8
- package/lib/commonjs/anchors/resolveElementTargets.js.map +1 -1
- package/lib/commonjs/anchors/semanticMatcher.js +43 -21
- package/lib/commonjs/anchors/semanticMatcher.js.map +1 -1
- package/lib/commonjs/anchors/tapSlop.js +16 -0
- package/lib/commonjs/anchors/tapSlop.js.map +1 -0
- package/lib/commonjs/anchors/targetPressMonitor.js +66 -12
- package/lib/commonjs/anchors/targetPressMonitor.js.map +1 -1
- package/lib/commonjs/authoring/fingerprintFromInstance.js +5 -9
- package/lib/commonjs/authoring/fingerprintFromInstance.js.map +1 -1
- package/lib/commonjs/content/BannerStepButton.js +2 -1
- package/lib/commonjs/content/BannerStepButton.js.map +1 -1
- package/lib/commonjs/content/RichContentRenderer.js +20 -14
- package/lib/commonjs/content/RichContentRenderer.js.map +1 -1
- package/lib/commonjs/content/StepButton.js +2 -1
- package/lib/commonjs/content/StepButton.js.map +1 -1
- package/lib/commonjs/content/openSafeUrl.js +3 -1
- package/lib/commonjs/content/openSafeUrl.js.map +1 -1
- package/lib/commonjs/content/resolveContentFontFamily.js +96 -0
- package/lib/commonjs/content/resolveContentFontFamily.js.map +1 -0
- package/lib/commonjs/expo-router/useUserflowExpoRouter.js +6 -0
- package/lib/commonjs/expo-router/useUserflowExpoRouter.js.map +1 -1
- package/lib/commonjs/index.js +21 -5
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/navigation/navigateUrlUtils.js +105 -0
- package/lib/commonjs/navigation/navigateUrlUtils.js.map +1 -0
- package/lib/commonjs/navigation/openExternalNavigateUrl.js +14 -0
- package/lib/commonjs/navigation/openExternalNavigateUrl.js.map +1 -0
- package/lib/commonjs/navigation/openFlowNavigateUrl.js +47 -41
- package/lib/commonjs/navigation/openFlowNavigateUrl.js.map +1 -1
- package/lib/commonjs/pairing/PairingController.js +3 -1
- package/lib/commonjs/pairing/PairingController.js.map +1 -1
- package/lib/commonjs/runtime/BannerHost.js +38 -29
- package/lib/commonjs/runtime/BannerHost.js.map +1 -1
- package/lib/commonjs/runtime/TargetPressBridge.js +55 -7
- package/lib/commonjs/runtime/TargetPressBridge.js.map +1 -1
- package/lib/commonjs/runtime/UserflowOverlay.js +5 -11
- package/lib/commonjs/runtime/UserflowOverlay.js.map +1 -1
- package/lib/commonjs/runtime/UserflowProvider.js +66 -40
- package/lib/commonjs/runtime/UserflowProvider.js.map +1 -1
- package/lib/commonjs/runtime/bannerEngine.js +8 -2
- package/lib/commonjs/runtime/bannerEngine.js.map +1 -1
- package/lib/commonjs/runtime/bannerFlowSpacer.js +71 -0
- package/lib/commonjs/runtime/bannerFlowSpacer.js.map +1 -0
- package/lib/commonjs/runtime/flowEngine.js +11 -0
- package/lib/commonjs/runtime/flowEngine.js.map +1 -1
- package/lib/commonjs/runtime/previewStart.js +39 -0
- package/lib/commonjs/runtime/previewStart.js.map +1 -0
- package/lib/commonjs/runtime/pushBannerLayoutContext.js +101 -0
- package/lib/commonjs/runtime/pushBannerLayoutContext.js.map +1 -0
- package/lib/commonjs/screenTracker.js +12 -0
- package/lib/commonjs/screenTracker.js.map +1 -1
- package/lib/commonjs/surfaces/BannerBar.js +79 -61
- package/lib/commonjs/surfaces/BannerBar.js.map +1 -1
- package/lib/commonjs/surfaces/BannerSurface.js +28 -6
- package/lib/commonjs/surfaces/BannerSurface.js.map +1 -1
- package/lib/commonjs/surfaces/ProgressBar.js +2 -1
- package/lib/commonjs/surfaces/ProgressBar.js.map +1 -1
- package/lib/commonjs/surfaces/TooltipSurface.js +48 -41
- package/lib/commonjs/surfaces/TooltipSurface.js.map +1 -1
- package/lib/commonjs/surfaces/bannerBarLayout.js +77 -10
- package/lib/commonjs/surfaces/bannerBarLayout.js.map +1 -1
- package/lib/commonjs/surfaces/bannerWebView/BannerWebViewBar.js +114 -63
- package/lib/commonjs/surfaces/bannerWebView/BannerWebViewBar.js.map +1 -1
- package/lib/commonjs/surfaces/bannerWebView/bannerNeedsWebView.js +3 -33
- package/lib/commonjs/surfaces/bannerWebView/bannerNeedsWebView.js.map +1 -1
- package/lib/commonjs/surfaces/bannerWebView/bannerThemeStyles.js +2 -1
- package/lib/commonjs/surfaces/bannerWebView/bannerThemeStyles.js.map +1 -1
- package/lib/commonjs/surfaces/bannerWebView/bannerWebViewHeight.js +33 -0
- package/lib/commonjs/surfaces/bannerWebView/bannerWebViewHeight.js.map +1 -0
- package/lib/commonjs/surfaces/bannerWebView/buildCustomBannerHtml.js +104 -23
- package/lib/commonjs/surfaces/bannerWebView/buildCustomBannerHtml.js.map +1 -1
- package/lib/commonjs/surfaces/hostAccessibilityTrap.js +28 -0
- package/lib/commonjs/surfaces/hostAccessibilityTrap.js.map +1 -0
- package/lib/commonjs/surfaces/resolveBannerTheme.js +6 -3
- package/lib/commonjs/surfaces/resolveBannerTheme.js.map +1 -1
- package/lib/commonjs/surfaces/tooltip/TooltipBubble.js +3 -2
- package/lib/commonjs/surfaces/tooltip/TooltipBubble.js.map +1 -1
- package/lib/commonjs/surfaces/tooltip/targetSearchSchedule.js +134 -0
- package/lib/commonjs/surfaces/tooltip/targetSearchSchedule.js.map +1 -0
- package/lib/commonjs/version.js +1 -1
- package/lib/module/anchors/AutoAnchorRegistry.js +145 -35
- package/lib/module/anchors/AutoAnchorRegistry.js.map +1 -1
- package/lib/module/anchors/animationFrame.js +29 -2
- package/lib/module/anchors/animationFrame.js.map +1 -1
- package/lib/module/anchors/appActive.js +57 -0
- package/lib/module/anchors/appActive.js.map +1 -0
- package/lib/module/anchors/elementConditionEvaluator.js +26 -9
- package/lib/module/anchors/elementConditionEvaluator.js.map +1 -1
- package/lib/module/anchors/elementTapMonitor.js +67 -12
- package/lib/module/anchors/elementTapMonitor.js.map +1 -1
- package/lib/module/anchors/elementTargetMatch.js +32 -7
- package/lib/module/anchors/elementTargetMatch.js.map +1 -1
- package/lib/module/anchors/fiber/FiberScanRootStore.js +8 -0
- package/lib/module/anchors/fiber/FiberScanRootStore.js.map +1 -1
- package/lib/module/anchors/fiber/detectAppFontFamily.js +330 -0
- package/lib/module/anchors/fiber/detectAppFontFamily.js.map +1 -0
- package/lib/module/anchors/fiber/fiberInternals.js +65 -0
- package/lib/module/anchors/fiber/fiberInternals.js.map +1 -1
- package/lib/module/anchors/fiber/indexHostFibers.js +4 -3
- package/lib/module/anchors/fiber/indexHostFibers.js.map +1 -1
- package/lib/module/anchors/fiber/resolveFiberPath.js +30 -15
- package/lib/module/anchors/fiber/resolveFiberPath.js.map +1 -1
- package/lib/module/anchors/fiber/visibleScreens.js +5 -0
- package/lib/module/anchors/fiber/visibleScreens.js.map +1 -1
- package/lib/module/anchors/fiberAnchorCache.js +19 -0
- package/lib/module/anchors/fiberAnchorCache.js.map +1 -1
- package/lib/module/anchors/gestureHandlerHandoff.js +298 -0
- package/lib/module/anchors/gestureHandlerHandoff.js.map +1 -0
- package/lib/module/anchors/resolveAnchorHost.js +1 -0
- package/lib/module/anchors/resolveAnchorHost.js.map +1 -1
- package/lib/module/anchors/resolveAutoAnchorHost.js +11 -6
- package/lib/module/anchors/resolveAutoAnchorHost.js.map +1 -1
- package/lib/module/anchors/resolveElementTargets.js +63 -8
- package/lib/module/anchors/resolveElementTargets.js.map +1 -1
- package/lib/module/anchors/semanticMatcher.js +43 -21
- package/lib/module/anchors/semanticMatcher.js.map +1 -1
- package/lib/module/anchors/tapSlop.js +11 -0
- package/lib/module/anchors/tapSlop.js.map +1 -0
- package/lib/module/anchors/targetPressMonitor.js +53 -8
- package/lib/module/anchors/targetPressMonitor.js.map +1 -1
- package/lib/module/authoring/fingerprintFromInstance.js +6 -10
- package/lib/module/authoring/fingerprintFromInstance.js.map +1 -1
- package/lib/module/content/BannerStepButton.js +2 -1
- package/lib/module/content/BannerStepButton.js.map +1 -1
- package/lib/module/content/RichContentRenderer.js +20 -14
- package/lib/module/content/RichContentRenderer.js.map +1 -1
- package/lib/module/content/StepButton.js +2 -1
- package/lib/module/content/StepButton.js.map +1 -1
- package/lib/module/content/openSafeUrl.js +3 -1
- package/lib/module/content/openSafeUrl.js.map +1 -1
- package/lib/module/content/resolveContentFontFamily.js +89 -0
- package/lib/module/content/resolveContentFontFamily.js.map +1 -0
- package/lib/module/expo-router/useUserflowExpoRouter.js +7 -1
- package/lib/module/expo-router/useUserflowExpoRouter.js.map +1 -1
- package/lib/module/index.js +24 -7
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigation/navigateUrlUtils.js +94 -0
- package/lib/module/navigation/navigateUrlUtils.js.map +1 -0
- package/lib/module/navigation/openExternalNavigateUrl.js +11 -0
- package/lib/module/navigation/openExternalNavigateUrl.js.map +1 -0
- package/lib/module/navigation/openFlowNavigateUrl.js +22 -36
- package/lib/module/navigation/openFlowNavigateUrl.js.map +1 -1
- package/lib/module/pairing/PairingController.js +3 -1
- package/lib/module/pairing/PairingController.js.map +1 -1
- package/lib/module/runtime/BannerHost.js +38 -29
- package/lib/module/runtime/BannerHost.js.map +1 -1
- package/lib/module/runtime/TargetPressBridge.js +56 -8
- package/lib/module/runtime/TargetPressBridge.js.map +1 -1
- package/lib/module/runtime/UserflowOverlay.js +5 -11
- package/lib/module/runtime/UserflowOverlay.js.map +1 -1
- package/lib/module/runtime/UserflowProvider.js +66 -40
- package/lib/module/runtime/UserflowProvider.js.map +1 -1
- package/lib/module/runtime/bannerEngine.js +7 -2
- package/lib/module/runtime/bannerEngine.js.map +1 -1
- package/lib/module/runtime/bannerFlowSpacer.js +65 -0
- package/lib/module/runtime/bannerFlowSpacer.js.map +1 -0
- package/lib/module/runtime/flowEngine.js +11 -0
- package/lib/module/runtime/flowEngine.js.map +1 -1
- package/lib/module/runtime/previewStart.js +35 -0
- package/lib/module/runtime/previewStart.js.map +1 -0
- package/lib/module/runtime/pushBannerLayoutContext.js +94 -0
- package/lib/module/runtime/pushBannerLayoutContext.js.map +1 -0
- package/lib/module/screenTracker.js +11 -0
- package/lib/module/screenTracker.js.map +1 -1
- package/lib/module/surfaces/BannerBar.js +80 -62
- package/lib/module/surfaces/BannerBar.js.map +1 -1
- package/lib/module/surfaces/BannerSurface.js +28 -6
- package/lib/module/surfaces/BannerSurface.js.map +1 -1
- package/lib/module/surfaces/ProgressBar.js +2 -1
- package/lib/module/surfaces/ProgressBar.js.map +1 -1
- package/lib/module/surfaces/TooltipSurface.js +49 -42
- package/lib/module/surfaces/TooltipSurface.js.map +1 -1
- package/lib/module/surfaces/bannerBarLayout.js +72 -11
- package/lib/module/surfaces/bannerBarLayout.js.map +1 -1
- package/lib/module/surfaces/bannerWebView/BannerWebViewBar.js +115 -64
- package/lib/module/surfaces/bannerWebView/BannerWebViewBar.js.map +1 -1
- package/lib/module/surfaces/bannerWebView/bannerNeedsWebView.js +3 -31
- package/lib/module/surfaces/bannerWebView/bannerNeedsWebView.js.map +1 -1
- package/lib/module/surfaces/bannerWebView/bannerThemeStyles.js +2 -1
- package/lib/module/surfaces/bannerWebView/bannerThemeStyles.js.map +1 -1
- package/lib/module/surfaces/bannerWebView/bannerWebViewHeight.js +29 -0
- package/lib/module/surfaces/bannerWebView/bannerWebViewHeight.js.map +1 -0
- package/lib/module/surfaces/bannerWebView/buildCustomBannerHtml.js +104 -23
- package/lib/module/surfaces/bannerWebView/buildCustomBannerHtml.js.map +1 -1
- package/lib/module/surfaces/hostAccessibilityTrap.js +24 -0
- package/lib/module/surfaces/hostAccessibilityTrap.js.map +1 -0
- package/lib/module/surfaces/resolveBannerTheme.js +6 -3
- package/lib/module/surfaces/resolveBannerTheme.js.map +1 -1
- package/lib/module/surfaces/tooltip/TooltipBubble.js +3 -2
- package/lib/module/surfaces/tooltip/TooltipBubble.js.map +1 -1
- package/lib/module/surfaces/tooltip/targetSearchSchedule.js +128 -0
- package/lib/module/surfaces/tooltip/targetSearchSchedule.js.map +1 -0
- package/lib/module/version.js +1 -1
- package/lib/typescript/commonjs/src/anchors/AutoAnchorRegistry.d.ts +36 -2
- package/lib/typescript/commonjs/src/anchors/AutoAnchorRegistry.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/animationFrame.d.ts +0 -4
- package/lib/typescript/commonjs/src/anchors/animationFrame.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/appActive.d.ts +8 -0
- package/lib/typescript/commonjs/src/anchors/appActive.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts +17 -0
- package/lib/typescript/commonjs/src/anchors/elementTapMonitor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts +7 -0
- package/lib/typescript/commonjs/src/anchors/elementTargetMatch.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/fiber/FiberScanRootStore.d.ts +5 -0
- package/lib/typescript/commonjs/src/anchors/fiber/FiberScanRootStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/fiber/detectAppFontFamily.d.ts +30 -0
- package/lib/typescript/commonjs/src/anchors/fiber/detectAppFontFamily.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/anchors/fiber/fiberInternals.d.ts +7 -0
- package/lib/typescript/commonjs/src/anchors/fiber/fiberInternals.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/fiber/indexHostFibers.d.ts +3 -2
- package/lib/typescript/commonjs/src/anchors/fiber/indexHostFibers.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/fiber/resolveFiberPath.d.ts +3 -0
- package/lib/typescript/commonjs/src/anchors/fiber/resolveFiberPath.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/fiber/visibleScreens.d.ts +2 -0
- package/lib/typescript/commonjs/src/anchors/fiber/visibleScreens.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/fiberAnchorCache.d.ts +5 -0
- package/lib/typescript/commonjs/src/anchors/fiberAnchorCache.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/gestureHandlerHandoff.d.ts +70 -0
- package/lib/typescript/commonjs/src/anchors/gestureHandlerHandoff.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts +1 -0
- package/lib/typescript/commonjs/src/anchors/resolveAnchorHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts +11 -4
- package/lib/typescript/commonjs/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/resolveElementTargets.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/semanticMatcher.d.ts +2 -0
- package/lib/typescript/commonjs/src/anchors/semanticMatcher.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/anchors/tapSlop.d.ts +9 -0
- package/lib/typescript/commonjs/src/anchors/tapSlop.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts +13 -8
- package/lib/typescript/commonjs/src/anchors/targetPressMonitor.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/authoring/fingerprintFromInstance.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/content/BannerStepButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/content/RichContentRenderer.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/content/StepButton.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/content/openSafeUrl.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/content/resolveContentFontFamily.d.ts +35 -0
- package/lib/typescript/commonjs/src/content/resolveContentFontFamily.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/expo-router/useUserflowExpoRouter.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.d.ts +6 -5
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/navigation/navigateUrlUtils.d.ts +15 -0
- package/lib/typescript/commonjs/src/navigation/navigateUrlUtils.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/navigation/openExternalNavigateUrl.d.ts +3 -0
- package/lib/typescript/commonjs/src/navigation/openExternalNavigateUrl.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/navigation/openFlowNavigateUrl.d.ts +2 -5
- package/lib/typescript/commonjs/src/navigation/openFlowNavigateUrl.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/pairing/PairingController.d.ts +6 -0
- package/lib/typescript/commonjs/src/pairing/PairingController.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/runtime/BannerHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts +3 -0
- package/lib/typescript/commonjs/src/runtime/TargetPressBridge.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/runtime/UserflowOverlay.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/runtime/UserflowProvider.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/runtime/bannerEngine.d.ts +5 -1
- package/lib/typescript/commonjs/src/runtime/bannerEngine.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/runtime/bannerFlowSpacer.d.ts +15 -0
- package/lib/typescript/commonjs/src/runtime/bannerFlowSpacer.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/runtime/flowEngine.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/runtime/previewStart.d.ts +13 -0
- package/lib/typescript/commonjs/src/runtime/previewStart.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/runtime/pushBannerLayoutContext.d.ts +22 -0
- package/lib/typescript/commonjs/src/runtime/pushBannerLayoutContext.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/screenTracker.d.ts +6 -0
- package/lib/typescript/commonjs/src/screenTracker.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/BannerBar.d.ts +3 -1
- package/lib/typescript/commonjs/src/surfaces/BannerBar.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/BannerSurface.d.ts +6 -5
- package/lib/typescript/commonjs/src/surfaces/BannerSurface.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/ProgressBar.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/TooltipSurface.d.ts +1 -1
- package/lib/typescript/commonjs/src/surfaces/TooltipSurface.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/bannerBarLayout.d.ts +17 -0
- package/lib/typescript/commonjs/src/surfaces/bannerBarLayout.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/bannerWebView/BannerWebViewBar.d.ts +3 -1
- package/lib/typescript/commonjs/src/surfaces/bannerWebView/BannerWebViewBar.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerNeedsWebView.d.ts +3 -12
- package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerNeedsWebView.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerThemeStyles.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerWebViewHeight.d.ts +13 -0
- package/lib/typescript/commonjs/src/surfaces/bannerWebView/bannerWebViewHeight.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/surfaces/bannerWebView/buildCustomBannerHtml.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/hostAccessibilityTrap.d.ts +14 -0
- package/lib/typescript/commonjs/src/surfaces/hostAccessibilityTrap.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/surfaces/resolveBannerTheme.d.ts +4 -1
- package/lib/typescript/commonjs/src/surfaces/resolveBannerTheme.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/tooltip/TooltipBubble.d.ts +7 -1
- package/lib/typescript/commonjs/src/surfaces/tooltip/TooltipBubble.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/surfaces/tooltip/targetSearchSchedule.d.ts +60 -0
- package/lib/typescript/commonjs/src/surfaces/tooltip/targetSearchSchedule.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/version.d.ts +1 -1
- package/lib/typescript/module/src/anchors/AutoAnchorRegistry.d.ts +36 -2
- package/lib/typescript/module/src/anchors/AutoAnchorRegistry.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/animationFrame.d.ts +0 -4
- package/lib/typescript/module/src/anchors/animationFrame.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/appActive.d.ts +8 -0
- package/lib/typescript/module/src/anchors/appActive.d.ts.map +1 -0
- package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts +17 -0
- package/lib/typescript/module/src/anchors/elementTapMonitor.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts +7 -0
- package/lib/typescript/module/src/anchors/elementTargetMatch.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/fiber/FiberScanRootStore.d.ts +5 -0
- package/lib/typescript/module/src/anchors/fiber/FiberScanRootStore.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/fiber/detectAppFontFamily.d.ts +30 -0
- package/lib/typescript/module/src/anchors/fiber/detectAppFontFamily.d.ts.map +1 -0
- package/lib/typescript/module/src/anchors/fiber/fiberInternals.d.ts +7 -0
- package/lib/typescript/module/src/anchors/fiber/fiberInternals.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/fiber/indexHostFibers.d.ts +3 -2
- package/lib/typescript/module/src/anchors/fiber/indexHostFibers.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/fiber/resolveFiberPath.d.ts +3 -0
- package/lib/typescript/module/src/anchors/fiber/resolveFiberPath.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/fiber/visibleScreens.d.ts +2 -0
- package/lib/typescript/module/src/anchors/fiber/visibleScreens.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/fiberAnchorCache.d.ts +5 -0
- package/lib/typescript/module/src/anchors/fiberAnchorCache.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/gestureHandlerHandoff.d.ts +70 -0
- package/lib/typescript/module/src/anchors/gestureHandlerHandoff.d.ts.map +1 -0
- package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts +1 -0
- package/lib/typescript/module/src/anchors/resolveAnchorHost.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts +11 -4
- package/lib/typescript/module/src/anchors/resolveAutoAnchorHost.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/resolveElementTargets.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/semanticMatcher.d.ts +2 -0
- package/lib/typescript/module/src/anchors/semanticMatcher.d.ts.map +1 -1
- package/lib/typescript/module/src/anchors/tapSlop.d.ts +9 -0
- package/lib/typescript/module/src/anchors/tapSlop.d.ts.map +1 -0
- package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts +13 -8
- package/lib/typescript/module/src/anchors/targetPressMonitor.d.ts.map +1 -1
- package/lib/typescript/module/src/authoring/fingerprintFromInstance.d.ts.map +1 -1
- package/lib/typescript/module/src/content/BannerStepButton.d.ts.map +1 -1
- package/lib/typescript/module/src/content/RichContentRenderer.d.ts.map +1 -1
- package/lib/typescript/module/src/content/StepButton.d.ts.map +1 -1
- package/lib/typescript/module/src/content/openSafeUrl.d.ts.map +1 -1
- package/lib/typescript/module/src/content/resolveContentFontFamily.d.ts +35 -0
- package/lib/typescript/module/src/content/resolveContentFontFamily.d.ts.map +1 -0
- package/lib/typescript/module/src/expo-router/useUserflowExpoRouter.d.ts.map +1 -1
- package/lib/typescript/module/src/index.d.ts +6 -5
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/navigation/navigateUrlUtils.d.ts +15 -0
- package/lib/typescript/module/src/navigation/navigateUrlUtils.d.ts.map +1 -0
- package/lib/typescript/module/src/navigation/openExternalNavigateUrl.d.ts +3 -0
- package/lib/typescript/module/src/navigation/openExternalNavigateUrl.d.ts.map +1 -0
- package/lib/typescript/module/src/navigation/openFlowNavigateUrl.d.ts +2 -5
- package/lib/typescript/module/src/navigation/openFlowNavigateUrl.d.ts.map +1 -1
- package/lib/typescript/module/src/pairing/PairingController.d.ts +6 -0
- package/lib/typescript/module/src/pairing/PairingController.d.ts.map +1 -1
- package/lib/typescript/module/src/runtime/BannerHost.d.ts.map +1 -1
- package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts +3 -0
- package/lib/typescript/module/src/runtime/TargetPressBridge.d.ts.map +1 -1
- package/lib/typescript/module/src/runtime/UserflowOverlay.d.ts.map +1 -1
- package/lib/typescript/module/src/runtime/UserflowProvider.d.ts.map +1 -1
- package/lib/typescript/module/src/runtime/bannerEngine.d.ts +5 -1
- package/lib/typescript/module/src/runtime/bannerEngine.d.ts.map +1 -1
- package/lib/typescript/module/src/runtime/bannerFlowSpacer.d.ts +15 -0
- package/lib/typescript/module/src/runtime/bannerFlowSpacer.d.ts.map +1 -0
- package/lib/typescript/module/src/runtime/flowEngine.d.ts.map +1 -1
- package/lib/typescript/module/src/runtime/previewStart.d.ts +13 -0
- package/lib/typescript/module/src/runtime/previewStart.d.ts.map +1 -0
- package/lib/typescript/module/src/runtime/pushBannerLayoutContext.d.ts +22 -0
- package/lib/typescript/module/src/runtime/pushBannerLayoutContext.d.ts.map +1 -0
- package/lib/typescript/module/src/screenTracker.d.ts +6 -0
- package/lib/typescript/module/src/screenTracker.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/BannerBar.d.ts +3 -1
- package/lib/typescript/module/src/surfaces/BannerBar.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/BannerSurface.d.ts +6 -5
- package/lib/typescript/module/src/surfaces/BannerSurface.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/ProgressBar.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/TooltipSurface.d.ts +1 -1
- package/lib/typescript/module/src/surfaces/TooltipSurface.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/bannerBarLayout.d.ts +17 -0
- package/lib/typescript/module/src/surfaces/bannerBarLayout.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/bannerWebView/BannerWebViewBar.d.ts +3 -1
- package/lib/typescript/module/src/surfaces/bannerWebView/BannerWebViewBar.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/bannerWebView/bannerNeedsWebView.d.ts +3 -12
- package/lib/typescript/module/src/surfaces/bannerWebView/bannerNeedsWebView.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/bannerWebView/bannerThemeStyles.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/bannerWebView/bannerWebViewHeight.d.ts +13 -0
- package/lib/typescript/module/src/surfaces/bannerWebView/bannerWebViewHeight.d.ts.map +1 -0
- package/lib/typescript/module/src/surfaces/bannerWebView/buildCustomBannerHtml.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/hostAccessibilityTrap.d.ts +14 -0
- package/lib/typescript/module/src/surfaces/hostAccessibilityTrap.d.ts.map +1 -0
- package/lib/typescript/module/src/surfaces/resolveBannerTheme.d.ts +4 -1
- package/lib/typescript/module/src/surfaces/resolveBannerTheme.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/tooltip/TooltipBubble.d.ts +7 -1
- package/lib/typescript/module/src/surfaces/tooltip/TooltipBubble.d.ts.map +1 -1
- package/lib/typescript/module/src/surfaces/tooltip/targetSearchSchedule.d.ts +60 -0
- package/lib/typescript/module/src/surfaces/tooltip/targetSearchSchedule.d.ts.map +1 -0
- package/lib/typescript/module/src/version.d.ts +1 -1
- package/package.json +1 -1
- package/src/anchors/AutoAnchorRegistry.ts +166 -35
- package/src/anchors/animationFrame.ts +31 -1
- package/src/anchors/appActive.ts +63 -0
- package/src/anchors/elementConditionEvaluator.ts +29 -12
- package/src/anchors/elementTapMonitor.ts +68 -10
- package/src/anchors/elementTargetMatch.ts +34 -7
- package/src/anchors/fiber/FiberScanRootStore.ts +8 -0
- package/src/anchors/fiber/detectAppFontFamily.ts +400 -0
- package/src/anchors/fiber/fiberInternals.ts +68 -0
- package/src/anchors/fiber/indexHostFibers.ts +8 -3
- package/src/anchors/fiber/resolveFiberPath.ts +25 -16
- package/src/anchors/fiber/visibleScreens.ts +5 -0
- package/src/anchors/fiberAnchorCache.ts +19 -0
- package/src/anchors/gestureHandlerHandoff.ts +356 -0
- package/src/anchors/resolveAnchorHost.ts +2 -0
- package/src/anchors/resolveAutoAnchorHost.ts +18 -8
- package/src/anchors/resolveElementTargets.ts +64 -7
- package/src/anchors/semanticMatcher.ts +48 -27
- package/src/anchors/tapSlop.ts +18 -0
- package/src/anchors/targetPressMonitor.ts +56 -19
- package/src/authoring/fingerprintFromInstance.ts +4 -5
- package/src/content/BannerStepButton.tsx +2 -1
- package/src/content/RichContentRenderer.tsx +19 -13
- package/src/content/StepButton.tsx +2 -1
- package/src/content/openSafeUrl.ts +3 -1
- package/src/content/resolveContentFontFamily.ts +119 -0
- package/src/expo-router/useUserflowExpoRouter.ts +10 -1
- package/src/index.ts +22 -9
- package/src/navigation/navigateUrlUtils.ts +100 -0
- package/src/navigation/openExternalNavigateUrl.ts +9 -0
- package/src/navigation/openFlowNavigateUrl.ts +36 -36
- package/src/pairing/PairingController.ts +9 -1
- package/src/runtime/BannerHost.tsx +41 -23
- package/src/runtime/TargetPressBridge.tsx +66 -9
- package/src/runtime/UserflowOverlay.tsx +7 -9
- package/src/runtime/UserflowProvider.tsx +56 -32
- package/src/runtime/bannerEngine.ts +10 -2
- package/src/runtime/bannerFlowSpacer.tsx +70 -0
- package/src/runtime/flowEngine.ts +11 -0
- package/src/runtime/previewStart.ts +49 -0
- package/src/runtime/pushBannerLayoutContext.tsx +126 -0
- package/src/screenTracker.ts +11 -0
- package/src/surfaces/BannerBar.tsx +93 -55
- package/src/surfaces/BannerSurface.tsx +61 -9
- package/src/surfaces/ProgressBar.tsx +2 -1
- package/src/surfaces/TooltipSurface.tsx +78 -53
- package/src/surfaces/bannerBarLayout.ts +80 -7
- package/src/surfaces/bannerWebView/BannerWebViewBar.tsx +151 -57
- package/src/surfaces/bannerWebView/bannerNeedsWebView.ts +4 -36
- package/src/surfaces/bannerWebView/bannerThemeStyles.ts +2 -1
- package/src/surfaces/bannerWebView/bannerWebViewHeight.ts +32 -0
- package/src/surfaces/bannerWebView/buildCustomBannerHtml.ts +111 -23
- package/src/surfaces/hostAccessibilityTrap.ts +25 -0
- package/src/surfaces/resolveBannerTheme.ts +14 -3
- package/src/surfaces/tooltip/TooltipBubble.tsx +8 -1
- package/src/surfaces/tooltip/targetSearchSchedule.ts +140 -0
- package/src/version.ts +1 -1
- package/vendor/core/dist/engine/BannerSessionEngine.d.ts +29 -2
- package/vendor/core/dist/engine/BannerSessionEngine.d.ts.map +1 -1
- package/vendor/core/dist/engine/BannerSessionEngine.js +87 -6
- package/vendor/core/dist/engine/BannerSessionEngine.js.map +1 -1
- package/vendor/core/dist/engine/ClientConditionEngine.d.ts.map +1 -1
- package/vendor/core/dist/engine/ClientConditionEngine.js +30 -7
- package/vendor/core/dist/engine/ClientConditionEngine.js.map +1 -1
- package/vendor/core/dist/engine/PairingEngine.d.ts +6 -1
- package/vendor/core/dist/engine/PairingEngine.d.ts.map +1 -1
- package/vendor/core/dist/engine/PairingEngine.js +23 -3
- package/vendor/core/dist/engine/PairingEngine.js.map +1 -1
- package/vendor/core/dist/engine/handleActions.d.ts.map +1 -1
- package/vendor/core/dist/engine/handleActions.js +67 -2
- package/vendor/core/dist/engine/handleActions.js.map +1 -1
- package/vendor/core/dist/version.d.ts +1 -1
- package/vendor/core/dist/version.js +1 -1
- package/vendor/core/package.json +1 -1
- package/vendor/protocol/dist/flows.d.ts +2 -0
- package/vendor/protocol/dist/flows.d.ts.map +1 -1
- package/vendor/protocol/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["decodeMobileAutoData","anchorChangeTicker","elementTapMonitor","fiberIsUnder","tapPathDisabled","resolveElementTargets","tapMayHitSelector","resolveManualAnchorId","MAX_MEASURED_HOSTS","MEASURE_TIMEOUT_MS","createElementConditionEvaluator","warn","message","__DEV__","console","warnedConditionIds","Set","warnOnce","conditionId","has","add","condition","report","context","elementState","trackPresence","trackClick","id","generation","reportedGeneration","measuring","changedWhileMeasuring","disposed","evaluate","gen","resolution","selector","status","silent","warnUnknown","measureVisibility","targets","catch","then","visibility","present","unsubscribe","subscribe","clickSelectorUsable","valueWhenOccurred","previousIsTrue","latched","stopWatchingResolution","type","reportUnclickedOnceResolvable","subscription","tap","matched","find","target","fiber","targetFiber","
|
|
1
|
+
{"version":3,"names":["decodeMobileAutoData","anchorChangeTicker","elementTapMonitor","fiberBearingAnchorId","fiberIsUnder","tapPathDisabled","resolveElementTargets","tapMayHitSelector","resolveManualAnchorId","MAX_MEASURED_HOSTS","MEASURE_TIMEOUT_MS","createElementConditionEvaluator","warn","message","__DEV__","console","warnedConditionIds","Set","warnOnce","conditionId","has","add","condition","report","context","elementState","trackPresence","trackClick","id","generation","reportedGeneration","measuring","changedWhileMeasuring","disposed","evaluate","gen","resolution","selector","status","silent","warnUnknown","measureVisibility","targets","catch","then","visibility","present","unsubscribe","subscribe","clickSelectorUsable","valueWhenOccurred","previousIsTrue","latched","stopWatchingResolution","type","reportUnclickedOnceResolvable","subscription","latch","immediate","tap","matched","find","target","fiber","targetFiber","anchorId","css","capturedHost","autoData","fingerprint","slice","measured","Promise","all","map","measureHost","some","size","width","height","includes","length","resolve","settled","finish","value","clearTimeout","timer","setTimeout","host","measureInWindow","_x","_y"],"sourceRoot":"../../../src","sources":["anchors/elementConditionEvaluator.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,14 +8,19 @@
|
|
|
8
8
|
* tooltip target-press monitor uses. The host fiber is the one captured at
|
|
9
9
|
* touch start, before the press's setState commits a new tree.
|
|
10
10
|
*
|
|
11
|
+
* A touch that gesture-handler cancels is handed off instead of dropped: the
|
|
12
|
+
* same fiber is emitted if that handler later ends as a tap.
|
|
13
|
+
*
|
|
11
14
|
* With no subscribers the monitor stores nothing, so the bridge can skip the
|
|
12
15
|
* fiber lookup entirely.
|
|
13
16
|
*/
|
|
14
17
|
|
|
18
|
+
import { gestureHandlerHandoff } from "./gestureHandlerHandoff.js";
|
|
15
19
|
import { withinTapSlop } from "./targetPressMonitor.js";
|
|
16
20
|
export class ElementTapMonitor {
|
|
17
21
|
listeners = new Set();
|
|
18
22
|
touchStarts = new Map();
|
|
23
|
+
handoffStops = new Map();
|
|
19
24
|
get subscriberCount() {
|
|
20
25
|
return this.listeners.size;
|
|
21
26
|
}
|
|
@@ -25,9 +30,23 @@ export class ElementTapMonitor {
|
|
|
25
30
|
this.listeners.delete(listener);
|
|
26
31
|
if (this.listeners.size === 0) {
|
|
27
32
|
this.touchStarts.clear();
|
|
33
|
+
this.dropHandoffs();
|
|
28
34
|
}
|
|
29
35
|
};
|
|
30
36
|
}
|
|
37
|
+
|
|
38
|
+
/** Fingers with a recorded start that have not ended, cancelled, or been handed off. */
|
|
39
|
+
inProgressIdentifiers() {
|
|
40
|
+
return [...this.touchStarts.keys()];
|
|
41
|
+
}
|
|
42
|
+
hasTouch(identifier) {
|
|
43
|
+
return this.touchStarts.has(identifier);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Fiber captured at touch start, or null when this finger is not in progress. */
|
|
47
|
+
startFiber(identifier) {
|
|
48
|
+
return this.touchStarts.get(identifier)?.targetFiber ?? null;
|
|
49
|
+
}
|
|
31
50
|
handleTouchStart(identifier, pageX, pageY, targetFiber) {
|
|
32
51
|
if (this.listeners.size === 0) {
|
|
33
52
|
this.touchStarts.clear();
|
|
@@ -52,33 +71,69 @@ export class ElementTapMonitor {
|
|
|
52
71
|
pageX,
|
|
53
72
|
pageY
|
|
54
73
|
})) return;
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
74
|
+
this.emit(start.targetFiber);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Gesture-handler cancelled this finger. Forget the RN touch and emit the
|
|
79
|
+
* start fiber if that handler later ends as a tap. A start with no fiber
|
|
80
|
+
* cannot latch, so it is dropped.
|
|
81
|
+
*/
|
|
82
|
+
handOffTouch(identifier, handlerTags) {
|
|
83
|
+
const start = this.touchStarts.get(identifier);
|
|
84
|
+
if (!start) return;
|
|
85
|
+
this.touchStarts.delete(identifier);
|
|
86
|
+
this.handoffStops.get(identifier)?.();
|
|
87
|
+
if (!start.targetFiber || handlerTags.length === 0 || this.listeners.size === 0) return;
|
|
88
|
+
const fiber = start.targetFiber;
|
|
89
|
+
const stop = gestureHandlerHandoff.track({
|
|
90
|
+
identifier,
|
|
91
|
+
pageX: start.pageX,
|
|
92
|
+
pageY: start.pageY,
|
|
93
|
+
handlerTags,
|
|
94
|
+
onResolve: () => this.emit(fiber)
|
|
95
|
+
});
|
|
96
|
+
this.handoffStops.set(identifier, () => {
|
|
97
|
+
stop();
|
|
98
|
+
this.handoffStops.delete(identifier);
|
|
99
|
+
});
|
|
67
100
|
}
|
|
68
101
|
|
|
69
102
|
/** Drop in-progress gesture(s). Omit `identifier` to clear every finger. */
|
|
70
103
|
cancelTouch(identifier) {
|
|
71
104
|
if (identifier == null) {
|
|
72
105
|
this.touchStarts.clear();
|
|
106
|
+
this.dropHandoffs();
|
|
73
107
|
return;
|
|
74
108
|
}
|
|
75
109
|
this.touchStarts.delete(identifier);
|
|
110
|
+
this.handoffStops.get(identifier)?.();
|
|
76
111
|
}
|
|
77
112
|
|
|
78
113
|
/** Test helper. */
|
|
79
114
|
resetForTests() {
|
|
80
115
|
this.listeners.clear();
|
|
81
116
|
this.touchStarts.clear();
|
|
117
|
+
this.dropHandoffs();
|
|
118
|
+
}
|
|
119
|
+
emit(targetFiber) {
|
|
120
|
+
if (this.listeners.size === 0) return;
|
|
121
|
+
const tap = {
|
|
122
|
+
targetFiber
|
|
123
|
+
};
|
|
124
|
+
for (const listener of this.listeners) {
|
|
125
|
+
// One condition's failure must not cost the others this tap, or abort
|
|
126
|
+
// the bridge's handling of the event's remaining touches.
|
|
127
|
+
try {
|
|
128
|
+
listener(tap);
|
|
129
|
+
} catch {
|
|
130
|
+
// The condition stays at its current value.
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
dropHandoffs() {
|
|
135
|
+
for (const stop of this.handoffStops.values()) stop();
|
|
136
|
+
this.handoffStops.clear();
|
|
82
137
|
}
|
|
83
138
|
}
|
|
84
139
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["withinTapSlop","ElementTapMonitor","listeners","Set","touchStarts","Map","subscriberCount","size","subscribe","listener","add","delete","clear","
|
|
1
|
+
{"version":3,"names":["gestureHandlerHandoff","withinTapSlop","ElementTapMonitor","listeners","Set","touchStarts","Map","handoffStops","subscriberCount","size","subscribe","listener","add","delete","clear","dropHandoffs","inProgressIdentifiers","keys","hasTouch","identifier","has","startFiber","get","targetFiber","handleTouchStart","pageX","pageY","set","handleTouchEnd","start","emit","handOffTouch","handlerTags","length","fiber","stop","track","onResolve","cancelTouch","resetForTests","tap","values","elementTapMonitor"],"sourceRoot":"../../../src","sources":["anchors/elementTapMonitor.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,18 +19,43 @@ export function anchorIdsAboveTap(tap) {
|
|
|
19
19
|
const ids = new Set();
|
|
20
20
|
let current = tap.targetFiber;
|
|
21
21
|
for (let depth = 0; current && depth < MAX_ANCESTOR_WALK; depth += 1) {
|
|
22
|
-
|
|
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
|
-
}
|
|
22
|
+
collectAnchorIds(current, ids);
|
|
29
23
|
current = getReturn(current);
|
|
30
24
|
}
|
|
31
25
|
anchorIdsByTap.set(tap, ids);
|
|
32
26
|
return ids;
|
|
33
27
|
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The fiber on `start` (or an ancestor) that carries `anchorId`.
|
|
31
|
+
*
|
|
32
|
+
* The touch-start fiber is kept after the press navigates away, so a click can
|
|
33
|
+
* still match when a live scan of the new screen no longer finds the id.
|
|
34
|
+
*/
|
|
35
|
+
export function fiberBearingAnchorId(start, anchorId) {
|
|
36
|
+
let current = start;
|
|
37
|
+
for (let depth = 0; current && depth < MAX_ANCESTOR_WALK; depth += 1) {
|
|
38
|
+
if (fiberHasAnchorId(current, anchorId)) return current;
|
|
39
|
+
current = getReturn(current);
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
function fiberHasAnchorId(fiber, anchorId) {
|
|
44
|
+
const props = getMemoizedProps(fiber);
|
|
45
|
+
if (!props) return false;
|
|
46
|
+
for (const tier of ANCHOR_PROP_TIERS) {
|
|
47
|
+
if (props[tier] === anchorId) return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
function collectAnchorIds(fiber, ids) {
|
|
52
|
+
const props = getMemoizedProps(fiber);
|
|
53
|
+
if (!props) return;
|
|
54
|
+
for (const tier of ANCHOR_PROP_TIERS) {
|
|
55
|
+
const value = props[tier];
|
|
56
|
+
if (typeof value === 'string') ids.add(value);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
34
59
|
export function sameFiber(a, b) {
|
|
35
60
|
if (a == null || b == null) return false;
|
|
36
61
|
if (a === b) return true;
|
|
@@ -1 +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","
|
|
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","collectAnchorIds","set","fiberBearingAnchorId","start","anchorId","fiberHasAnchorId","fiber","props","tier","value","add","sameFiber","a","b","aAlt","bAlt","fiberIsUnder","node","host","fiberDisabled","disabled","state","accessibilityState","tapPathDisabled","tapped"],"sourceRoot":"../../../src","sources":["anchors/elementTargetMatch.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -24,6 +24,14 @@ class FiberScanRootStore {
|
|
|
24
24
|
if (!fiber) return null;
|
|
25
25
|
return resolveCurrentFiber(fiber);
|
|
26
26
|
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Mounted scan-root instance. Font detection caches against this identity
|
|
30
|
+
* so a remount scans again and an update of the same root does not.
|
|
31
|
+
*/
|
|
32
|
+
getInstance() {
|
|
33
|
+
return this.instance;
|
|
34
|
+
}
|
|
27
35
|
subscribe(listener) {
|
|
28
36
|
this.listeners.add(listener);
|
|
29
37
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fiberFromPublicInstance","resolveCurrentFiber","FiberScanRootStore","instance","listeners","Set","set","emit","clear","getFiber","fiber","subscribe","listener","add","delete","resetForTests","fiberScanRoot"],"sourceRoot":"../../../../src","sources":["anchors/fiber/FiberScanRootStore.ts"],"mappings":";;AAAA,SAAwBA,uBAAuB,EAAEC,mBAAmB,QAAQ,qBAAkB;AAI9F;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,CAAC;EACfC,QAAQ,GAAY,IAAI;EACfC,SAAS,GAAG,IAAIC,GAAG,CAAW,CAAC;EAEhDC,GAAGA,CAACH,QAAiB,EAAQ;IAC3B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACI,IAAI,CAAC,CAAC;EACb;EAEAC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACL,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACI,IAAI,CAAC,CAAC;EACb;;EAEA;EACAE,QAAQA,CAAA,EAAoB;IAC1B,IAAI,CAAC,IAAI,CAACN,QAAQ,EAAE,OAAO,IAAI;IAC/B,MAAMO,KAAK,GAAGV,uBAAuB,CAAC,IAAI,CAACG,QAAQ,CAAC;IACpD,IAAI,CAACO,KAAK,EAAE,OAAO,IAAI;IACvB,OAAOT,mBAAmB,CAACS,KAAK,CAAC;EACnC;
|
|
1
|
+
{"version":3,"names":["fiberFromPublicInstance","resolveCurrentFiber","FiberScanRootStore","instance","listeners","Set","set","emit","clear","getFiber","fiber","getInstance","subscribe","listener","add","delete","resetForTests","fiberScanRoot"],"sourceRoot":"../../../../src","sources":["anchors/fiber/FiberScanRootStore.ts"],"mappings":";;AAAA,SAAwBA,uBAAuB,EAAEC,mBAAmB,QAAQ,qBAAkB;AAI9F;AACA;AACA;AACA;AACA,MAAMC,kBAAkB,CAAC;EACfC,QAAQ,GAAY,IAAI;EACfC,SAAS,GAAG,IAAIC,GAAG,CAAW,CAAC;EAEhDC,GAAGA,CAACH,QAAiB,EAAQ;IAC3B,IAAI,CAACA,QAAQ,GAAGA,QAAQ;IACxB,IAAI,CAACI,IAAI,CAAC,CAAC;EACb;EAEAC,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACL,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACI,IAAI,CAAC,CAAC;EACb;;EAEA;EACAE,QAAQA,CAAA,EAAoB;IAC1B,IAAI,CAAC,IAAI,CAACN,QAAQ,EAAE,OAAO,IAAI;IAC/B,MAAMO,KAAK,GAAGV,uBAAuB,CAAC,IAAI,CAACG,QAAQ,CAAC;IACpD,IAAI,CAACO,KAAK,EAAE,OAAO,IAAI;IACvB,OAAOT,mBAAmB,CAACS,KAAK,CAAC;EACnC;;EAEA;AACF;AACA;AACA;EACEC,WAAWA,CAAA,EAAY;IACrB,OAAO,IAAI,CAACR,QAAQ;EACtB;EAEAS,SAASA,CAACC,QAAkB,EAAc;IACxC,IAAI,CAACT,SAAS,CAACU,GAAG,CAACD,QAAQ,CAAC;IAC5B,OAAO,MAAM;MACX,IAAI,CAACT,SAAS,CAACW,MAAM,CAACF,QAAQ,CAAC;IACjC,CAAC;EACH;;EAEA;EACAG,aAAaA,CAAA,EAAS;IACpB,IAAI,CAACb,QAAQ,GAAG,IAAI;IACpB,IAAI,CAACC,SAAS,CAACI,KAAK,CAAC,CAAC;EACxB;EAEQD,IAAIA,CAAA,EAAS;IACnB,KAAK,MAAMM,QAAQ,IAAI,IAAI,CAACT,SAAS,EAAE;MACrCS,QAAQ,CAAC,CAAC;IACZ;EACF;AACF;AAEA,OAAO,MAAMI,aAAa,GAAG,IAAIf,kBAAkB,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Host-app font used when a theme is still on the default CSS stack.
|
|
5
|
+
*
|
|
6
|
+
* React Native does not inherit `fontFamily` from a parent view, so the family
|
|
7
|
+
* actually in use is the one set on `Text`. The primary font is whichever
|
|
8
|
+
* family appears on the most visible host text under the scan root (the SDK
|
|
9
|
+
* overlay is a sibling and is not walked). Embedded banners are inside that
|
|
10
|
+
* root; their hosts use a `userflow-` testID and are not votes, or the bar's
|
|
11
|
+
* own text would win. Text with no family counts as the platform font. Icon
|
|
12
|
+
* faces are not content. Nested text with no family does not vote: the
|
|
13
|
+
* ancestor text already does, and a child run must not add another vote for
|
|
14
|
+
* that family or for the platform font.
|
|
15
|
+
*
|
|
16
|
+
* A finished walk is cached until the visible screen changes, the reported
|
|
17
|
+
* screen changes, or `Userflow.reset()`. A walk that hits the node cap is not
|
|
18
|
+
* cached. Failures return null.
|
|
19
|
+
*/
|
|
20
|
+
import { getCurrentScreenLocation } from "../../screenTracker.js";
|
|
21
|
+
import { fiberScanRoot } from "./FiberScanRootStore.js";
|
|
22
|
+
import { MAX_ANCESTOR_WALK, getHostTypeName, getLiveHostProps, getReturn, getStateNode } from "./fiberInternals.js";
|
|
23
|
+
import { isFiberOnVisibleScreen, isScreenHostFiber } from "./visibleScreens.js";
|
|
24
|
+
import { walkVisibleFibers } from "./walkVisibleFibers.js";
|
|
25
|
+
const TEXT_HOST_NAMES = new Set(['Text', 'RCTText', 'RCTVirtualText']);
|
|
26
|
+
|
|
27
|
+
/** SDK hosts inside the scan root (embedded banners). Not the app's font. */
|
|
28
|
+
const SDK_HOST_TEST_ID_PREFIX = 'userflow-';
|
|
29
|
+
|
|
30
|
+
/** Cycle guard for nested-text inheritance. Real trees are only a few levels deep. */
|
|
31
|
+
const MAX_FONT_ANCESTORS = 50;
|
|
32
|
+
const CSS_GENERIC_FAMILIES = new Set(['sans-serif', 'serif', 'monospace', 'system-ui', 'ui-sans-serif', 'ui-serif', 'ui-monospace', 'ui-rounded', 'cursive', 'fantasy', 'emoji', 'math', 'fangsong', 'inherit', 'initial', 'unset']);
|
|
33
|
+
|
|
34
|
+
/** Short vector-icon families. Matched after stripping spaces and punctuation. */
|
|
35
|
+
const ICON_FONT_EXACT = new Set(['feather', 'antdesign', 'entypo', 'fontisto', 'simplelineicons', 'octicons', 'zocial', 'foundation', 'evilicons']);
|
|
36
|
+
let cache = null;
|
|
37
|
+
|
|
38
|
+
/** Drop the cached app font. Called from `Userflow.reset()`. */
|
|
39
|
+
export function resetDetectedAppFont() {
|
|
40
|
+
cache = null;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Family to apply, or null when the app font is the platform face or could
|
|
45
|
+
* not be read. Never throws.
|
|
46
|
+
*/
|
|
47
|
+
export function detectAppFontFamily() {
|
|
48
|
+
try {
|
|
49
|
+
const instance = fiberScanRoot.getInstance();
|
|
50
|
+
if (!instance || typeof instance !== 'object') return null;
|
|
51
|
+
const root = fiberScanRoot.getFiber();
|
|
52
|
+
if (!root) return null;
|
|
53
|
+
if (cache?.instance === instance && cacheStillCurrent(cache, root)) return cache.family;
|
|
54
|
+
const tally = tallyHostText(root);
|
|
55
|
+
if (tally.truncated) {
|
|
56
|
+
if (!tally.voted) return null;
|
|
57
|
+
return pickMajority(tally.counts);
|
|
58
|
+
}
|
|
59
|
+
const family = tally.voted ? pickMajority(tally.counts) : null;
|
|
60
|
+
cache = {
|
|
61
|
+
instance,
|
|
62
|
+
family,
|
|
63
|
+
screens: tally.screens,
|
|
64
|
+
screenKey: reportedScreenKey()
|
|
65
|
+
};
|
|
66
|
+
return family;
|
|
67
|
+
} catch {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Faces that appear in the builder's default system stack. A comma-separated
|
|
74
|
+
* list made only of these and generic keywords is that default, not a custom
|
|
75
|
+
* font. A single concrete name is still kept, including `Roboto`.
|
|
76
|
+
*/
|
|
77
|
+
const DEFAULT_STACK_FACES = new Set(['blinkmacsystemfont', 'segoe ui', 'roboto', 'helvetica', 'arial', 'apple color emoji', 'segoe ui emoji', 'segoe ui symbol']);
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* A single React Native family name. CSS stacks and generic keywords are not
|
|
81
|
+
* usable as a host `fontFamily` — RN treats the whole string as one face.
|
|
82
|
+
* Theme stacks are parsed by {@link themeConcreteFontFamily}.
|
|
83
|
+
*/
|
|
84
|
+
export function concreteFontFamily(value) {
|
|
85
|
+
if (typeof value !== 'string') return undefined;
|
|
86
|
+
const name = unwrapFontName(value);
|
|
87
|
+
if (!name || name.includes(',') || name.startsWith('-')) return undefined;
|
|
88
|
+
if (CSS_GENERIC_FAMILIES.has(name.toLowerCase())) return undefined;
|
|
89
|
+
return name;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Family a theme author chose. A single concrete name is kept. A comma-separated
|
|
94
|
+
* list keeps the first family that is not a generic or a default-stack face,
|
|
95
|
+
* so `"Source Sans Pro", sans-serif` stays Source Sans Pro and the system
|
|
96
|
+
* stack still resolves to undefined.
|
|
97
|
+
*/
|
|
98
|
+
export function themeConcreteFontFamily(value) {
|
|
99
|
+
if (typeof value !== 'string') return undefined;
|
|
100
|
+
const parts = splitCssFamilies(value);
|
|
101
|
+
if (parts.length === 0) return undefined;
|
|
102
|
+
if (parts.length === 1) return concreteFontFamily(parts[0]);
|
|
103
|
+
for (const part of parts) {
|
|
104
|
+
const name = concreteFontFamily(part);
|
|
105
|
+
if (!name || DEFAULT_STACK_FACES.has(name.toLowerCase())) continue;
|
|
106
|
+
return name;
|
|
107
|
+
}
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Split a CSS `font-family` list. A quote that opens a family is wrapping and
|
|
113
|
+
* is removed; a quote inside a name stays, so `Foo"Bar` is one family.
|
|
114
|
+
* Commas inside wrapping quotes are not separators.
|
|
115
|
+
*/
|
|
116
|
+
export function splitCssFamilies(value) {
|
|
117
|
+
const parts = [];
|
|
118
|
+
let current = '';
|
|
119
|
+
let quote = null;
|
|
120
|
+
for (const char of value) {
|
|
121
|
+
if (quote) {
|
|
122
|
+
if (char === quote) quote = null;else current += char;
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
if ((char === '"' || char === "'") && current.trim() === '') {
|
|
126
|
+
quote = char;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (char === ',') {
|
|
130
|
+
const name = current.trim();
|
|
131
|
+
if (name) parts.push(name);
|
|
132
|
+
current = '';
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
current += char;
|
|
136
|
+
}
|
|
137
|
+
const name = current.trim();
|
|
138
|
+
if (name) parts.push(name);
|
|
139
|
+
return parts;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/** Generic keywords and vendor-prefixed faces stay unquoted in CSS. */
|
|
143
|
+
export function isBareCssFamily(name) {
|
|
144
|
+
return name.startsWith('-') || CSS_GENERIC_FAMILIES.has(name.toLowerCase());
|
|
145
|
+
}
|
|
146
|
+
export function isIconFontFamily(name) {
|
|
147
|
+
const key = name.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
148
|
+
if (ICON_FONT_EXACT.has(key)) return true;
|
|
149
|
+
return key.startsWith('fontawesome') || key.startsWith('ionicons') || key.startsWith('materialcommunityicons') || key.startsWith('materialicons') || key.startsWith('materialsymbols');
|
|
150
|
+
}
|
|
151
|
+
function tallyHostText(root) {
|
|
152
|
+
const counts = new Map();
|
|
153
|
+
const screens = [];
|
|
154
|
+
let voted = false;
|
|
155
|
+
const {
|
|
156
|
+
truncated
|
|
157
|
+
} = walkVisibleFibers(root, fiber => {
|
|
158
|
+
try {
|
|
159
|
+
if (isScreenHostFiber(fiber)) screens.push(fiber);
|
|
160
|
+
if (!isTextHost(fiber)) return;
|
|
161
|
+
const vote = voteFor(fiber, root);
|
|
162
|
+
if (vote === 'skip') return;
|
|
163
|
+
voted = true;
|
|
164
|
+
counts.set(vote, (counts.get(vote) ?? 0) + 1);
|
|
165
|
+
} catch {
|
|
166
|
+
// One unreadable node is not a vote.
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
return {
|
|
170
|
+
voted,
|
|
171
|
+
truncated,
|
|
172
|
+
screens,
|
|
173
|
+
counts
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/** Usable family, null for the platform font, or skip for an icon face. */
|
|
178
|
+
function voteFor(fiber, root) {
|
|
179
|
+
if (isUnderSdkHost(fiber, root)) return 'skip';
|
|
180
|
+
const own = classifyFamily(readFontFamily(fiber));
|
|
181
|
+
if (own.kind === 'icon') return 'skip';
|
|
182
|
+
if (own.kind === 'family') return own.name;
|
|
183
|
+
if (own.kind === 'unusable') return null;
|
|
184
|
+
// No family of its own. The ancestor text node casts the vote for this run.
|
|
185
|
+
if (hasAncestorText(fiber, root)) return 'skip';
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
function hasAncestorText(fiber, root) {
|
|
189
|
+
let parent = getReturn(fiber);
|
|
190
|
+
for (let depth = 0; parent && parent !== root && depth < MAX_FONT_ANCESTORS; depth += 1) {
|
|
191
|
+
if (isTextHost(parent)) return true;
|
|
192
|
+
parent = getReturn(parent);
|
|
193
|
+
}
|
|
194
|
+
return false;
|
|
195
|
+
}
|
|
196
|
+
function cacheStillCurrent(cached, root) {
|
|
197
|
+
if (cached.screenKey !== reportedScreenKey()) return false;
|
|
198
|
+
if (cached.screens.length === 0) return true;
|
|
199
|
+
return cached.screens.every(screen => screenStillCurrent(screen, root));
|
|
200
|
+
}
|
|
201
|
+
function screenStillCurrent(screen, root) {
|
|
202
|
+
if (!isFiberOnVisibleScreen(screen)) return false;
|
|
203
|
+
let current = screen;
|
|
204
|
+
for (let depth = 0; current && depth < MAX_ANCESTOR_WALK; depth += 1) {
|
|
205
|
+
if (current === root) return true;
|
|
206
|
+
current = getReturn(current);
|
|
207
|
+
}
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
function reportedScreenKey() {
|
|
211
|
+
const location = getCurrentScreenLocation();
|
|
212
|
+
if (!location) return null;
|
|
213
|
+
const key = 'path' in location ? location.path : location.screen;
|
|
214
|
+
return key || null;
|
|
215
|
+
}
|
|
216
|
+
function classifyFamily(raw) {
|
|
217
|
+
if (!raw) return {
|
|
218
|
+
kind: 'absent'
|
|
219
|
+
};
|
|
220
|
+
if (isIconFontFamily(raw)) return {
|
|
221
|
+
kind: 'icon'
|
|
222
|
+
};
|
|
223
|
+
const concrete = concreteFontFamily(raw);
|
|
224
|
+
if (!concrete) return {
|
|
225
|
+
kind: 'unusable'
|
|
226
|
+
};
|
|
227
|
+
return {
|
|
228
|
+
kind: 'family',
|
|
229
|
+
name: concrete
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function pickMajority(counts) {
|
|
233
|
+
const platform = counts.get(null) ?? 0;
|
|
234
|
+
let bestName = null;
|
|
235
|
+
let bestCount = 0;
|
|
236
|
+
for (const [name, count] of counts) {
|
|
237
|
+
if (name == null) continue;
|
|
238
|
+
if (bestName == null || count > bestCount || count === bestCount && name < bestName) {
|
|
239
|
+
bestName = name;
|
|
240
|
+
bestCount = count;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
if (bestName == null || platform > bestCount) return null;
|
|
244
|
+
return bestName;
|
|
245
|
+
}
|
|
246
|
+
function isUnderSdkHost(fiber, root) {
|
|
247
|
+
let parent = getReturn(fiber);
|
|
248
|
+
for (let depth = 0; parent && parent !== root && depth < MAX_FONT_ANCESTORS; depth += 1) {
|
|
249
|
+
try {
|
|
250
|
+
const testID = getLiveHostProps(parent)?.testID;
|
|
251
|
+
if (typeof testID === 'string' && testID.startsWith(SDK_HOST_TEST_ID_PREFIX)) {
|
|
252
|
+
return true;
|
|
253
|
+
}
|
|
254
|
+
} catch {
|
|
255
|
+
// An unreadable ancestor is not an SDK host.
|
|
256
|
+
}
|
|
257
|
+
parent = getReturn(parent);
|
|
258
|
+
}
|
|
259
|
+
return false;
|
|
260
|
+
}
|
|
261
|
+
function isTextHost(fiber) {
|
|
262
|
+
const typeName = getHostTypeName(fiber);
|
|
263
|
+
if (typeName && TEXT_HOST_NAMES.has(typeName)) return true;
|
|
264
|
+
const elementType = fiber?.elementType;
|
|
265
|
+
if (typeof elementType === 'string' && TEXT_HOST_NAMES.has(elementType)) return true;
|
|
266
|
+
try {
|
|
267
|
+
const node = getStateNode(fiber);
|
|
268
|
+
const className = node?.viewConfig?.uiViewClassName ?? node?.__viewConfig?.uiViewClassName;
|
|
269
|
+
return typeof className === 'string' && TEXT_HOST_NAMES.has(className);
|
|
270
|
+
} catch {
|
|
271
|
+
return false;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
function readFontFamily(fiber) {
|
|
275
|
+
try {
|
|
276
|
+
const flat = flattenFontStyle(getLiveHostProps(fiber)?.style);
|
|
277
|
+
const family = flat?.fontFamily;
|
|
278
|
+
if (typeof family !== 'string') return undefined;
|
|
279
|
+
const trimmed = family.trim();
|
|
280
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
281
|
+
} catch {
|
|
282
|
+
return undefined;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
function flattenFontStyle(style) {
|
|
286
|
+
if (style == null || style === false) return null;
|
|
287
|
+
if (typeof style === 'number') return flattenRegisteredStyle(style);
|
|
288
|
+
if (Array.isArray(style)) {
|
|
289
|
+
let family;
|
|
290
|
+
for (const entry of style) {
|
|
291
|
+
const flat = flattenFontStyle(entry);
|
|
292
|
+
if (flat && flat.fontFamily != null) family = flat.fontFamily;
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
fontFamily: family
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
if (typeof style === 'object') return style;
|
|
299
|
+
return null;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* StyleSheet ids are numbers. Resolve them only when one shows up so tests
|
|
304
|
+
* that pass plain style objects do not load react-native.
|
|
305
|
+
*/
|
|
306
|
+
function flattenRegisteredStyle(styleId) {
|
|
307
|
+
try {
|
|
308
|
+
// Lazy require so unit tests that pass plain style objects do not load RN.
|
|
309
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports, @typescript-eslint/no-var-requires
|
|
310
|
+
const {
|
|
311
|
+
StyleSheet
|
|
312
|
+
} = require('react-native');
|
|
313
|
+
const flat = StyleSheet?.flatten?.(styleId);
|
|
314
|
+
return flat ?? null;
|
|
315
|
+
} catch {
|
|
316
|
+
return null;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
function unwrapFontName(value) {
|
|
320
|
+
const trimmed = value.trim();
|
|
321
|
+
if (trimmed.length >= 2) {
|
|
322
|
+
const first = trimmed[0];
|
|
323
|
+
const last = trimmed[trimmed.length - 1];
|
|
324
|
+
if (first === '"' && last === '"' || first === "'" && last === "'") {
|
|
325
|
+
return trimmed.slice(1, -1).trim();
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return trimmed;
|
|
329
|
+
}
|
|
330
|
+
//# sourceMappingURL=detectAppFontFamily.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getCurrentScreenLocation","fiberScanRoot","MAX_ANCESTOR_WALK","getHostTypeName","getLiveHostProps","getReturn","getStateNode","isFiberOnVisibleScreen","isScreenHostFiber","walkVisibleFibers","TEXT_HOST_NAMES","Set","SDK_HOST_TEST_ID_PREFIX","MAX_FONT_ANCESTORS","CSS_GENERIC_FAMILIES","ICON_FONT_EXACT","cache","resetDetectedAppFont","detectAppFontFamily","instance","getInstance","root","getFiber","cacheStillCurrent","family","tally","tallyHostText","truncated","voted","pickMajority","counts","screens","screenKey","reportedScreenKey","DEFAULT_STACK_FACES","concreteFontFamily","value","undefined","name","unwrapFontName","includes","startsWith","has","toLowerCase","themeConcreteFontFamily","parts","splitCssFamilies","length","part","current","quote","char","trim","push","isBareCssFamily","isIconFontFamily","key","replace","Map","fiber","isTextHost","vote","voteFor","set","get","isUnderSdkHost","own","classifyFamily","readFontFamily","kind","hasAncestorText","parent","depth","cached","every","screen","screenStillCurrent","location","path","raw","concrete","platform","bestName","bestCount","count","testID","typeName","elementType","node","className","viewConfig","uiViewClassName","__viewConfig","flat","flattenFontStyle","style","fontFamily","trimmed","flattenRegisteredStyle","Array","isArray","entry","styleId","StyleSheet","require","flatten","first","last","slice"],"sourceRoot":"../../../../src","sources":["anchors/fiber/detectAppFontFamily.ts"],"mappings":"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","ignoreList":[]}
|