@yahoo/uds-mobile 2.16.0 → 2.18.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/dist/bin/fixtures/dist/index.mjs +14 -0
- package/dist/bin/generateTheme.mjs +7 -2
- package/dist/bin/mobile/scripts/utils/configToRNMappings.mjs +4 -0
- package/dist/components/Popover/Popover.cjs +92 -0
- package/dist/components/Popover/Popover.d.cts +26 -0
- package/dist/components/Popover/Popover.d.cts.map +1 -0
- package/dist/components/Popover/Popover.d.ts +26 -0
- package/dist/components/Popover/Popover.d.ts.map +1 -0
- package/dist/components/Popover/Popover.js +92 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/PopoverContent.cjs +124 -0
- package/dist/components/Popover/PopoverContent.d.cts +15 -0
- package/dist/components/Popover/PopoverContent.d.cts.map +1 -0
- package/dist/components/Popover/PopoverContent.d.ts +15 -0
- package/dist/components/Popover/PopoverContent.d.ts.map +1 -0
- package/dist/components/Popover/PopoverContent.js +124 -0
- package/dist/components/Popover/PopoverContent.js.map +1 -0
- package/dist/components/Popover/PopoverContext.cjs +14 -0
- package/dist/components/Popover/PopoverContext.d.cts +10 -0
- package/dist/components/Popover/PopoverContext.d.cts.map +1 -0
- package/dist/components/Popover/PopoverContext.d.ts +10 -0
- package/dist/components/Popover/PopoverContext.d.ts.map +1 -0
- package/dist/components/Popover/PopoverContext.js +13 -0
- package/dist/components/Popover/PopoverContext.js.map +1 -0
- package/dist/components/Popover/PopoverDescription.cjs +23 -0
- package/dist/components/Popover/PopoverDescription.d.cts +15 -0
- package/dist/components/Popover/PopoverDescription.d.cts.map +1 -0
- package/dist/components/Popover/PopoverDescription.d.ts +15 -0
- package/dist/components/Popover/PopoverDescription.d.ts.map +1 -0
- package/dist/components/Popover/PopoverDescription.js +23 -0
- package/dist/components/Popover/PopoverDescription.js.map +1 -0
- package/dist/components/Popover/PopoverDismiss.cjs +22 -0
- package/dist/components/Popover/PopoverDismiss.d.cts +15 -0
- package/dist/components/Popover/PopoverDismiss.d.cts.map +1 -0
- package/dist/components/Popover/PopoverDismiss.d.ts +15 -0
- package/dist/components/Popover/PopoverDismiss.d.ts.map +1 -0
- package/dist/components/Popover/PopoverDismiss.js +22 -0
- package/dist/components/Popover/PopoverDismiss.js.map +1 -0
- package/dist/components/Popover/PopoverFrame.cjs +56 -0
- package/dist/components/Popover/PopoverFrame.d.cts +23 -0
- package/dist/components/Popover/PopoverFrame.d.cts.map +1 -0
- package/dist/components/Popover/PopoverFrame.d.ts +23 -0
- package/dist/components/Popover/PopoverFrame.d.ts.map +1 -0
- package/dist/components/Popover/PopoverFrame.js +55 -0
- package/dist/components/Popover/PopoverFrame.js.map +1 -0
- package/dist/components/Popover/PopoverPortalLayer.cjs +45 -0
- package/dist/components/Popover/PopoverPortalLayer.d.cts +15 -0
- package/dist/components/Popover/PopoverPortalLayer.d.cts.map +1 -0
- package/dist/components/Popover/PopoverPortalLayer.d.ts +15 -0
- package/dist/components/Popover/PopoverPortalLayer.d.ts.map +1 -0
- package/dist/components/Popover/PopoverPortalLayer.js +45 -0
- package/dist/components/Popover/PopoverPortalLayer.js.map +1 -0
- package/dist/components/Popover/PopoverSurface.cjs +228 -0
- package/dist/components/Popover/PopoverSurface.d.cts +26 -0
- package/dist/components/Popover/PopoverSurface.d.cts.map +1 -0
- package/dist/components/Popover/PopoverSurface.d.ts +26 -0
- package/dist/components/Popover/PopoverSurface.d.ts.map +1 -0
- package/dist/components/Popover/PopoverSurface.js +227 -0
- package/dist/components/Popover/PopoverSurface.js.map +1 -0
- package/dist/components/Popover/PopoverTitle.cjs +23 -0
- package/dist/components/Popover/PopoverTitle.d.cts +15 -0
- package/dist/components/Popover/PopoverTitle.d.cts.map +1 -0
- package/dist/components/Popover/PopoverTitle.d.ts +15 -0
- package/dist/components/Popover/PopoverTitle.d.ts.map +1 -0
- package/dist/components/Popover/PopoverTitle.js +23 -0
- package/dist/components/Popover/PopoverTitle.js.map +1 -0
- package/dist/components/Popover/PopoverTrigger.cjs +88 -0
- package/dist/components/Popover/PopoverTrigger.d.cts +15 -0
- package/dist/components/Popover/PopoverTrigger.d.cts.map +1 -0
- package/dist/components/Popover/PopoverTrigger.d.ts +15 -0
- package/dist/components/Popover/PopoverTrigger.d.ts.map +1 -0
- package/dist/components/Popover/PopoverTrigger.js +88 -0
- package/dist/components/Popover/PopoverTrigger.js.map +1 -0
- package/dist/components/Popover/index.cjs +14 -0
- package/dist/components/Popover/index.d.cts +9 -0
- package/dist/components/Popover/index.d.ts +9 -0
- package/dist/components/Popover/index.js +8 -0
- package/dist/components/Popover/popoverFrameGeometry.cjs +177 -0
- package/dist/components/Popover/popoverFrameGeometry.d.cts +48 -0
- package/dist/components/Popover/popoverFrameGeometry.d.cts.map +1 -0
- package/dist/components/Popover/popoverFrameGeometry.d.ts +48 -0
- package/dist/components/Popover/popoverFrameGeometry.d.ts.map +1 -0
- package/dist/components/Popover/popoverFrameGeometry.js +177 -0
- package/dist/components/Popover/popoverFrameGeometry.js.map +1 -0
- package/dist/components/Popover/popoverLayer.cjs +16 -0
- package/dist/components/Popover/popoverLayer.d.cts +8 -0
- package/dist/components/Popover/popoverLayer.d.cts.map +1 -0
- package/dist/components/Popover/popoverLayer.d.ts +8 -0
- package/dist/components/Popover/popoverLayer.d.ts.map +1 -0
- package/dist/components/Popover/popoverLayer.js +16 -0
- package/dist/components/Popover/popoverLayer.js.map +1 -0
- package/dist/components/Popover/types.cjs +1 -0
- package/dist/components/Popover/types.d.cts +170 -0
- package/dist/components/Popover/types.d.cts.map +1 -0
- package/dist/components/Popover/types.d.ts +170 -0
- package/dist/components/Popover/types.d.ts.map +1 -0
- package/dist/components/Popover/types.js +1 -0
- package/dist/components/Toast/Toast.cjs +141 -0
- package/dist/components/Toast/Toast.d.cts +38 -0
- package/dist/components/Toast/Toast.d.cts.map +1 -0
- package/dist/components/Toast/Toast.d.ts +38 -0
- package/dist/components/Toast/Toast.d.ts.map +1 -0
- package/dist/components/Toast/Toast.js +141 -0
- package/dist/components/Toast/Toast.js.map +1 -0
- package/dist/components/Toast/ToastAnimatedItem.cjs +88 -0
- package/dist/components/Toast/ToastAnimatedItem.d.cts +27 -0
- package/dist/components/Toast/ToastAnimatedItem.d.cts.map +1 -0
- package/dist/components/Toast/ToastAnimatedItem.d.ts +27 -0
- package/dist/components/Toast/ToastAnimatedItem.d.ts.map +1 -0
- package/dist/components/Toast/ToastAnimatedItem.js +87 -0
- package/dist/components/Toast/ToastAnimatedItem.js.map +1 -0
- package/dist/components/Toast/ToastItem.cjs +35 -0
- package/dist/components/Toast/ToastItem.d.cts +25 -0
- package/dist/components/Toast/ToastItem.d.cts.map +1 -0
- package/dist/components/Toast/ToastItem.d.ts +25 -0
- package/dist/components/Toast/ToastItem.d.ts.map +1 -0
- package/dist/components/Toast/ToastItem.js +35 -0
- package/dist/components/Toast/ToastItem.js.map +1 -0
- package/dist/components/Toast/ToastProvider.cjs +144 -0
- package/dist/components/Toast/ToastProvider.d.cts +58 -0
- package/dist/components/Toast/ToastProvider.d.cts.map +1 -0
- package/dist/components/Toast/ToastProvider.d.ts +58 -0
- package/dist/components/Toast/ToastProvider.d.ts.map +1 -0
- package/dist/components/Toast/ToastProvider.js +143 -0
- package/dist/components/Toast/ToastProvider.js.map +1 -0
- package/dist/components/Toast/ToastViewport.cjs +48 -0
- package/dist/components/Toast/ToastViewport.d.cts +42 -0
- package/dist/components/Toast/ToastViewport.d.cts.map +1 -0
- package/dist/components/Toast/ToastViewport.d.ts +42 -0
- package/dist/components/Toast/ToastViewport.d.ts.map +1 -0
- package/dist/components/Toast/ToastViewport.js +48 -0
- package/dist/components/Toast/ToastViewport.js.map +1 -0
- package/dist/components/Toast/createToast.cjs +21 -0
- package/dist/components/Toast/createToast.d.cts +10 -0
- package/dist/components/Toast/createToast.d.cts.map +1 -0
- package/dist/components/Toast/createToast.d.ts +10 -0
- package/dist/components/Toast/createToast.d.ts.map +1 -0
- package/dist/components/Toast/createToast.js +20 -0
- package/dist/components/Toast/createToast.js.map +1 -0
- package/dist/components/Toast/index.cjs +10 -0
- package/dist/components/Toast/index.d.cts +6 -0
- package/dist/components/Toast/index.d.ts +6 -0
- package/dist/components/Toast/index.js +5 -0
- package/dist/components/Toast/types.cjs +1 -0
- package/dist/components/Toast/types.d.cts +113 -0
- package/dist/components/Toast/types.d.cts.map +1 -0
- package/dist/components/Toast/types.d.ts +113 -0
- package/dist/components/Toast/types.d.ts.map +1 -0
- package/dist/components/Toast/types.js +1 -0
- package/dist/components/Toast/useToastController.cjs +286 -0
- package/dist/components/Toast/useToastController.d.cts +25 -0
- package/dist/components/Toast/useToastController.d.cts.map +1 -0
- package/dist/components/Toast/useToastController.d.ts +25 -0
- package/dist/components/Toast/useToastController.d.ts.map +1 -0
- package/dist/components/Toast/useToastController.js +286 -0
- package/dist/components/Toast/useToastController.js.map +1 -0
- package/dist/components/Toast/utils.cjs +69 -0
- package/dist/components/Toast/utils.d.cts +27 -0
- package/dist/components/Toast/utils.d.cts.map +1 -0
- package/dist/components/Toast/utils.d.ts +27 -0
- package/dist/components/Toast/utils.d.ts.map +1 -0
- package/dist/components/Toast/utils.js +55 -0
- package/dist/components/Toast/utils.js.map +1 -0
- package/dist/components/internal/Overlay/index.cjs +4 -0
- package/dist/components/internal/Overlay/index.d.cts +4 -2
- package/dist/components/internal/Overlay/index.d.ts +4 -2
- package/dist/components/internal/Overlay/index.js +3 -1
- package/dist/components/internal/Overlay/types.d.cts +47 -1
- package/dist/components/internal/Overlay/types.d.cts.map +1 -1
- package/dist/components/internal/Overlay/types.d.ts +47 -1
- package/dist/components/internal/Overlay/types.d.ts.map +1 -1
- package/dist/components/internal/Overlay/useAnchoredPosition.cjs +225 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.d.cts +22 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.d.cts.map +1 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.d.ts +22 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.d.ts.map +1 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.js +225 -0
- package/dist/components/internal/Overlay/useAnchoredPosition.js.map +1 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.cjs +22 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.d.cts +12 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.d.cts.map +1 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.d.ts +12 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.d.ts.map +1 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.js +22 -0
- package/dist/components/internal/Overlay/useOverlayDismiss.js.map +1 -0
- package/dist/jest/mocks/gesture-handler.cjs +38 -0
- package/dist/jest/mocks/gesture-handler.d.cts +41 -0
- package/dist/jest/mocks/gesture-handler.d.cts.map +1 -0
- package/dist/jest/mocks/gesture-handler.d.ts +41 -0
- package/dist/jest/mocks/gesture-handler.d.ts.map +1 -0
- package/dist/jest/mocks/gesture-handler.js +37 -0
- package/dist/jest/mocks/gesture-handler.js.map +1 -0
- package/dist/jest/mocks/react-native.cjs +14 -0
- package/dist/jest/mocks/react-native.d.cts +29 -1
- package/dist/jest/mocks/react-native.d.cts.map +1 -1
- package/dist/jest/mocks/react-native.d.ts +29 -1
- package/dist/jest/mocks/react-native.d.ts.map +1 -1
- package/dist/jest/mocks/react-native.js +13 -1
- package/dist/jest/mocks/react-native.js.map +1 -1
- package/dist/jest/mocks/safe-area-context.cjs +35 -0
- package/dist/jest/mocks/safe-area-context.d.cts +43 -0
- package/dist/jest/mocks/safe-area-context.d.cts.map +1 -0
- package/dist/jest/mocks/safe-area-context.d.ts +43 -0
- package/dist/jest/mocks/safe-area-context.d.ts.map +1 -0
- package/dist/jest/mocks/safe-area-context.js +32 -0
- package/dist/jest/mocks/safe-area-context.js.map +1 -0
- package/dist/jest/mocks/screens.cjs +8 -0
- package/dist/jest/mocks/screens.d.cts +12 -0
- package/dist/jest/mocks/screens.d.cts.map +1 -0
- package/dist/jest/mocks/screens.d.ts +12 -0
- package/dist/jest/mocks/screens.d.ts.map +1 -0
- package/dist/jest/mocks/screens.js +9 -0
- package/dist/jest/mocks/screens.js.map +1 -0
- package/dist/jest/mocks/styles.cjs +98 -1
- package/dist/jest/mocks/styles.d.cts +6 -2
- package/dist/jest/mocks/styles.d.cts.map +1 -1
- package/dist/jest/mocks/styles.d.ts +6 -2
- package/dist/jest/mocks/styles.d.ts.map +1 -1
- package/dist/jest/mocks/styles.js +95 -2
- package/dist/jest/mocks/styles.js.map +1 -1
- package/dist/jest/setup.cjs +46 -3
- package/dist/jest/setup.d.cts.map +1 -1
- package/dist/jest/setup.d.ts.map +1 -1
- package/dist/jest/setup.js +46 -3
- package/dist/jest/setup.js.map +1 -1
- package/dist/types/dist/index.d.cts +4 -1
- package/dist/types/dist/index.d.cts.map +1 -1
- package/dist/types/dist/index.d.ts +4 -1
- package/dist/types/dist/index.d.ts.map +1 -1
- package/fonts/index.cjs +211 -211
- package/fonts/index.mjs +211 -211
- package/generated/styles.cjs +6 -0
- package/generated/styles.d.ts +13 -1
- package/generated/styles.mjs +6 -0
- package/generated/unistyles.d.ts +13 -0
- package/package.json +21 -1
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { I18nManager, useWindowDimensions } from "react-native";
|
|
4
|
+
import { useSafeAreaInsets } from "react-native-safe-area-context";
|
|
5
|
+
//#region src/components/internal/Overlay/useAnchoredPosition.ts
|
|
6
|
+
const DEFAULT_COLLISION_PADDING = 12;
|
|
7
|
+
const DEFAULT_OFFSET = 9;
|
|
8
|
+
const DEFAULT_ARROW_WIDTH = 22;
|
|
9
|
+
const DEFAULT_ARROW_HEIGHT = 12;
|
|
10
|
+
const DEFAULT_ARROW_BASELINE_INSET = 1;
|
|
11
|
+
function clamp(value, min, max) {
|
|
12
|
+
if (max < min) return min;
|
|
13
|
+
return Math.min(Math.max(value, min), max);
|
|
14
|
+
}
|
|
15
|
+
function resolveLogicalSide(side) {
|
|
16
|
+
return {
|
|
17
|
+
top: "top",
|
|
18
|
+
bottom: "bottom",
|
|
19
|
+
start: I18nManager.isRTL ? "right" : "left",
|
|
20
|
+
end: I18nManager.isRTL ? "left" : "right"
|
|
21
|
+
}[side];
|
|
22
|
+
}
|
|
23
|
+
function getOppositeSide(side) {
|
|
24
|
+
switch (side) {
|
|
25
|
+
case "top": return "bottom";
|
|
26
|
+
case "bottom": return "top";
|
|
27
|
+
case "left": return "right";
|
|
28
|
+
case "right": return "left";
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function formatPlacement(side, align) {
|
|
32
|
+
const logicalSide = {
|
|
33
|
+
top: "top",
|
|
34
|
+
bottom: "bottom",
|
|
35
|
+
left: I18nManager.isRTL ? "end" : "start",
|
|
36
|
+
right: I18nManager.isRTL ? "start" : "end"
|
|
37
|
+
}[side];
|
|
38
|
+
if (align === "center") return logicalSide;
|
|
39
|
+
if (side === "top" || side === "bottom") return `${logicalSide}-${align}`;
|
|
40
|
+
return `${logicalSide}-${align === "start" ? "top" : "bottom"}`;
|
|
41
|
+
}
|
|
42
|
+
function parsePlacement(placement, alignOverride) {
|
|
43
|
+
const [rawSide, rawAlign] = placement.split("-");
|
|
44
|
+
const side = resolveLogicalSide(rawSide);
|
|
45
|
+
if (alignOverride) return {
|
|
46
|
+
side,
|
|
47
|
+
align: alignOverride
|
|
48
|
+
};
|
|
49
|
+
if (!rawAlign) return {
|
|
50
|
+
side,
|
|
51
|
+
align: "center"
|
|
52
|
+
};
|
|
53
|
+
if (rawAlign === "top") return {
|
|
54
|
+
side,
|
|
55
|
+
align: "start"
|
|
56
|
+
};
|
|
57
|
+
if (rawAlign === "bottom") return {
|
|
58
|
+
side,
|
|
59
|
+
align: "end"
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
side,
|
|
63
|
+
align: rawAlign
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function getContentSize(triggerRect, contentSize, maxWidth, sameWidth, width) {
|
|
67
|
+
const resolvedWidth = sameWidth || width === "trigger" ? triggerRect.width : width === "full" ? maxWidth : typeof width === "number" ? width : contentSize.width || triggerRect.width;
|
|
68
|
+
return {
|
|
69
|
+
width: Math.min(resolvedWidth, maxWidth),
|
|
70
|
+
height: contentSize.height
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
function getCoordinate({ align, alignOffset, contentLength, triggerLength, triggerStart }) {
|
|
74
|
+
if (align === "start") return triggerStart + alignOffset;
|
|
75
|
+
if (align === "end") return triggerStart + triggerLength - contentLength + alignOffset;
|
|
76
|
+
return triggerStart + triggerLength / 2 - contentLength / 2 + alignOffset;
|
|
77
|
+
}
|
|
78
|
+
function getRawPosition({ align, alignOffset, contentHeight, contentWidth, offset, side, triggerRect }) {
|
|
79
|
+
if (side === "top" || side === "bottom") return {
|
|
80
|
+
left: getCoordinate({
|
|
81
|
+
align,
|
|
82
|
+
alignOffset,
|
|
83
|
+
contentLength: contentWidth,
|
|
84
|
+
triggerLength: triggerRect.width,
|
|
85
|
+
triggerStart: triggerRect.x
|
|
86
|
+
}),
|
|
87
|
+
top: side === "top" ? triggerRect.y - contentHeight - offset : triggerRect.y + triggerRect.height + offset
|
|
88
|
+
};
|
|
89
|
+
return {
|
|
90
|
+
left: side === "left" ? triggerRect.x - contentWidth - offset : triggerRect.x + triggerRect.width + offset,
|
|
91
|
+
top: getCoordinate({
|
|
92
|
+
align,
|
|
93
|
+
alignOffset,
|
|
94
|
+
contentLength: contentHeight,
|
|
95
|
+
triggerLength: triggerRect.height,
|
|
96
|
+
triggerStart: triggerRect.y
|
|
97
|
+
})
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
function shouldFlip({ contentHeight, contentWidth, maxBottom, maxRight, minLeft, minTop, side, triggerRect, windowHeight, windowWidth }) {
|
|
101
|
+
if (side === "top") return triggerRect.y - contentHeight < minTop && windowHeight - (triggerRect.y + triggerRect.height) > triggerRect.y;
|
|
102
|
+
if (side === "bottom") return triggerRect.y + triggerRect.height + contentHeight > maxBottom && triggerRect.y > windowHeight - (triggerRect.y + triggerRect.height);
|
|
103
|
+
if (side === "left") return triggerRect.x - contentWidth < minLeft && windowWidth - (triggerRect.x + triggerRect.width) > triggerRect.x;
|
|
104
|
+
return triggerRect.x + triggerRect.width + contentWidth > maxRight && triggerRect.x > windowWidth - (triggerRect.x + triggerRect.width);
|
|
105
|
+
}
|
|
106
|
+
function getArrowPosition({ arrowHeight, arrowWidth, contentHeight, contentLeft, contentTop, contentWidth, side, triggerRect }) {
|
|
107
|
+
const arrowBase = {
|
|
108
|
+
position: "absolute",
|
|
109
|
+
zIndex: 2
|
|
110
|
+
};
|
|
111
|
+
if (side === "top" || side === "bottom") {
|
|
112
|
+
const left = clamp(triggerRect.x + triggerRect.width / 2 - contentLeft - arrowWidth / 2, arrowHeight, contentWidth - arrowWidth - arrowHeight);
|
|
113
|
+
return {
|
|
114
|
+
...arrowBase,
|
|
115
|
+
width: arrowWidth,
|
|
116
|
+
height: arrowHeight,
|
|
117
|
+
left,
|
|
118
|
+
...side === "top" ? { bottom: -arrowHeight + DEFAULT_ARROW_BASELINE_INSET } : { top: -arrowHeight + DEFAULT_ARROW_BASELINE_INSET }
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
const top = clamp(triggerRect.y + triggerRect.height / 2 - contentTop - arrowWidth / 2, arrowHeight, contentHeight - arrowWidth - arrowHeight);
|
|
122
|
+
return {
|
|
123
|
+
...arrowBase,
|
|
124
|
+
width: arrowHeight,
|
|
125
|
+
height: arrowWidth,
|
|
126
|
+
top,
|
|
127
|
+
...side === "left" ? { right: -arrowHeight + DEFAULT_ARROW_BASELINE_INSET } : { left: -arrowHeight + DEFAULT_ARROW_BASELINE_INSET }
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
function useAnchoredPosition({ triggerRect, contentSize, placement = "bottom", align, offset = DEFAULT_OFFSET, alignOffset = 0, avoidCollisions = true, collisionPadding = DEFAULT_COLLISION_PADDING, width = "content", sameWidth = false, insets, arrowWidth, arrowHeight }) {
|
|
131
|
+
const windowDimensions = useWindowDimensions();
|
|
132
|
+
const safeAreaInsets = useSafeAreaInsets();
|
|
133
|
+
const resolvedArrowWidth = arrowWidth ?? DEFAULT_ARROW_WIDTH;
|
|
134
|
+
const resolvedArrowHeight = arrowHeight ?? DEFAULT_ARROW_HEIGHT;
|
|
135
|
+
return useMemo(() => {
|
|
136
|
+
const fallbackPlacement = placement;
|
|
137
|
+
const maxWidth = windowDimensions.width - (insets?.left ?? safeAreaInsets.left) - (insets?.right ?? safeAreaInsets.right) - collisionPadding * 2;
|
|
138
|
+
if (!triggerRect) return {
|
|
139
|
+
resolvedPlacement: fallbackPlacement,
|
|
140
|
+
contentStyle: {
|
|
141
|
+
position: "absolute",
|
|
142
|
+
left: collisionPadding,
|
|
143
|
+
top: (insets?.top ?? safeAreaInsets.top) + collisionPadding,
|
|
144
|
+
maxWidth,
|
|
145
|
+
opacity: 0
|
|
146
|
+
},
|
|
147
|
+
arrowStyle: { opacity: 0 },
|
|
148
|
+
anchorReady: false,
|
|
149
|
+
maxWidth
|
|
150
|
+
};
|
|
151
|
+
const minLeft = (insets?.left ?? safeAreaInsets.left) + collisionPadding;
|
|
152
|
+
const minTop = (insets?.top ?? safeAreaInsets.top) + collisionPadding;
|
|
153
|
+
const maxRight = windowDimensions.width - (insets?.right ?? safeAreaInsets.right) - collisionPadding;
|
|
154
|
+
const maxBottom = windowDimensions.height - (insets?.bottom ?? safeAreaInsets.bottom) - collisionPadding;
|
|
155
|
+
const { width: contentWidth, height: contentHeight } = getContentSize(triggerRect, contentSize, maxWidth, sameWidth, width);
|
|
156
|
+
const placementParts = parsePlacement(placement, align);
|
|
157
|
+
let { side } = placementParts;
|
|
158
|
+
const resolvedAlign = placementParts.align;
|
|
159
|
+
if (avoidCollisions && shouldFlip({
|
|
160
|
+
contentHeight,
|
|
161
|
+
contentWidth,
|
|
162
|
+
maxBottom,
|
|
163
|
+
maxRight,
|
|
164
|
+
minLeft,
|
|
165
|
+
minTop,
|
|
166
|
+
side,
|
|
167
|
+
triggerRect,
|
|
168
|
+
windowHeight: windowDimensions.height,
|
|
169
|
+
windowWidth: windowDimensions.width
|
|
170
|
+
})) side = getOppositeSide(side);
|
|
171
|
+
const rawPosition = getRawPosition({
|
|
172
|
+
align: resolvedAlign,
|
|
173
|
+
alignOffset,
|
|
174
|
+
contentHeight,
|
|
175
|
+
contentWidth,
|
|
176
|
+
offset,
|
|
177
|
+
side,
|
|
178
|
+
triggerRect
|
|
179
|
+
});
|
|
180
|
+
const left = clamp(rawPosition.left, minLeft, maxRight - contentWidth);
|
|
181
|
+
const top = clamp(rawPosition.top, minTop, maxBottom - contentHeight);
|
|
182
|
+
return {
|
|
183
|
+
resolvedPlacement: formatPlacement(side, resolvedAlign),
|
|
184
|
+
contentStyle: {
|
|
185
|
+
position: "absolute",
|
|
186
|
+
left,
|
|
187
|
+
top,
|
|
188
|
+
width: sameWidth || width !== "content" ? contentWidth : void 0,
|
|
189
|
+
maxWidth
|
|
190
|
+
},
|
|
191
|
+
arrowStyle: getArrowPosition({
|
|
192
|
+
arrowHeight: resolvedArrowHeight,
|
|
193
|
+
arrowWidth: resolvedArrowWidth,
|
|
194
|
+
contentHeight,
|
|
195
|
+
contentLeft: left,
|
|
196
|
+
contentTop: top,
|
|
197
|
+
contentWidth,
|
|
198
|
+
side,
|
|
199
|
+
triggerRect
|
|
200
|
+
}),
|
|
201
|
+
anchorReady: true,
|
|
202
|
+
maxWidth
|
|
203
|
+
};
|
|
204
|
+
}, [
|
|
205
|
+
align,
|
|
206
|
+
alignOffset,
|
|
207
|
+
avoidCollisions,
|
|
208
|
+
collisionPadding,
|
|
209
|
+
contentSize,
|
|
210
|
+
insets,
|
|
211
|
+
offset,
|
|
212
|
+
placement,
|
|
213
|
+
resolvedArrowHeight,
|
|
214
|
+
resolvedArrowWidth,
|
|
215
|
+
safeAreaInsets,
|
|
216
|
+
sameWidth,
|
|
217
|
+
triggerRect,
|
|
218
|
+
width,
|
|
219
|
+
windowDimensions
|
|
220
|
+
]);
|
|
221
|
+
}
|
|
222
|
+
//#endregion
|
|
223
|
+
export { useAnchoredPosition };
|
|
224
|
+
|
|
225
|
+
//# sourceMappingURL=useAnchoredPosition.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAnchoredPosition.js","names":[],"sources":["../../../../src/components/internal/Overlay/useAnchoredPosition.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { I18nManager, useWindowDimensions } from 'react-native';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\nimport type {\n AnchoredAlign,\n AnchoredPlacement,\n AnchoredRect,\n UseAnchoredPositionProps,\n UseAnchoredPositionResult,\n} from './types';\n\nconst DEFAULT_COLLISION_PADDING = 12;\nconst DEFAULT_OFFSET = 9;\nconst DEFAULT_ARROW_WIDTH = 22;\nconst DEFAULT_ARROW_HEIGHT = 12;\nconst DEFAULT_ARROW_BASELINE_INSET = 1;\n\ntype PhysicalSide = 'top' | 'bottom' | 'left' | 'right';\ntype PlacementParts = {\n side: PhysicalSide;\n align: AnchoredAlign;\n};\n\nfunction clamp(value: number, min: number, max: number): number {\n if (max < min) {\n return min;\n }\n return Math.min(Math.max(value, min), max);\n}\n\nfunction resolveLogicalSide(side: 'top' | 'bottom' | 'start' | 'end'): PhysicalSide {\n const physicalSideByLogicalSide = {\n top: 'top',\n bottom: 'bottom',\n start: I18nManager.isRTL ? 'right' : 'left',\n end: I18nManager.isRTL ? 'left' : 'right',\n } as const;\n\n return physicalSideByLogicalSide[side];\n}\n\nfunction getOppositeSide(side: PhysicalSide): PhysicalSide {\n switch (side) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n }\n}\n\nfunction formatPlacement(side: PhysicalSide, align: AnchoredAlign): AnchoredPlacement {\n const logicalSideByPhysicalSide = {\n top: 'top',\n bottom: 'bottom',\n left: I18nManager.isRTL ? 'end' : 'start',\n right: I18nManager.isRTL ? 'start' : 'end',\n } as const;\n const logicalSide = logicalSideByPhysicalSide[side];\n\n if (align === 'center') {\n return logicalSide;\n }\n\n if (side === 'top' || side === 'bottom') {\n return `${logicalSide}-${align}` as AnchoredPlacement;\n }\n\n return `${logicalSide}-${align === 'start' ? 'top' : 'bottom'}` as AnchoredPlacement;\n}\n\nfunction parsePlacement(\n placement: AnchoredPlacement,\n alignOverride?: AnchoredAlign,\n): PlacementParts {\n const [rawSide, rawAlign] = placement.split('-') as [\n 'top' | 'bottom' | 'start' | 'end',\n 'start' | 'end' | 'top' | 'bottom' | undefined,\n ];\n const side = resolveLogicalSide(rawSide);\n\n if (alignOverride) {\n return { side, align: alignOverride };\n }\n\n if (!rawAlign) {\n return { side, align: 'center' };\n }\n\n if (rawAlign === 'top') {\n return { side, align: 'start' };\n }\n\n if (rawAlign === 'bottom') {\n return { side, align: 'end' };\n }\n\n return { side, align: rawAlign };\n}\n\nfunction getContentSize(\n triggerRect: AnchoredRect,\n contentSize: { width: number; height: number },\n maxWidth: number,\n sameWidth: boolean,\n width: UseAnchoredPositionProps['width'],\n) {\n const resolvedWidth =\n sameWidth || width === 'trigger'\n ? triggerRect.width\n : width === 'full'\n ? maxWidth\n : typeof width === 'number'\n ? width\n : contentSize.width || triggerRect.width;\n\n return {\n width: Math.min(resolvedWidth, maxWidth),\n height: contentSize.height,\n };\n}\n\nfunction getCoordinate({\n align,\n alignOffset,\n contentLength,\n triggerLength,\n triggerStart,\n}: {\n align: AnchoredAlign;\n alignOffset: number;\n contentLength: number;\n triggerLength: number;\n triggerStart: number;\n}) {\n if (align === 'start') {\n return triggerStart + alignOffset;\n }\n\n if (align === 'end') {\n return triggerStart + triggerLength - contentLength + alignOffset;\n }\n\n const centered = triggerStart + triggerLength / 2 - contentLength / 2;\n return centered + alignOffset;\n}\n\nfunction getRawPosition({\n align,\n alignOffset,\n contentHeight,\n contentWidth,\n offset,\n side,\n triggerRect,\n}: {\n align: AnchoredAlign;\n alignOffset: number;\n contentHeight: number;\n contentWidth: number;\n offset: number;\n side: PhysicalSide;\n triggerRect: AnchoredRect;\n}) {\n if (side === 'top' || side === 'bottom') {\n return {\n left: getCoordinate({\n align,\n alignOffset,\n contentLength: contentWidth,\n triggerLength: triggerRect.width,\n triggerStart: triggerRect.x,\n }),\n top:\n side === 'top'\n ? triggerRect.y - contentHeight - offset\n : triggerRect.y + triggerRect.height + offset,\n };\n }\n\n return {\n left:\n side === 'left'\n ? triggerRect.x - contentWidth - offset\n : triggerRect.x + triggerRect.width + offset,\n top: getCoordinate({\n align,\n alignOffset,\n contentLength: contentHeight,\n triggerLength: triggerRect.height,\n triggerStart: triggerRect.y,\n }),\n };\n}\n\nfunction shouldFlip({\n contentHeight,\n contentWidth,\n maxBottom,\n maxRight,\n minLeft,\n minTop,\n side,\n triggerRect,\n windowHeight,\n windowWidth,\n}: {\n contentHeight: number;\n contentWidth: number;\n maxBottom: number;\n maxRight: number;\n minLeft: number;\n minTop: number;\n side: PhysicalSide;\n triggerRect: AnchoredRect;\n windowHeight: number;\n windowWidth: number;\n}) {\n if (side === 'top') {\n return (\n triggerRect.y - contentHeight < minTop &&\n windowHeight - (triggerRect.y + triggerRect.height) > triggerRect.y\n );\n }\n\n if (side === 'bottom') {\n return (\n triggerRect.y + triggerRect.height + contentHeight > maxBottom &&\n triggerRect.y > windowHeight - (triggerRect.y + triggerRect.height)\n );\n }\n\n if (side === 'left') {\n return (\n triggerRect.x - contentWidth < minLeft &&\n windowWidth - (triggerRect.x + triggerRect.width) > triggerRect.x\n );\n }\n\n return (\n triggerRect.x + triggerRect.width + contentWidth > maxRight &&\n triggerRect.x > windowWidth - (triggerRect.x + triggerRect.width)\n );\n}\n\nfunction getArrowPosition({\n arrowHeight,\n arrowWidth,\n contentHeight,\n contentLeft,\n contentTop,\n contentWidth,\n side,\n triggerRect,\n}: {\n arrowHeight: number;\n arrowWidth: number;\n contentHeight: number;\n contentLeft: number;\n contentTop: number;\n contentWidth: number;\n side: PhysicalSide;\n triggerRect: AnchoredRect;\n}) {\n const arrowBase = {\n position: 'absolute' as const,\n zIndex: 2,\n };\n\n if (side === 'top' || side === 'bottom') {\n const triggerCenter = triggerRect.x + triggerRect.width / 2;\n const left = clamp(\n triggerCenter - contentLeft - arrowWidth / 2,\n arrowHeight,\n contentWidth - arrowWidth - arrowHeight,\n );\n\n return {\n ...arrowBase,\n width: arrowWidth,\n height: arrowHeight,\n left,\n ...(side === 'top'\n ? { bottom: -arrowHeight + DEFAULT_ARROW_BASELINE_INSET }\n : { top: -arrowHeight + DEFAULT_ARROW_BASELINE_INSET }),\n };\n }\n\n const triggerCenter = triggerRect.y + triggerRect.height / 2;\n const top = clamp(\n triggerCenter - contentTop - arrowWidth / 2,\n arrowHeight,\n contentHeight - arrowWidth - arrowHeight,\n );\n\n return {\n ...arrowBase,\n width: arrowHeight,\n height: arrowWidth,\n top,\n ...(side === 'left'\n ? { right: -arrowHeight + DEFAULT_ARROW_BASELINE_INSET }\n : { left: -arrowHeight + DEFAULT_ARROW_BASELINE_INSET }),\n };\n}\n\nfunction useAnchoredPosition({\n triggerRect,\n contentSize,\n placement = 'bottom',\n align,\n offset = DEFAULT_OFFSET,\n alignOffset = 0,\n avoidCollisions = true,\n collisionPadding = DEFAULT_COLLISION_PADDING,\n width = 'content',\n sameWidth = false,\n insets,\n arrowWidth,\n arrowHeight,\n}: UseAnchoredPositionProps): UseAnchoredPositionResult {\n const windowDimensions = useWindowDimensions();\n const safeAreaInsets = useSafeAreaInsets();\n const resolvedArrowWidth = arrowWidth ?? DEFAULT_ARROW_WIDTH;\n const resolvedArrowHeight = arrowHeight ?? DEFAULT_ARROW_HEIGHT;\n\n return useMemo<UseAnchoredPositionResult>(() => {\n const fallbackPlacement = placement;\n const maxWidth =\n windowDimensions.width -\n (insets?.left ?? safeAreaInsets.left) -\n (insets?.right ?? safeAreaInsets.right) -\n collisionPadding * 2;\n\n if (!triggerRect) {\n return {\n resolvedPlacement: fallbackPlacement,\n contentStyle: {\n position: 'absolute',\n left: collisionPadding,\n top: (insets?.top ?? safeAreaInsets.top) + collisionPadding,\n maxWidth,\n opacity: 0,\n },\n arrowStyle: { opacity: 0 },\n anchorReady: false,\n maxWidth,\n };\n }\n\n const minLeft = (insets?.left ?? safeAreaInsets.left) + collisionPadding;\n const minTop = (insets?.top ?? safeAreaInsets.top) + collisionPadding;\n const maxRight =\n windowDimensions.width - (insets?.right ?? safeAreaInsets.right) - collisionPadding;\n const maxBottom =\n windowDimensions.height - (insets?.bottom ?? safeAreaInsets.bottom) - collisionPadding;\n\n const { width: contentWidth, height: contentHeight } = getContentSize(\n triggerRect,\n contentSize,\n maxWidth,\n sameWidth,\n width,\n );\n\n const placementParts = parsePlacement(placement, align);\n let { side } = placementParts;\n const resolvedAlign = placementParts.align;\n\n if (\n avoidCollisions &&\n shouldFlip({\n contentHeight,\n contentWidth,\n maxBottom,\n maxRight,\n minLeft,\n minTop,\n side,\n triggerRect,\n windowHeight: windowDimensions.height,\n windowWidth: windowDimensions.width,\n })\n ) {\n side = getOppositeSide(side);\n }\n\n const rawPosition = getRawPosition({\n align: resolvedAlign,\n alignOffset,\n contentHeight,\n contentWidth,\n offset,\n side,\n triggerRect,\n });\n\n const left = clamp(rawPosition.left, minLeft, maxRight - contentWidth);\n const top = clamp(rawPosition.top, minTop, maxBottom - contentHeight);\n const resolvedPlacement = formatPlacement(side, resolvedAlign);\n\n return {\n resolvedPlacement,\n contentStyle: {\n position: 'absolute',\n left,\n top,\n width: sameWidth || width !== 'content' ? contentWidth : undefined,\n maxWidth,\n },\n arrowStyle: getArrowPosition({\n arrowHeight: resolvedArrowHeight,\n arrowWidth: resolvedArrowWidth,\n contentHeight,\n contentLeft: left,\n contentTop: top,\n contentWidth,\n side,\n triggerRect,\n }),\n anchorReady: true,\n maxWidth,\n };\n }, [\n align,\n alignOffset,\n avoidCollisions,\n collisionPadding,\n contentSize,\n insets,\n offset,\n placement,\n resolvedArrowHeight,\n resolvedArrowWidth,\n safeAreaInsets,\n sameWidth,\n triggerRect,\n width,\n windowDimensions,\n ]);\n}\n\nexport { useAnchoredPosition };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../../_virtual/_rolldown/runtime.cjs");
|
|
4
|
+
let react = require("react");
|
|
5
|
+
let react_native = require("react-native");
|
|
6
|
+
//#region src/components/internal/Overlay/useOverlayDismiss.ts
|
|
7
|
+
function useOverlayDismiss({ open, dismissible = true, onDismiss }) {
|
|
8
|
+
const dismiss = (0, react.useCallback)(() => {
|
|
9
|
+
if (dismissible) onDismiss();
|
|
10
|
+
}, [dismissible, onDismiss]);
|
|
11
|
+
(0, react.useEffect)(() => {
|
|
12
|
+
if (!open) return;
|
|
13
|
+
const subscription = react_native.BackHandler.addEventListener("hardwareBackPress", () => {
|
|
14
|
+
dismiss();
|
|
15
|
+
return true;
|
|
16
|
+
});
|
|
17
|
+
return () => subscription.remove();
|
|
18
|
+
}, [dismiss, open]);
|
|
19
|
+
return dismiss;
|
|
20
|
+
}
|
|
21
|
+
//#endregion
|
|
22
|
+
exports.useOverlayDismiss = useOverlayDismiss;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
import { UseOverlayDismissProps } from "./types.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/components/internal/Overlay/useOverlayDismiss.d.ts
|
|
5
|
+
declare function useOverlayDismiss({
|
|
6
|
+
open,
|
|
7
|
+
dismissible,
|
|
8
|
+
onDismiss
|
|
9
|
+
}: UseOverlayDismissProps): () => void;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { useOverlayDismiss };
|
|
12
|
+
//# sourceMappingURL=useOverlayDismiss.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOverlayDismiss.d.cts","names":[],"sources":["../../../../src/components/internal/Overlay/useOverlayDismiss.ts"],"mappings":";;;;iBAKS,iBAAA,CAAA;EACP,IAAA;EACA,WAAA;EACA;AAAA,GACC,sBAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
|
|
2
|
+
import { UseOverlayDismissProps } from "./types.js";
|
|
3
|
+
|
|
4
|
+
//#region src/components/internal/Overlay/useOverlayDismiss.d.ts
|
|
5
|
+
declare function useOverlayDismiss({
|
|
6
|
+
open,
|
|
7
|
+
dismissible,
|
|
8
|
+
onDismiss
|
|
9
|
+
}: UseOverlayDismissProps): () => void;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { useOverlayDismiss };
|
|
12
|
+
//# sourceMappingURL=useOverlayDismiss.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOverlayDismiss.d.ts","names":[],"sources":["../../../../src/components/internal/Overlay/useOverlayDismiss.ts"],"mappings":";;;;iBAKS,iBAAA,CAAA;EACP,IAAA;EACA,WAAA;EACA;AAAA,GACC,sBAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
import { useCallback, useEffect } from "react";
|
|
3
|
+
import { BackHandler } from "react-native";
|
|
4
|
+
//#region src/components/internal/Overlay/useOverlayDismiss.ts
|
|
5
|
+
function useOverlayDismiss({ open, dismissible = true, onDismiss }) {
|
|
6
|
+
const dismiss = useCallback(() => {
|
|
7
|
+
if (dismissible) onDismiss();
|
|
8
|
+
}, [dismissible, onDismiss]);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
if (!open) return;
|
|
11
|
+
const subscription = BackHandler.addEventListener("hardwareBackPress", () => {
|
|
12
|
+
dismiss();
|
|
13
|
+
return true;
|
|
14
|
+
});
|
|
15
|
+
return () => subscription.remove();
|
|
16
|
+
}, [dismiss, open]);
|
|
17
|
+
return dismiss;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { useOverlayDismiss };
|
|
21
|
+
|
|
22
|
+
//# sourceMappingURL=useOverlayDismiss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOverlayDismiss.js","names":[],"sources":["../../../../src/components/internal/Overlay/useOverlayDismiss.ts"],"sourcesContent":["import { useCallback, useEffect } from 'react';\nimport { BackHandler } from 'react-native';\n\nimport type { UseOverlayDismissProps } from './types';\n\nfunction useOverlayDismiss({\n open,\n dismissible = true,\n onDismiss,\n}: UseOverlayDismissProps): () => void {\n const dismiss = useCallback(() => {\n if (dismissible) {\n onDismiss();\n }\n }, [dismissible, onDismiss]);\n\n useEffect(() => {\n if (!open) {\n return;\n }\n\n const subscription = BackHandler.addEventListener('hardwareBackPress', () => {\n dismiss();\n return true;\n });\n\n return () => subscription.remove();\n }, [dismiss, open]);\n\n return dismiss;\n}\n\nexport { useOverlayDismiss };\n"],"mappings":";;;;AAKA,SAAS,kBAAkB,EACzB,MACA,cAAc,MACd,aACqC;CACrC,MAAM,UAAU,kBAAkB;EAChC,IAAI,aACF,WAAW;IAEZ,CAAC,aAAa,UAAU,CAAC;CAE5B,gBAAgB;EACd,IAAI,CAAC,MACH;EAGF,MAAM,eAAe,YAAY,iBAAiB,2BAA2B;GAC3E,SAAS;GACT,OAAO;IACP;EAEF,aAAa,aAAa,QAAQ;IACjC,CAAC,SAAS,KAAK,CAAC;CAEnB,OAAO"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
//#region src/jest/mocks/gesture-handler.tsx
|
|
4
|
+
function GestureDetector({ children }) {
|
|
5
|
+
return children;
|
|
6
|
+
}
|
|
7
|
+
function createMockGesture() {
|
|
8
|
+
const gesture = {};
|
|
9
|
+
gesture.activeOffsetY = jest.fn(() => gesture);
|
|
10
|
+
gesture.enabled = jest.fn(() => gesture);
|
|
11
|
+
gesture.failOffsetX = jest.fn(() => gesture);
|
|
12
|
+
gesture.manualActivation = jest.fn(() => gesture);
|
|
13
|
+
gesture.onBegin = jest.fn(() => gesture);
|
|
14
|
+
gesture.onChange = jest.fn(() => gesture);
|
|
15
|
+
gesture.onEnd = jest.fn(() => gesture);
|
|
16
|
+
gesture.onFinalize = jest.fn(() => gesture);
|
|
17
|
+
gesture.onStart = jest.fn(() => gesture);
|
|
18
|
+
gesture.onTouchesDown = jest.fn(() => gesture);
|
|
19
|
+
gesture.onTouchesMove = jest.fn(() => gesture);
|
|
20
|
+
gesture.onUpdate = jest.fn(() => gesture);
|
|
21
|
+
gesture.simultaneousWithExternalGesture = jest.fn(() => gesture);
|
|
22
|
+
gesture.withRef = jest.fn(() => gesture);
|
|
23
|
+
return gesture;
|
|
24
|
+
}
|
|
25
|
+
const Gesture = {
|
|
26
|
+
Native: createMockGesture,
|
|
27
|
+
Pan: createMockGesture,
|
|
28
|
+
Race: jest.fn((..._gestures) => createMockGesture()),
|
|
29
|
+
Simultaneous: jest.fn((..._gestures) => createMockGesture()),
|
|
30
|
+
Tap: createMockGesture
|
|
31
|
+
};
|
|
32
|
+
function GestureHandlerRootView({ children }) {
|
|
33
|
+
return children;
|
|
34
|
+
}
|
|
35
|
+
//#endregion
|
|
36
|
+
exports.Gesture = Gesture;
|
|
37
|
+
exports.GestureDetector = GestureDetector;
|
|
38
|
+
exports.GestureHandlerRootView = GestureHandlerRootView;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/jest/mocks/gesture-handler.d.ts
|
|
5
|
+
interface GestureDetectorProps {
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
type MockGestureMethod = jest.Mock<MockGesture, unknown[]>;
|
|
9
|
+
interface MockGesture {
|
|
10
|
+
activeOffsetY: MockGestureMethod;
|
|
11
|
+
enabled: MockGestureMethod;
|
|
12
|
+
failOffsetX: MockGestureMethod;
|
|
13
|
+
manualActivation: MockGestureMethod;
|
|
14
|
+
onBegin: MockGestureMethod;
|
|
15
|
+
onChange: MockGestureMethod;
|
|
16
|
+
onEnd: MockGestureMethod;
|
|
17
|
+
onFinalize: MockGestureMethod;
|
|
18
|
+
onStart: MockGestureMethod;
|
|
19
|
+
onTouchesDown: MockGestureMethod;
|
|
20
|
+
onTouchesMove: MockGestureMethod;
|
|
21
|
+
onUpdate: MockGestureMethod;
|
|
22
|
+
simultaneousWithExternalGesture: MockGestureMethod;
|
|
23
|
+
withRef: MockGestureMethod;
|
|
24
|
+
}
|
|
25
|
+
declare function GestureDetector({
|
|
26
|
+
children
|
|
27
|
+
}: GestureDetectorProps): ReactNode;
|
|
28
|
+
declare function createMockGesture(): MockGesture;
|
|
29
|
+
declare const Gesture: {
|
|
30
|
+
Native: typeof createMockGesture;
|
|
31
|
+
Pan: typeof createMockGesture;
|
|
32
|
+
Race: jest.Mock<MockGesture, unknown[], any>;
|
|
33
|
+
Simultaneous: jest.Mock<MockGesture, unknown[], any>;
|
|
34
|
+
Tap: typeof createMockGesture;
|
|
35
|
+
};
|
|
36
|
+
declare function GestureHandlerRootView({
|
|
37
|
+
children
|
|
38
|
+
}: GestureDetectorProps): ReactNode;
|
|
39
|
+
//#endregion
|
|
40
|
+
export { Gesture, GestureDetector, GestureHandlerRootView };
|
|
41
|
+
//# sourceMappingURL=gesture-handler.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gesture-handler.d.cts","names":[],"sources":["../../../src/jest/mocks/gesture-handler.tsx"],"mappings":";;;;UAIU,oBAAA;EACR,QAAA,GAAW,SAAA;AAAA;AAAA,KAGR,iBAAA,GAAoB,IAAA,CAAK,IAAA,CAAK,WAAA;AAAA,UAEzB,WAAA;EACR,aAAA,EAAe,iBAAA;EACf,OAAA,EAAS,iBAAA;EACT,WAAA,EAAa,iBAAA;EACb,gBAAA,EAAkB,iBAAA;EAClB,OAAA,EAAS,iBAAA;EACT,QAAA,EAAU,iBAAA;EACV,KAAA,EAAO,iBAAA;EACP,UAAA,EAAY,iBAAA;EACZ,OAAA,EAAS,iBAAA;EACT,aAAA,EAAe,iBAAA;EACf,aAAA,EAAe,iBAAA;EACf,QAAA,EAAU,iBAAA;EACV,+BAAA,EAAiC,iBAAA;EACjC,OAAA,EAAS,iBAAA;AAAA;AAAA,iBAGF,eAAA,CAAA;EAAkB;AAAA,GAAY,oBAAA,GAAoB,SAAA;AAAA,iBAIlD,iBAAA,CAAA,GAAqB,WAAA;AAAA,cAqBxB,OAAA;;;;;;;iBAQG,sBAAA,CAAA;EAAyB;AAAA,GAAY,oBAAA,GAAoB,SAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
import { ReactNode } from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/jest/mocks/gesture-handler.d.ts
|
|
5
|
+
interface GestureDetectorProps {
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
type MockGestureMethod = jest.Mock<MockGesture, unknown[]>;
|
|
9
|
+
interface MockGesture {
|
|
10
|
+
activeOffsetY: MockGestureMethod;
|
|
11
|
+
enabled: MockGestureMethod;
|
|
12
|
+
failOffsetX: MockGestureMethod;
|
|
13
|
+
manualActivation: MockGestureMethod;
|
|
14
|
+
onBegin: MockGestureMethod;
|
|
15
|
+
onChange: MockGestureMethod;
|
|
16
|
+
onEnd: MockGestureMethod;
|
|
17
|
+
onFinalize: MockGestureMethod;
|
|
18
|
+
onStart: MockGestureMethod;
|
|
19
|
+
onTouchesDown: MockGestureMethod;
|
|
20
|
+
onTouchesMove: MockGestureMethod;
|
|
21
|
+
onUpdate: MockGestureMethod;
|
|
22
|
+
simultaneousWithExternalGesture: MockGestureMethod;
|
|
23
|
+
withRef: MockGestureMethod;
|
|
24
|
+
}
|
|
25
|
+
declare function GestureDetector({
|
|
26
|
+
children
|
|
27
|
+
}: GestureDetectorProps): ReactNode;
|
|
28
|
+
declare function createMockGesture(): MockGesture;
|
|
29
|
+
declare const Gesture: {
|
|
30
|
+
Native: typeof createMockGesture;
|
|
31
|
+
Pan: typeof createMockGesture;
|
|
32
|
+
Race: jest.Mock<MockGesture, unknown[], any>;
|
|
33
|
+
Simultaneous: jest.Mock<MockGesture, unknown[], any>;
|
|
34
|
+
Tap: typeof createMockGesture;
|
|
35
|
+
};
|
|
36
|
+
declare function GestureHandlerRootView({
|
|
37
|
+
children
|
|
38
|
+
}: GestureDetectorProps): ReactNode;
|
|
39
|
+
//#endregion
|
|
40
|
+
export { Gesture, GestureDetector, GestureHandlerRootView };
|
|
41
|
+
//# sourceMappingURL=gesture-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gesture-handler.d.ts","names":[],"sources":["../../../src/jest/mocks/gesture-handler.tsx"],"mappings":";;;;UAIU,oBAAA;EACR,QAAA,GAAW,SAAA;AAAA;AAAA,KAGR,iBAAA,GAAoB,IAAA,CAAK,IAAA,CAAK,WAAA;AAAA,UAEzB,WAAA;EACR,aAAA,EAAe,iBAAA;EACf,OAAA,EAAS,iBAAA;EACT,WAAA,EAAa,iBAAA;EACb,gBAAA,EAAkB,iBAAA;EAClB,OAAA,EAAS,iBAAA;EACT,QAAA,EAAU,iBAAA;EACV,KAAA,EAAO,iBAAA;EACP,UAAA,EAAY,iBAAA;EACZ,OAAA,EAAS,iBAAA;EACT,aAAA,EAAe,iBAAA;EACf,aAAA,EAAe,iBAAA;EACf,QAAA,EAAU,iBAAA;EACV,+BAAA,EAAiC,iBAAA;EACjC,OAAA,EAAS,iBAAA;AAAA;AAAA,iBAGF,eAAA,CAAA;EAAkB;AAAA,GAAY,oBAAA,GAAoB,SAAA;AAAA,iBAIlD,iBAAA,CAAA,GAAqB,WAAA;AAAA,cAqBxB,OAAA;;;;;;;iBAQG,sBAAA,CAAA;EAAyB;AAAA,GAAY,oBAAA,GAAoB,SAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*! © 2026 Yahoo, Inc. UDS Mobile v0.0.0-development */
|
|
2
|
+
//#region src/jest/mocks/gesture-handler.tsx
|
|
3
|
+
function GestureDetector({ children }) {
|
|
4
|
+
return children;
|
|
5
|
+
}
|
|
6
|
+
function createMockGesture() {
|
|
7
|
+
const gesture = {};
|
|
8
|
+
gesture.activeOffsetY = jest.fn(() => gesture);
|
|
9
|
+
gesture.enabled = jest.fn(() => gesture);
|
|
10
|
+
gesture.failOffsetX = jest.fn(() => gesture);
|
|
11
|
+
gesture.manualActivation = jest.fn(() => gesture);
|
|
12
|
+
gesture.onBegin = jest.fn(() => gesture);
|
|
13
|
+
gesture.onChange = jest.fn(() => gesture);
|
|
14
|
+
gesture.onEnd = jest.fn(() => gesture);
|
|
15
|
+
gesture.onFinalize = jest.fn(() => gesture);
|
|
16
|
+
gesture.onStart = jest.fn(() => gesture);
|
|
17
|
+
gesture.onTouchesDown = jest.fn(() => gesture);
|
|
18
|
+
gesture.onTouchesMove = jest.fn(() => gesture);
|
|
19
|
+
gesture.onUpdate = jest.fn(() => gesture);
|
|
20
|
+
gesture.simultaneousWithExternalGesture = jest.fn(() => gesture);
|
|
21
|
+
gesture.withRef = jest.fn(() => gesture);
|
|
22
|
+
return gesture;
|
|
23
|
+
}
|
|
24
|
+
const Gesture = {
|
|
25
|
+
Native: createMockGesture,
|
|
26
|
+
Pan: createMockGesture,
|
|
27
|
+
Race: jest.fn((..._gestures) => createMockGesture()),
|
|
28
|
+
Simultaneous: jest.fn((..._gestures) => createMockGesture()),
|
|
29
|
+
Tap: createMockGesture
|
|
30
|
+
};
|
|
31
|
+
function GestureHandlerRootView({ children }) {
|
|
32
|
+
return children;
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { Gesture, GestureDetector, GestureHandlerRootView };
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=gesture-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gesture-handler.js","names":[],"sources":["../../../src/jest/mocks/gesture-handler.tsx"],"sourcesContent":["/// <reference types=\"jest\" />\n\nimport type { ReactNode } from 'react';\n\ninterface GestureDetectorProps {\n children?: ReactNode;\n}\n\ntype MockGestureMethod = jest.Mock<MockGesture, unknown[]>;\n\ninterface MockGesture {\n activeOffsetY: MockGestureMethod;\n enabled: MockGestureMethod;\n failOffsetX: MockGestureMethod;\n manualActivation: MockGestureMethod;\n onBegin: MockGestureMethod;\n onChange: MockGestureMethod;\n onEnd: MockGestureMethod;\n onFinalize: MockGestureMethod;\n onStart: MockGestureMethod;\n onTouchesDown: MockGestureMethod;\n onTouchesMove: MockGestureMethod;\n onUpdate: MockGestureMethod;\n simultaneousWithExternalGesture: MockGestureMethod;\n withRef: MockGestureMethod;\n}\n\nfunction GestureDetector({ children }: GestureDetectorProps) {\n return children;\n}\n\nfunction createMockGesture(): MockGesture {\n const gesture = {} as MockGesture;\n\n gesture.activeOffsetY = jest.fn(() => gesture);\n gesture.enabled = jest.fn(() => gesture);\n gesture.failOffsetX = jest.fn(() => gesture);\n gesture.manualActivation = jest.fn(() => gesture);\n gesture.onBegin = jest.fn(() => gesture);\n gesture.onChange = jest.fn(() => gesture);\n gesture.onEnd = jest.fn(() => gesture);\n gesture.onFinalize = jest.fn(() => gesture);\n gesture.onStart = jest.fn(() => gesture);\n gesture.onTouchesDown = jest.fn(() => gesture);\n gesture.onTouchesMove = jest.fn(() => gesture);\n gesture.onUpdate = jest.fn(() => gesture);\n gesture.simultaneousWithExternalGesture = jest.fn(() => gesture);\n gesture.withRef = jest.fn(() => gesture);\n\n return gesture;\n}\n\nconst Gesture = {\n Native: createMockGesture,\n Pan: createMockGesture,\n Race: jest.fn((..._gestures: unknown[]) => createMockGesture()),\n Simultaneous: jest.fn((..._gestures: unknown[]) => createMockGesture()),\n Tap: createMockGesture,\n};\n\nfunction GestureHandlerRootView({ children }: GestureDetectorProps) {\n return children;\n}\n\nexport { Gesture, GestureDetector, GestureHandlerRootView };\n"],"mappings":";;AA2BA,SAAS,gBAAgB,EAAE,YAAkC;CAC3D,OAAO;;AAGT,SAAS,oBAAiC;CACxC,MAAM,UAAU,EAAE;CAElB,QAAQ,gBAAgB,KAAK,SAAS,QAAQ;CAC9C,QAAQ,UAAU,KAAK,SAAS,QAAQ;CACxC,QAAQ,cAAc,KAAK,SAAS,QAAQ;CAC5C,QAAQ,mBAAmB,KAAK,SAAS,QAAQ;CACjD,QAAQ,UAAU,KAAK,SAAS,QAAQ;CACxC,QAAQ,WAAW,KAAK,SAAS,QAAQ;CACzC,QAAQ,QAAQ,KAAK,SAAS,QAAQ;CACtC,QAAQ,aAAa,KAAK,SAAS,QAAQ;CAC3C,QAAQ,UAAU,KAAK,SAAS,QAAQ;CACxC,QAAQ,gBAAgB,KAAK,SAAS,QAAQ;CAC9C,QAAQ,gBAAgB,KAAK,SAAS,QAAQ;CAC9C,QAAQ,WAAW,KAAK,SAAS,QAAQ;CACzC,QAAQ,kCAAkC,KAAK,SAAS,QAAQ;CAChE,QAAQ,UAAU,KAAK,SAAS,QAAQ;CAExC,OAAO;;AAGT,MAAM,UAAU;CACd,QAAQ;CACR,KAAK;CACL,MAAM,KAAK,IAAI,GAAG,cAAyB,mBAAmB,CAAC;CAC/D,cAAc,KAAK,IAAI,GAAG,cAAyB,mBAAmB,CAAC;CACvE,KAAK;CACN;AAED,SAAS,uBAAuB,EAAE,YAAkC;CAClE,OAAO"}
|
|
@@ -114,6 +114,16 @@ const Keyboard = {
|
|
|
114
114
|
removeListener: jest.fn(),
|
|
115
115
|
isVisible: jest.fn(() => false)
|
|
116
116
|
};
|
|
117
|
+
const BackHandler = {
|
|
118
|
+
addEventListener: jest.fn(() => ({ remove: jest.fn() })),
|
|
119
|
+
exitApp: jest.fn()
|
|
120
|
+
};
|
|
121
|
+
const I18nManager = {
|
|
122
|
+
isRTL: false,
|
|
123
|
+
allowRTL: jest.fn(),
|
|
124
|
+
forceRTL: jest.fn(),
|
|
125
|
+
getConstants: () => ({ isRTL: false })
|
|
126
|
+
};
|
|
117
127
|
const Linking = {
|
|
118
128
|
openURL: jest.fn().mockResolvedValue(true),
|
|
119
129
|
canOpenURL: jest.fn().mockResolvedValue(true),
|
|
@@ -170,7 +180,9 @@ const ReactNative = {
|
|
|
170
180
|
Dimensions,
|
|
171
181
|
PixelRatio,
|
|
172
182
|
Animated,
|
|
183
|
+
BackHandler,
|
|
173
184
|
Keyboard,
|
|
185
|
+
I18nManager,
|
|
174
186
|
Linking,
|
|
175
187
|
AppState,
|
|
176
188
|
AccessibilityInfo,
|
|
@@ -185,8 +197,10 @@ exports.ActivityIndicator = ActivityIndicator;
|
|
|
185
197
|
exports.Animated = Animated;
|
|
186
198
|
exports.AppState = AppState;
|
|
187
199
|
exports.Appearance = Appearance;
|
|
200
|
+
exports.BackHandler = BackHandler;
|
|
188
201
|
exports.Dimensions = Dimensions;
|
|
189
202
|
exports.FlatList = FlatList;
|
|
203
|
+
exports.I18nManager = I18nManager;
|
|
190
204
|
exports.Image = Image;
|
|
191
205
|
exports.Keyboard = Keyboard;
|
|
192
206
|
exports.KeyboardAvoidingView = KeyboardAvoidingView;
|
|
@@ -108,6 +108,20 @@ declare const Keyboard: {
|
|
|
108
108
|
removeListener: jest.Mock<any, any, any>;
|
|
109
109
|
isVisible: jest.Mock<boolean, [], any>;
|
|
110
110
|
};
|
|
111
|
+
declare const BackHandler: {
|
|
112
|
+
addEventListener: jest.Mock<{
|
|
113
|
+
remove: jest.Mock<any, any, any>;
|
|
114
|
+
}, [], any>;
|
|
115
|
+
exitApp: jest.Mock<any, any, any>;
|
|
116
|
+
};
|
|
117
|
+
declare const I18nManager: {
|
|
118
|
+
isRTL: boolean;
|
|
119
|
+
allowRTL: jest.Mock<any, any, any>;
|
|
120
|
+
forceRTL: jest.Mock<any, any, any>;
|
|
121
|
+
getConstants: () => {
|
|
122
|
+
isRTL: boolean;
|
|
123
|
+
};
|
|
124
|
+
};
|
|
111
125
|
declare const Linking: {
|
|
112
126
|
openURL: jest.Mock<any, any, any>;
|
|
113
127
|
canOpenURL: jest.Mock<any, any, any>;
|
|
@@ -242,6 +256,12 @@ declare const ReactNative: {
|
|
|
242
256
|
}, [], any>;
|
|
243
257
|
createAnimatedComponent: (Component: React.ComponentType) => React.ComponentType<{}>;
|
|
244
258
|
};
|
|
259
|
+
BackHandler: {
|
|
260
|
+
addEventListener: jest.Mock<{
|
|
261
|
+
remove: jest.Mock<any, any, any>;
|
|
262
|
+
}, [], any>;
|
|
263
|
+
exitApp: jest.Mock<any, any, any>;
|
|
264
|
+
};
|
|
245
265
|
Keyboard: {
|
|
246
266
|
dismiss: jest.Mock<any, any, any>;
|
|
247
267
|
addListener: jest.Mock<{
|
|
@@ -250,6 +270,14 @@ declare const ReactNative: {
|
|
|
250
270
|
removeListener: jest.Mock<any, any, any>;
|
|
251
271
|
isVisible: jest.Mock<boolean, [], any>;
|
|
252
272
|
};
|
|
273
|
+
I18nManager: {
|
|
274
|
+
isRTL: boolean;
|
|
275
|
+
allowRTL: jest.Mock<any, any, any>;
|
|
276
|
+
forceRTL: jest.Mock<any, any, any>;
|
|
277
|
+
getConstants: () => {
|
|
278
|
+
isRTL: boolean;
|
|
279
|
+
};
|
|
280
|
+
};
|
|
253
281
|
Linking: {
|
|
254
282
|
openURL: jest.Mock<any, any, any>;
|
|
255
283
|
canOpenURL: jest.Mock<any, any, any>;
|
|
@@ -289,5 +317,5 @@ declare const ReactNative: {
|
|
|
289
317
|
};
|
|
290
318
|
};
|
|
291
319
|
//#endregion
|
|
292
|
-
export { AccessibilityInfo, ActivityIndicator, Animated, AppState, Appearance, Dimensions, FlatList, Image, Keyboard, KeyboardAvoidingView, Linking, Modal, NativeEventEmitter, PixelRatio, Platform, Pressable, RefreshControl, SafeAreaView, ScrollView, SectionList, StyleSheet, Switch, Text, TextInput, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View, ReactNative as default, useColorScheme, useWindowDimensions };
|
|
320
|
+
export { AccessibilityInfo, ActivityIndicator, Animated, AppState, Appearance, BackHandler, Dimensions, FlatList, I18nManager, Image, Keyboard, KeyboardAvoidingView, Linking, Modal, NativeEventEmitter, PixelRatio, Platform, Pressable, RefreshControl, SafeAreaView, ScrollView, SectionList, StyleSheet, Switch, Text, TextInput, TouchableHighlight, TouchableOpacity, TouchableWithoutFeedback, View, ReactNative as default, useColorScheme, useWindowDimensions };
|
|
293
321
|
//# sourceMappingURL=react-native.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-native.d.cts","names":[],"sources":["../../../src/jest/mocks/react-native.tsx"],"mappings":";;;;UAgBU,kBAAA;EACR,QAAA,GAAW,SAAA;EACX,KAAA;EACA,MAAA;EACA,iBAAA;EACA,kBAAA;EAAA,CACC,GAAA;AAAA;AAAA,cAaG,IAAA,EAAI,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACJ,IAAA,EAAI,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACJ,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACL,UAAA,EAAU,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACV,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACT,gBAAA,EAAgB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAChB,kBAAA,EAAkB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAClB,wBAAA,EAAwB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACxB,SAAA,EAAS,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACT,QAAA,EAAQ,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACR,WAAA,EAAW,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACX,iBAAA,EAAiB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACjB,YAAA,EAAY,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACZ,KAAA,EAAK,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACL,MAAA,EAAM,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACN,cAAA,EAAc,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cACd,oBAAA,EAAoB,KAAA,CAAA,yBAAA,CAAA,IAAA,CAAA,kBAAA,WAAA,KAAA,CAAA,aAAA;AAAA,cAGpB,UAAA;qBACe,MAAA,kBAAsB,MAAA,EAAU,CAAA,KAAI,CAAA;;4BAO/B,MAAA;;;;;;;;;;;;;;;;;cAOpB,QAAA;;;qBAGe,MAAA,mBAAuB,MAAA,EAAU,CAAA,KAAI,CAAA,OAAQ,CAAA;;;;;;;;;;;;;cAgB5D,UAAA;;;;;;;;;;;;;cAaA,UAAA;;;;;;cAQA,QAAA;;;;;;;;;;;;;;;;uCAaiC,KAAA,CAAM,aAAA,KAAa,KAAA,CAAA,aAAA;AAAA;AAAA,cAIpD,QAAA;;;;;;;;
|
|
1
|
+
{"version":3,"file":"react-native.d.cts","names":[],"sources":["../../../src/jest/mocks/react-native.tsx"],"mappings":"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"}
|