forked from gorhom/react-native-bottom-sheet
-
Notifications
You must be signed in to change notification settings - Fork 0
/
mock.js
126 lines (103 loc) · 2.56 KB
/
mock.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/**
* Mock implementation for test runners.
*
* Example:
*
* ```js
* jest.mock('@gorhom/bottom-sheet', () => require('@gorhom/bottom-sheet/mock'));
* ```
*/
const React = require('react');
const ReactNative = require('react-native');
const NOOP = () => {};
const NOOP_VALUE = { value: 0 };
const BottomSheetModalProvider = ({ children }) => {
return children;
};
const BottomSheetBackdrop = NOOP;
const BottomSheetComponent = props => {
return props.children;
};
class BottomSheetModal extends React.Component {
snapToIndex() {}
snapToPosition() {}
expand() {}
collapse() {}
close() {}
forceClose() {}
present() {}
dismiss() {}
render() {
return this.props.children;
}
}
class BottomSheet extends React.Component {
snapToIndex() {}
snapToPosition() {}
expand() {}
collapse() {}
close() {}
forceClose() {}
render() {
return this.props.children;
}
}
const useBottomSheet = () => ({
snapToIndex: NOOP,
snapToPosition: NOOP,
expand: NOOP,
collapse: NOOP,
close: NOOP,
forceClose: NOOP,
animatedIndex: NOOP_VALUE,
animatedPosition: NOOP_VALUE,
});
const useBottomSheetModal = () => ({
dismiss: NOOP,
dismissAll: NOOP,
});
const useBottomSheetAnimationConfigs = configs => configs;
const bottomSheetInternal = {
stopAnimation: NOOP,
animateToPosition: NOOP,
setScrollableRef: NOOP,
removeScrollableRef: NOOP,
};
const bottomSheetModalInternal = {
mountSheet: NOOP,
unmountSheet: NOOP,
willUnmountSheet: NOOP,
};
const internalProxy = {
get(target, prop) {
return prop in target ? target[prop] : NOOP_VALUE;
},
};
const useBottomSheetInternal = () =>
new Proxy(bottomSheetInternal, internalProxy);
const useBottomSheetModalInternal = () =>
new Proxy(bottomSheetModalInternal, internalProxy);
const useBottomSheetDynamicSnapPoints = () => ({
animatedSnapPoints: NOOP_VALUE,
animatedHandleHeight: NOOP_VALUE,
animatedContentHeight: NOOP_VALUE,
handleContentLayout: NOOP,
});
module.exports = {
BottomSheetView: BottomSheetComponent,
BottomSheetScrollView: ReactNative.ScrollView,
BottomSheetSectionList: ReactNative.SectionList,
BottomSheetFlatList: ReactNative.FlatList,
BottomSheetVirtualizedList: ReactNative.VirtualizedList,
BottomSheetModalProvider,
BottomSheetModal,
BottomSheetBackdrop,
default: BottomSheet,
useBottomSheet,
useBottomSheetModal,
useBottomSheetSpringConfigs: useBottomSheetAnimationConfigs,
useBottomSheetTimingConfigs: useBottomSheetAnimationConfigs,
useBottomSheetInternal,
useBottomSheetModalInternal,
useBottomSheetDynamicSnapPoints,
};