@applicaster/zapp-react-native-ui-components 12.0.0-alpha.7101461483 → 12.0.0-alpha.7254207052
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/Components/AudioPlayer/AudioPlayer.tsx +9 -1
- package/Components/AudioPlayer/__tests__/__snapshots__/audioPlayer.test.js.snap +5 -0
- package/Components/AudioPlayer/helpers.tsx +1 -0
- package/Components/Cell/Cell.tsx +2 -2
- package/Components/Cell/CellWithFocusable.tsx +21 -14
- package/Components/Cell/TvOSCellComponent.tsx +2 -2
- package/Components/ErrorScreen/index.tsx +1 -1
- package/Components/FocusableCell/index.tsx +7 -7
- package/Components/FocusableList/FocusableChild.ts +24 -14
- package/Components/FocusableList/FocusableItem.tsx +1 -1
- package/Components/FocusableList/FocusableListItemWrapper.tsx +76 -0
- package/Components/FocusableList/hooks/useCellState.android.ts +3 -1
- package/Components/FocusableList/index.tsx +26 -25
- package/Components/GeneralContentScreen/GeneralContentScreen.tsx +6 -3
- package/Components/HookRenderer/index.tsx +1 -6
- package/Components/Image/Image.android.tsx +3 -25
- package/Components/Image/Image.tsx +18 -2
- package/Components/Image/utils/index.ts +39 -0
- package/Components/Layout/TV/__tests__/index.test.tsx +1 -34
- package/Components/Layout/TV/index.tsx +20 -36
- package/Components/MasterCell/DefaultComponents/Image/Image.android.tsx +9 -26
- package/Components/MasterCell/DefaultComponents/Image/hooks/useImageSize.ts +65 -0
- package/Components/MasterCell/DefaultComponents/LiveImage/index.tsx +3 -1
- package/Components/MasterCell/DefaultComponents/SecondaryImage/Image.tsx +3 -2
- package/Components/MasterCell/DefaultComponents/Toggle.tsx +5 -1
- package/Components/MasterCell/SharedUI/CollapsibleTextContainer/index.ts +8 -14
- package/Components/MasterCell/utils/index.ts +2 -2
- package/Components/PlayerContainer/PlayerContainer.tsx +46 -28
- package/Components/PlayerContainer/ProgramInfo/index.tsx +3 -1
- package/Components/River/ComponentsMap/ComponentsMap.tsx +25 -0
- package/Components/River/TV/River.tsx +2 -2
- package/Components/River/__tests__/__snapshots__/componentsMap.test.js.snap +1 -1
- package/Components/River/__tests__/componentsMap.test.js +1 -0
- package/Components/River/useScreenConfiguration.ts +2 -2
- package/Components/RouteManager/__tests__/__snapshots__/routeManager.test.js.snap +1 -0
- package/Components/RouteManager/__tests__/routeManager.test.js +9 -2
- package/Components/RouteManager/index.tsx +5 -3
- package/Components/Screen/__tests__/Screen.test.tsx +88 -70
- package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +20 -6
- package/Components/Screen/__tests__/navigationHandler.test.ts +1 -178
- package/Components/Screen/index.tsx +91 -42
- package/Components/Screen/navigationHandler.ts +0 -82
- package/Components/ScreenResolver/index.tsx +1 -1
- package/Components/Tabs/TV/styles.ts +1 -1
- package/Components/VideoLive/PlayerLiveImageComponent.tsx +31 -28
- package/Components/VideoLive/__tests__/PlayerLiveImageComponent.test.tsx +30 -3
- package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +22 -27
- package/Components/VideoModal/__tests__/PlayerDetails.test.tsx +0 -2
- package/Components/VideoModal/__tests__/PlayerWrapper.test.tsx +1 -2
- package/Components/VideoModal/__tests__/__snapshots__/PlayerWrapper.test.tsx.snap +211 -163
- package/Components/Viewport/ViewportAware/__tests__/viewportAware.test.js +26 -21
- package/Components/Viewport/ViewportTracker/__tests__/viewportTracker.test.js +4 -5
- package/Components/ZappUIComponent/index.tsx +22 -12
- package/Contexts/ScreenContext/index.tsx +1 -4
- package/Decorators/ComponentsMapWrapper/withComponentsMapProvider.tsx +7 -2
- package/package.json +5 -5
|
@@ -1,249 +1,297 @@
|
|
|
1
1
|
// Jest Snapshot v1, https://goo.gl/fbAQLP
|
|
2
2
|
|
|
3
3
|
exports[`PlayerWrapper renders inline 1`] = `
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
Object {
|
|
7
|
-
"bottom": "off",
|
|
8
|
-
"left": "off",
|
|
9
|
-
"right": "off",
|
|
10
|
-
"top": "additive",
|
|
11
|
-
}
|
|
12
|
-
}
|
|
4
|
+
<RNCSafeAreaProvider
|
|
5
|
+
onInsetsChange={[Function]}
|
|
13
6
|
style={
|
|
14
7
|
Array [
|
|
15
8
|
Object {
|
|
16
|
-
"
|
|
17
|
-
},
|
|
18
|
-
Object {
|
|
19
|
-
"backgroundColor": "transparent",
|
|
20
|
-
},
|
|
21
|
-
Object {
|
|
22
|
-
"height": 800,
|
|
23
|
-
"width": 300,
|
|
9
|
+
"flex": 1,
|
|
24
10
|
},
|
|
25
|
-
|
|
11
|
+
undefined,
|
|
26
12
|
]
|
|
27
13
|
}
|
|
28
14
|
>
|
|
29
|
-
<
|
|
15
|
+
<RNCSafeAreaView
|
|
16
|
+
edges={
|
|
17
|
+
Object {
|
|
18
|
+
"bottom": "off",
|
|
19
|
+
"left": "off",
|
|
20
|
+
"right": "off",
|
|
21
|
+
"top": "additive",
|
|
22
|
+
}
|
|
23
|
+
}
|
|
30
24
|
style={
|
|
31
25
|
Array [
|
|
32
26
|
Object {
|
|
33
|
-
"
|
|
34
|
-
"position": "relative",
|
|
35
|
-
"zIndex": 200,
|
|
27
|
+
"flexDirection": "column",
|
|
36
28
|
},
|
|
37
29
|
Object {
|
|
38
|
-
"
|
|
39
|
-
|
|
40
|
-
|
|
30
|
+
"backgroundColor": "transparent",
|
|
31
|
+
},
|
|
32
|
+
Object {
|
|
33
|
+
"height": 800,
|
|
34
|
+
"width": 300,
|
|
41
35
|
},
|
|
42
|
-
Object {},
|
|
43
36
|
Object {},
|
|
44
37
|
]
|
|
45
38
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
39
|
+
>
|
|
40
|
+
<View
|
|
41
|
+
style={
|
|
42
|
+
Array [
|
|
43
|
+
Object {
|
|
44
|
+
"alignSelf": "center",
|
|
45
|
+
"position": "relative",
|
|
46
|
+
"zIndex": 200,
|
|
47
|
+
},
|
|
48
|
+
Object {
|
|
49
|
+
"aspectRatio": 1.7777777777777777,
|
|
50
|
+
"height": undefined,
|
|
51
|
+
"width": "100%",
|
|
52
|
+
},
|
|
53
|
+
Object {},
|
|
54
|
+
Object {},
|
|
55
|
+
]
|
|
53
56
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
57
|
+
testID="test-player-container"
|
|
58
|
+
/>
|
|
59
|
+
<View
|
|
60
|
+
configuration={
|
|
61
|
+
Object {
|
|
62
|
+
"tablet_landscape_player_container_background_color": "red",
|
|
63
|
+
"tablet_landscape_sidebar_width": "35%",
|
|
64
|
+
}
|
|
58
65
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
"flex": 1,
|
|
64
|
-
"paddingTop": 20,
|
|
66
|
+
entry={
|
|
67
|
+
Object {
|
|
68
|
+
"id": "test",
|
|
69
|
+
}
|
|
65
70
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
71
|
+
isTabletLandscape={false}
|
|
72
|
+
style={
|
|
73
|
+
Object {
|
|
74
|
+
"flex": 1,
|
|
75
|
+
"paddingTop": 20,
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/>
|
|
79
|
+
</RNCSafeAreaView>
|
|
80
|
+
</RNCSafeAreaProvider>
|
|
69
81
|
`;
|
|
70
82
|
|
|
71
83
|
exports[`PlayerWrapper renders inline and docked 1`] = `
|
|
72
|
-
<
|
|
73
|
-
|
|
74
|
-
Object {
|
|
75
|
-
"bottom": "additive",
|
|
76
|
-
"left": "off",
|
|
77
|
-
"right": "off",
|
|
78
|
-
"top": "off",
|
|
79
|
-
}
|
|
80
|
-
}
|
|
84
|
+
<RNCSafeAreaProvider
|
|
85
|
+
onInsetsChange={[Function]}
|
|
81
86
|
style={
|
|
82
87
|
Array [
|
|
83
88
|
Object {
|
|
84
|
-
"
|
|
85
|
-
},
|
|
86
|
-
Object {
|
|
87
|
-
"backgroundColor": "transparent",
|
|
88
|
-
},
|
|
89
|
-
Object {
|
|
90
|
-
"height": 50,
|
|
91
|
-
"width": 300,
|
|
89
|
+
"flex": 1,
|
|
92
90
|
},
|
|
93
|
-
|
|
91
|
+
undefined,
|
|
94
92
|
]
|
|
95
93
|
}
|
|
96
94
|
>
|
|
97
|
-
<
|
|
95
|
+
<RNCSafeAreaView
|
|
96
|
+
edges={
|
|
97
|
+
Object {
|
|
98
|
+
"bottom": "additive",
|
|
99
|
+
"left": "off",
|
|
100
|
+
"right": "off",
|
|
101
|
+
"top": "off",
|
|
102
|
+
}
|
|
103
|
+
}
|
|
98
104
|
style={
|
|
99
105
|
Array [
|
|
100
106
|
Object {
|
|
101
|
-
"
|
|
102
|
-
|
|
103
|
-
|
|
107
|
+
"flexDirection": "column",
|
|
108
|
+
},
|
|
109
|
+
Object {
|
|
110
|
+
"backgroundColor": "transparent",
|
|
104
111
|
},
|
|
105
112
|
Object {
|
|
106
|
-
"aspectRatio": undefined,
|
|
107
113
|
"height": 50,
|
|
108
|
-
"width":
|
|
114
|
+
"width": 300,
|
|
109
115
|
},
|
|
110
116
|
Object {},
|
|
111
|
-
Object {},
|
|
112
117
|
]
|
|
113
118
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
>
|
|
120
|
+
<View
|
|
121
|
+
style={
|
|
122
|
+
Array [
|
|
123
|
+
Object {
|
|
124
|
+
"alignSelf": "center",
|
|
125
|
+
"position": "relative",
|
|
126
|
+
"zIndex": 200,
|
|
127
|
+
},
|
|
128
|
+
Object {
|
|
129
|
+
"aspectRatio": undefined,
|
|
130
|
+
"height": 50,
|
|
131
|
+
"width": "100%",
|
|
132
|
+
},
|
|
133
|
+
Object {},
|
|
134
|
+
Object {},
|
|
135
|
+
]
|
|
121
136
|
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
137
|
+
testID="test-player-container"
|
|
138
|
+
/>
|
|
139
|
+
<View
|
|
140
|
+
style={
|
|
141
|
+
Object {
|
|
142
|
+
"flex": 1,
|
|
143
|
+
"paddingTop": 20,
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/>
|
|
147
|
+
</RNCSafeAreaView>
|
|
148
|
+
</RNCSafeAreaProvider>
|
|
125
149
|
`;
|
|
126
150
|
|
|
127
151
|
exports[`PlayerWrapper renders inline on tablet in landscape orientation 1`] = `
|
|
128
|
-
<
|
|
129
|
-
|
|
130
|
-
Object {
|
|
131
|
-
"bottom": "off",
|
|
132
|
-
"left": "off",
|
|
133
|
-
"right": "off",
|
|
134
|
-
"top": "additive",
|
|
135
|
-
}
|
|
136
|
-
}
|
|
152
|
+
<RNCSafeAreaProvider
|
|
153
|
+
onInsetsChange={[Function]}
|
|
137
154
|
style={
|
|
138
155
|
Array [
|
|
139
156
|
Object {
|
|
140
|
-
"
|
|
141
|
-
},
|
|
142
|
-
Object {
|
|
143
|
-
"backgroundColor": "red",
|
|
144
|
-
},
|
|
145
|
-
Object {
|
|
146
|
-
"height": 800,
|
|
147
|
-
"width": 300,
|
|
157
|
+
"flex": 1,
|
|
148
158
|
},
|
|
149
|
-
|
|
159
|
+
undefined,
|
|
150
160
|
]
|
|
151
161
|
}
|
|
152
162
|
>
|
|
153
|
-
<
|
|
163
|
+
<RNCSafeAreaView
|
|
164
|
+
edges={
|
|
165
|
+
Object {
|
|
166
|
+
"bottom": "off",
|
|
167
|
+
"left": "off",
|
|
168
|
+
"right": "off",
|
|
169
|
+
"top": "additive",
|
|
170
|
+
}
|
|
171
|
+
}
|
|
154
172
|
style={
|
|
155
173
|
Array [
|
|
156
174
|
Object {
|
|
157
|
-
"
|
|
158
|
-
"position": "relative",
|
|
159
|
-
"zIndex": 200,
|
|
175
|
+
"flexDirection": "row",
|
|
160
176
|
},
|
|
161
177
|
Object {
|
|
162
|
-
"
|
|
163
|
-
|
|
164
|
-
|
|
178
|
+
"backgroundColor": "red",
|
|
179
|
+
},
|
|
180
|
+
Object {
|
|
181
|
+
"height": 800,
|
|
182
|
+
"width": 300,
|
|
165
183
|
},
|
|
166
|
-
Object {},
|
|
167
184
|
Object {},
|
|
168
185
|
]
|
|
169
186
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
187
|
+
>
|
|
188
|
+
<View
|
|
189
|
+
style={
|
|
190
|
+
Array [
|
|
191
|
+
Object {
|
|
192
|
+
"alignSelf": "center",
|
|
193
|
+
"position": "relative",
|
|
194
|
+
"zIndex": 200,
|
|
195
|
+
},
|
|
196
|
+
Object {
|
|
197
|
+
"aspectRatio": 1.7777777777777777,
|
|
198
|
+
"height": undefined,
|
|
199
|
+
"width": 195,
|
|
200
|
+
},
|
|
201
|
+
Object {},
|
|
202
|
+
Object {},
|
|
203
|
+
]
|
|
177
204
|
}
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
205
|
+
testID="test-player-container"
|
|
206
|
+
/>
|
|
207
|
+
<View
|
|
208
|
+
configuration={
|
|
209
|
+
Object {
|
|
210
|
+
"tablet_landscape_player_container_background_color": "red",
|
|
211
|
+
"tablet_landscape_sidebar_width": "35%",
|
|
212
|
+
}
|
|
182
213
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
"flex": 1,
|
|
188
|
-
"paddingTop": 20,
|
|
214
|
+
entry={
|
|
215
|
+
Object {
|
|
216
|
+
"id": "test",
|
|
217
|
+
}
|
|
189
218
|
}
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
219
|
+
isTabletLandscape={true}
|
|
220
|
+
style={
|
|
221
|
+
Object {
|
|
222
|
+
"flex": 1,
|
|
223
|
+
"paddingTop": 20,
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
/>
|
|
227
|
+
</RNCSafeAreaView>
|
|
228
|
+
</RNCSafeAreaProvider>
|
|
193
229
|
`;
|
|
194
230
|
|
|
195
231
|
exports[`PlayerWrapper renders properly 1`] = `
|
|
196
|
-
<
|
|
197
|
-
|
|
198
|
-
Object {
|
|
199
|
-
"bottom": "off",
|
|
200
|
-
"left": "off",
|
|
201
|
-
"right": "off",
|
|
202
|
-
"top": "additive",
|
|
203
|
-
}
|
|
204
|
-
}
|
|
232
|
+
<RNCSafeAreaProvider
|
|
233
|
+
onInsetsChange={[Function]}
|
|
205
234
|
style={
|
|
206
235
|
Array [
|
|
207
236
|
Object {
|
|
208
|
-
"
|
|
209
|
-
},
|
|
210
|
-
Object {
|
|
211
|
-
"backgroundColor": "transparent",
|
|
212
|
-
},
|
|
213
|
-
Object {
|
|
214
|
-
"height": 800,
|
|
215
|
-
"width": 300,
|
|
237
|
+
"flex": 1,
|
|
216
238
|
},
|
|
217
|
-
|
|
239
|
+
undefined,
|
|
218
240
|
]
|
|
219
241
|
}
|
|
220
242
|
>
|
|
221
|
-
<
|
|
243
|
+
<RNCSafeAreaView
|
|
244
|
+
edges={
|
|
245
|
+
Object {
|
|
246
|
+
"bottom": "off",
|
|
247
|
+
"left": "off",
|
|
248
|
+
"right": "off",
|
|
249
|
+
"top": "additive",
|
|
250
|
+
}
|
|
251
|
+
}
|
|
222
252
|
style={
|
|
223
253
|
Array [
|
|
224
254
|
Object {
|
|
225
|
-
"
|
|
226
|
-
"position": "relative",
|
|
227
|
-
"zIndex": 200,
|
|
255
|
+
"flexDirection": "column",
|
|
228
256
|
},
|
|
229
257
|
Object {
|
|
230
|
-
"
|
|
231
|
-
|
|
232
|
-
|
|
258
|
+
"backgroundColor": "transparent",
|
|
259
|
+
},
|
|
260
|
+
Object {
|
|
261
|
+
"height": 800,
|
|
262
|
+
"width": 300,
|
|
233
263
|
},
|
|
234
|
-
Object {},
|
|
235
264
|
Object {},
|
|
236
265
|
]
|
|
237
266
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
267
|
+
>
|
|
268
|
+
<View
|
|
269
|
+
style={
|
|
270
|
+
Array [
|
|
271
|
+
Object {
|
|
272
|
+
"alignSelf": "center",
|
|
273
|
+
"position": "relative",
|
|
274
|
+
"zIndex": 200,
|
|
275
|
+
},
|
|
276
|
+
Object {
|
|
277
|
+
"aspectRatio": 1.7786666666666666,
|
|
278
|
+
"height": undefined,
|
|
279
|
+
"width": "100%",
|
|
280
|
+
},
|
|
281
|
+
Object {},
|
|
282
|
+
Object {},
|
|
283
|
+
]
|
|
245
284
|
}
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
285
|
+
testID="test-player-container"
|
|
286
|
+
/>
|
|
287
|
+
<View
|
|
288
|
+
style={
|
|
289
|
+
Object {
|
|
290
|
+
"flex": 1,
|
|
291
|
+
"paddingTop": 20,
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
/>
|
|
295
|
+
</RNCSafeAreaView>
|
|
296
|
+
</RNCSafeAreaProvider>
|
|
249
297
|
`;
|
|
@@ -1,35 +1,38 @@
|
|
|
1
1
|
/* eslint-disable react/prop-types */
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
|
|
5
|
+
import { shallow } from "enzyme";
|
|
6
|
+
import { create, act } from "react-test-renderer";
|
|
7
|
+
import { shallowToJson } from "enzyme-to-json";
|
|
8
|
+
|
|
9
|
+
import { ViewportEvents } from "../../ViewportEvents";
|
|
10
|
+
|
|
11
|
+
jest.useFakeTimers();
|
|
5
12
|
|
|
13
|
+
jest.mock("react-native/Libraries/ReactNative/UIManager", () => {
|
|
6
14
|
return {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
success(100, 100, 400, 400);
|
|
11
|
-
}),
|
|
12
|
-
},
|
|
13
|
-
findNodeHandle: jest.fn(() => 1234),
|
|
14
|
-
Animated: {
|
|
15
|
-
timing: jest.fn(() => ({ start: jest.fn() })),
|
|
15
|
+
...jest.requireActual("react-native/Libraries/ReactNative/NativeUIManager"),
|
|
16
|
+
measureLayout: (handle, parent, error, success) => {
|
|
17
|
+
success(100, 100, 400, 400);
|
|
16
18
|
},
|
|
17
19
|
};
|
|
18
20
|
});
|
|
19
21
|
|
|
20
|
-
|
|
22
|
+
jest.mock("react-native/Libraries/Renderer/shims/ReactNative", () => ({
|
|
23
|
+
...jest.requireActual("react-native/Libraries/Renderer/shims/ReactNative"),
|
|
24
|
+
findNodeHandle: () => 1234,
|
|
25
|
+
}));
|
|
21
26
|
|
|
22
|
-
|
|
23
|
-
import TestRenderer from "react-test-renderer";
|
|
24
|
-
import { act } from "@testing-library/react-hooks";
|
|
25
|
-
import { shallowToJson } from "enzyme-to-json";
|
|
27
|
+
const ReactNative = require("react-native");
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
const { Animated, ScrollView } = ReactNative;
|
|
30
|
+
|
|
31
|
+
Animated.timing = jest.fn(() => ({ start: jest.fn() }));
|
|
28
32
|
|
|
29
33
|
const viewportEventsManager = new ViewportEvents(true);
|
|
30
34
|
|
|
31
|
-
const {
|
|
32
|
-
const { ViewportAware } = require("../index");
|
|
35
|
+
const { ViewportAware } = require("../");
|
|
33
36
|
const { ViewportTracker } = require("../../ViewportTracker");
|
|
34
37
|
|
|
35
38
|
const TestComponent = (props) => {
|
|
@@ -116,7 +119,7 @@ describe("<ViewportAware />", () => {
|
|
|
116
119
|
});
|
|
117
120
|
|
|
118
121
|
it("invokes the onViewportEnter function when entering the viewport", () => {
|
|
119
|
-
const wrapper =
|
|
122
|
+
const wrapper = create(
|
|
120
123
|
getWrapper(() => (
|
|
121
124
|
<TestComponent
|
|
122
125
|
preTriggerRatio={0.1}
|
|
@@ -134,6 +137,8 @@ describe("<ViewportAware />", () => {
|
|
|
134
137
|
width: 1920,
|
|
135
138
|
height: 1080,
|
|
136
139
|
});
|
|
140
|
+
|
|
141
|
+
jest.runAllTimers();
|
|
137
142
|
});
|
|
138
143
|
|
|
139
144
|
expect(wrapper.toJSON()).toMatchSnapshot();
|
|
@@ -151,7 +156,7 @@ describe("<ViewportAware />", () => {
|
|
|
151
156
|
});
|
|
152
157
|
|
|
153
158
|
it("invokes the onViewportLeave function when leaving the viewport", () => {
|
|
154
|
-
const wrapper =
|
|
159
|
+
const wrapper = create(
|
|
155
160
|
getWrapper(() => (
|
|
156
161
|
<TestComponent
|
|
157
162
|
preTriggerRatio={0.1}
|
|
@@ -5,11 +5,10 @@ import { ViewportEvents } from "../../ViewportEvents";
|
|
|
5
5
|
|
|
6
6
|
const TestComponent = () => <ScrollView />;
|
|
7
7
|
|
|
8
|
-
jest.mock("react-native", () => {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
});
|
|
8
|
+
jest.mock("react-native/Libraries/Renderer/shims/ReactNative", () => ({
|
|
9
|
+
...jest.requireActual("react-native/Libraries/Renderer/shims/ReactNative"),
|
|
10
|
+
findNodeHandle: () => 1234,
|
|
11
|
+
}));
|
|
13
12
|
|
|
14
13
|
const viewportEventsManager = new ViewportEvents(true);
|
|
15
14
|
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
|
|
11
11
|
import { Placeholder } from "./Placeholder";
|
|
12
12
|
import { useInitialLoading } from "./hooks";
|
|
13
|
-
import {
|
|
13
|
+
import { useFocusable } from "../Focusable/index.android";
|
|
14
14
|
|
|
15
15
|
type ReactComponent = React.ComponentType<any>;
|
|
16
16
|
|
|
@@ -26,13 +26,23 @@ type ZappUIComponentType = {
|
|
|
26
26
|
options?: Options;
|
|
27
27
|
};
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
type RenderComponentProps = any;
|
|
30
|
+
|
|
31
|
+
const RenderComponent = (
|
|
32
|
+
Component: ReactComponent | undefined,
|
|
33
|
+
args: RenderComponentProps
|
|
34
|
+
) => {
|
|
35
|
+
const { component, parent } = args;
|
|
32
36
|
|
|
37
|
+
const contextValue = React.useMemo(
|
|
38
|
+
() => ({ ...component, parent }),
|
|
39
|
+
[component, parent]
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
if (Component) {
|
|
33
43
|
return (
|
|
34
|
-
<UIComponentContext.Provider value={
|
|
35
|
-
<Component {...
|
|
44
|
+
<UIComponentContext.Provider value={contextValue}>
|
|
45
|
+
<Component {...args} />
|
|
36
46
|
</UIComponentContext.Provider>
|
|
37
47
|
);
|
|
38
48
|
}
|
|
@@ -117,7 +127,7 @@ New signature: {Component, ErrorComponent, LoadingComponent, options}`
|
|
|
117
127
|
props;
|
|
118
128
|
|
|
119
129
|
const parent = useUIComponentContext();
|
|
120
|
-
const { setIsFocusable } =
|
|
130
|
+
const { setIsFocusable } = useFocusable();
|
|
121
131
|
|
|
122
132
|
const isLoading = toBooleanWithDefaultFalse(zappPipesData?.loading);
|
|
123
133
|
const isInitialLoading = useInitialLoading(isLoading);
|
|
@@ -154,11 +164,11 @@ New signature: {Component, ErrorComponent, LoadingComponent, options}`
|
|
|
154
164
|
}, [props.component?.rules?.component_cells_focusable]);
|
|
155
165
|
|
|
156
166
|
if (isDataSourceEmpty(props) && allowsEmptyDataSource) {
|
|
157
|
-
return
|
|
167
|
+
return RenderComponent(Component, componentProps);
|
|
158
168
|
}
|
|
159
169
|
|
|
160
|
-
if (isLoading && !zappPipesData
|
|
161
|
-
return
|
|
170
|
+
if (isLoading && !zappPipesData?.data && isInitialLoading) {
|
|
171
|
+
return RenderComponent(LoadingComponent || Placeholder, componentProps);
|
|
162
172
|
}
|
|
163
173
|
|
|
164
174
|
if (zappPipesData?.error) {
|
|
@@ -167,9 +177,9 @@ New signature: {Component, ErrorComponent, LoadingComponent, options}`
|
|
|
167
177
|
index: componentIndex,
|
|
168
178
|
});
|
|
169
179
|
|
|
170
|
-
return
|
|
180
|
+
return RenderComponent(ErrorComponent, componentProps);
|
|
171
181
|
}
|
|
172
182
|
|
|
173
|
-
return
|
|
183
|
+
return RenderComponent(Component, componentProps);
|
|
174
184
|
};
|
|
175
185
|
}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import React, { createContext, ReactNode, useMemo, useState } from "react";
|
|
2
|
-
import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
|
|
3
2
|
import {
|
|
4
3
|
useCurrentScreenData,
|
|
5
4
|
useNavigation,
|
|
6
5
|
useRoute,
|
|
6
|
+
isNavBarVisible,
|
|
7
7
|
} from "@applicaster/zapp-react-native-utils/reactHooks";
|
|
8
8
|
import { useModalNavigationContext } from "@applicaster/zapp-react-native-ui-components/Contexts/ModalNavigationContext";
|
|
9
9
|
import { useNestedNavigationContext } from "@applicaster/zapp-react-native-ui-components/Contexts/NestedNavigationContext";
|
|
10
|
-
import { isNavBarVisible } from "../../Components/Screen/navigationHandler";
|
|
11
10
|
|
|
12
11
|
type ScreenContextType = {
|
|
13
12
|
navBar: {
|
|
@@ -42,8 +41,6 @@ export function ScreenContextProvider({
|
|
|
42
41
|
}) {
|
|
43
42
|
const { data, modalData, videoModalState, canGoBack } = useNavigation();
|
|
44
43
|
|
|
45
|
-
const { rivers: _rivers } = usePickFromState(["rivers", "plugins"]);
|
|
46
|
-
|
|
47
44
|
// There are 4 route scenarios
|
|
48
45
|
// For regular screens take date from navigator stack.
|
|
49
46
|
// is path is model grab screenData from modal state
|
|
@@ -12,11 +12,16 @@ export function withComponentsMapProvider(Component: React.ComponentType<any>) {
|
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
const setComponentHeightById = (id: string | number, height: number) => {
|
|
15
|
-
componentsHeightMapRef.current = {
|
|
15
|
+
componentsHeightMapRef.current = {
|
|
16
|
+
...componentsHeightMapRef.current,
|
|
17
|
+
[id]: height,
|
|
18
|
+
};
|
|
16
19
|
};
|
|
17
20
|
|
|
18
21
|
return (
|
|
19
|
-
<ComponentsMapProvider
|
|
22
|
+
<ComponentsMapProvider
|
|
23
|
+
{...{ setComponentHeightById, getComponentHeightById }}
|
|
24
|
+
>
|
|
20
25
|
<Component {...props} />
|
|
21
26
|
</ComponentsMapProvider>
|
|
22
27
|
);
|