amis-rpc-design/node_modules/react-native-safe-area-context/jest/mock.tsx
2023-10-07 19:42:30 +08:00

53 lines
1.4 KiB
TypeScript

/* global jest */
import React, { useContext } from 'react';
import type { Metrics } from '../src/SafeArea.types';
import type { SafeAreaProviderProps } from '../src/SafeAreaContext';
const MOCK_INITIAL_METRICS: Metrics = {
frame: {
width: 320,
height: 640,
x: 0,
y: 0,
},
insets: {
left: 0,
right: 0,
bottom: 0,
top: 0,
},
};
const RNSafeAreaContext = jest.requireActual('react-native-safe-area-context');
export default {
...RNSafeAreaContext,
initialWindowMetrics: MOCK_INITIAL_METRICS,
useSafeAreaInsets: () => {
return (
useContext(RNSafeAreaContext.SafeAreaInsetsContext) ??
MOCK_INITIAL_METRICS.insets
);
},
useSafeAreaFrame: () => {
return (
useContext(RNSafeAreaContext.SafeAreaFrameContext) ??
MOCK_INITIAL_METRICS.frame
);
},
// Provide a simpler implementation with default values.
SafeAreaProvider: ({ children, initialMetrics }: SafeAreaProviderProps) => {
return (
<RNSafeAreaContext.SafeAreaFrameContext.Provider
value={initialMetrics?.frame ?? MOCK_INITIAL_METRICS.frame}
>
<RNSafeAreaContext.SafeAreaInsetsContext.Provider
value={initialMetrics?.insets ?? MOCK_INITIAL_METRICS.insets}
>
{children}
</RNSafeAreaContext.SafeAreaInsetsContext.Provider>
</RNSafeAreaContext.SafeAreaFrameContext.Provider>
);
},
};