191d99453SEvan Baconimport { BottomTabNavigationProp } from '@react-navigation/bottom-tabs';
291d99453SEvan Baconimport { createStackNavigator } from '@react-navigation/stack';
391d99453SEvan Baconimport * as React from 'react';
491d99453SEvan Bacon
5*8a424bebSJames Ideimport getStackConfig from './StackConfig';
6*8a424bebSJames Ideimport { optionalRequire } from './routeBuilder';
791d99453SEvan Baconimport TabIcon from '../components/TabIcon';
891d99453SEvan Baconimport { Layout } from '../constants';
991d99453SEvan Baconimport ExpoComponents from '../screens/ExpoComponentsScreen';
10f0b19ea9STomasz Sapetaimport { ImageScreens } from '../screens/Image/ImageScreen';
1191d99453SEvan Bacon
1291d99453SEvan Baconconst Stack = createStackNavigator();
1391d99453SEvan Bacon
14dc2b55f3SEvan Baconexport const Screens = [
15dc2b55f3SEvan Bacon  {
16dc2b55f3SEvan Bacon    getComponent() {
1774967a3cSCharlie Cruzan      return optionalRequire(() => require('../screens/DrawerLayoutAndroidScreen'));
1874967a3cSCharlie Cruzan    },
1974967a3cSCharlie Cruzan    name: 'DrawerLayoutAndroid',
2074967a3cSCharlie Cruzan  },
2174967a3cSCharlie Cruzan  {
2274967a3cSCharlie Cruzan    getComponent() {
23dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/BarCodeScannerScreen'));
24dc2b55f3SEvan Bacon    },
25dc2b55f3SEvan Bacon    name: 'BarCodeScanner',
26dc2b55f3SEvan Bacon  },
27dc2b55f3SEvan Bacon  {
28dc2b55f3SEvan Bacon    getComponent() {
29dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/ModalScreen'));
30dc2b55f3SEvan Bacon    },
31dc2b55f3SEvan Bacon    name: 'Modal',
32dc2b55f3SEvan Bacon  },
33dc2b55f3SEvan Bacon  {
34dc2b55f3SEvan Bacon    getComponent() {
35dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/ScrollViewScreen'));
36dc2b55f3SEvan Bacon    },
37dc2b55f3SEvan Bacon    name: 'ScrollView',
38dc2b55f3SEvan Bacon  },
39dc2b55f3SEvan Bacon  {
40dc2b55f3SEvan Bacon    getComponent() {
41dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/MaskedViewScreen'));
42dc2b55f3SEvan Bacon    },
43dc2b55f3SEvan Bacon    name: 'MaskedView',
44dc2b55f3SEvan Bacon    options: { title: 'Basic Mask Example' },
45dc2b55f3SEvan Bacon  },
46dc2b55f3SEvan Bacon  {
47dc2b55f3SEvan Bacon    getComponent() {
48b4aa028bSBartłomiej Bukowski      return optionalRequire(() => require('../screens/BlurView/BlurViewScreen'));
49dc2b55f3SEvan Bacon    },
50dc2b55f3SEvan Bacon    name: 'BlurView',
51dc2b55f3SEvan Bacon  },
52dc2b55f3SEvan Bacon  {
53dc2b55f3SEvan Bacon    getComponent() {
54dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/Camera/CameraScreen'));
55dc2b55f3SEvan Bacon    },
56dc2b55f3SEvan Bacon    name: 'Camera',
57dc2b55f3SEvan Bacon  },
58dc2b55f3SEvan Bacon  {
59dc2b55f3SEvan Bacon    getComponent() {
60dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/TextScreen'));
61dc2b55f3SEvan Bacon    },
62dc2b55f3SEvan Bacon    name: 'Text',
63dc2b55f3SEvan Bacon  },
64dc2b55f3SEvan Bacon  {
65dc2b55f3SEvan Bacon    getComponent() {
66dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/TextInputScreen'));
67dc2b55f3SEvan Bacon    },
68dc2b55f3SEvan Bacon    name: 'TextInput',
69dc2b55f3SEvan Bacon  },
70dc2b55f3SEvan Bacon  {
71dc2b55f3SEvan Bacon    getComponent() {
72dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/TouchablesScreen'));
73dc2b55f3SEvan Bacon    },
74dc2b55f3SEvan Bacon    name: 'Touchables',
75dc2b55f3SEvan Bacon  },
76dc2b55f3SEvan Bacon  {
77dc2b55f3SEvan Bacon    getComponent() {
78dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/TouchableBounceScreen'));
79dc2b55f3SEvan Bacon    },
80dc2b55f3SEvan Bacon    name: 'TouchableBounce',
81dc2b55f3SEvan Bacon  },
82dc2b55f3SEvan Bacon  {
83dc2b55f3SEvan Bacon    getComponent() {
84dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/SwitchScreen'));
85dc2b55f3SEvan Bacon    },
86dc2b55f3SEvan Bacon    name: 'Switch',
87dc2b55f3SEvan Bacon  },
88dc2b55f3SEvan Bacon  {
89dc2b55f3SEvan Bacon    getComponent() {
90dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/SliderScreen'));
91dc2b55f3SEvan Bacon    },
92dc2b55f3SEvan Bacon    name: 'Slider',
93dc2b55f3SEvan Bacon  },
94dc2b55f3SEvan Bacon  {
95dc2b55f3SEvan Bacon    getComponent() {
96dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/PressableScreen'));
97dc2b55f3SEvan Bacon    },
98dc2b55f3SEvan Bacon    name: 'Pressable',
99dc2b55f3SEvan Bacon  },
100dc2b55f3SEvan Bacon  {
101dc2b55f3SEvan Bacon    getComponent() {
102dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/PickerScreen'));
103dc2b55f3SEvan Bacon    },
104dc2b55f3SEvan Bacon    name: 'Picker',
105dc2b55f3SEvan Bacon  },
106dc2b55f3SEvan Bacon  {
107dc2b55f3SEvan Bacon    getComponent() {
108dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/CheckboxScreen'));
109dc2b55f3SEvan Bacon    },
110dc2b55f3SEvan Bacon    name: 'Checkbox',
111dc2b55f3SEvan Bacon  },
112dc2b55f3SEvan Bacon  {
113dc2b55f3SEvan Bacon    getComponent() {
114dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/ButtonScreen'));
115dc2b55f3SEvan Bacon    },
116dc2b55f3SEvan Bacon    name: 'Button',
117dc2b55f3SEvan Bacon  },
118dc2b55f3SEvan Bacon  {
119dc2b55f3SEvan Bacon    getComponent() {
120dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/ActivityIndicatorScreen'));
121dc2b55f3SEvan Bacon    },
122dc2b55f3SEvan Bacon    name: 'ActivityIndicator',
123dc2b55f3SEvan Bacon  },
124dc2b55f3SEvan Bacon  {
125dc2b55f3SEvan Bacon    getComponent() {
126dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/QRCodeScreen'));
127dc2b55f3SEvan Bacon    },
128dc2b55f3SEvan Bacon    name: 'QRCode',
129dc2b55f3SEvan Bacon    options: { title: 'QR Code' },
130dc2b55f3SEvan Bacon  },
131dc2b55f3SEvan Bacon  {
132dc2b55f3SEvan Bacon    getComponent() {
133dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/DateTimePickerScreen'));
134dc2b55f3SEvan Bacon    },
135dc2b55f3SEvan Bacon    name: 'DateTimePicker',
136dc2b55f3SEvan Bacon  },
137dc2b55f3SEvan Bacon  {
138dc2b55f3SEvan Bacon    getComponent() {
139dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLScreen'));
140dc2b55f3SEvan Bacon    },
141dc2b55f3SEvan Bacon    name: 'GL',
142dc2b55f3SEvan Bacon    options: { title: 'Examples of GL use' },
143dc2b55f3SEvan Bacon  },
144dc2b55f3SEvan Bacon  {
145dc2b55f3SEvan Bacon    getComponent() {
146dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/ClearToBlueScreen'));
147dc2b55f3SEvan Bacon    },
148dc2b55f3SEvan Bacon    name: 'ClearToBlue',
149dc2b55f3SEvan Bacon    options: { title: 'Clear to blue' },
150dc2b55f3SEvan Bacon    route: 'gl/cleartoblue',
151dc2b55f3SEvan Bacon  },
152dc2b55f3SEvan Bacon  {
153dc2b55f3SEvan Bacon    getComponent() {
154dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/BasicTextureScreen'));
155dc2b55f3SEvan Bacon    },
156dc2b55f3SEvan Bacon    name: 'BasicTexture',
157dc2b55f3SEvan Bacon    options: { title: 'Basic texture use' },
158dc2b55f3SEvan Bacon    route: 'gl/basictexture',
159dc2b55f3SEvan Bacon  },
160dc2b55f3SEvan Bacon  {
161dc2b55f3SEvan Bacon    getComponent() {
162dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLViewScreen'));
163dc2b55f3SEvan Bacon    },
164dc2b55f3SEvan Bacon    name: 'GLViewScreen',
165dc2b55f3SEvan Bacon    options: { title: 'GLView example' },
166dc2b55f3SEvan Bacon    route: 'gl/glviewscreen',
167dc2b55f3SEvan Bacon  },
168dc2b55f3SEvan Bacon  {
169dc2b55f3SEvan Bacon    getComponent() {
170dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLMaskScreen'));
171dc2b55f3SEvan Bacon    },
172dc2b55f3SEvan Bacon    name: 'Mask',
173dc2b55f3SEvan Bacon    options: { title: 'MaskedView integration' },
174dc2b55f3SEvan Bacon    route: 'gl/mask',
175dc2b55f3SEvan Bacon  },
176dc2b55f3SEvan Bacon  {
177dc2b55f3SEvan Bacon    getComponent() {
178dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLSnapshotsScreen'));
179dc2b55f3SEvan Bacon    },
180dc2b55f3SEvan Bacon    name: 'Snapshots',
181dc2b55f3SEvan Bacon    options: { title: 'Taking snapshots' },
182dc2b55f3SEvan Bacon    route: 'gl/snapshots',
183dc2b55f3SEvan Bacon  },
184dc2b55f3SEvan Bacon  {
185dc2b55f3SEvan Bacon    getComponent() {
186dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLThreeComposerScreen'));
187dc2b55f3SEvan Bacon    },
188dc2b55f3SEvan Bacon    name: 'THREEComposer',
189dc2b55f3SEvan Bacon    options: { title: 'three.js glitch and film effects' },
190dc2b55f3SEvan Bacon    route: 'gl/threecomposer',
191dc2b55f3SEvan Bacon  },
192dc2b55f3SEvan Bacon  {
193dc2b55f3SEvan Bacon    getComponent() {
194dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLThreeDepthStencilBufferScreen'));
195dc2b55f3SEvan Bacon    },
196dc2b55f3SEvan Bacon    name: 'THREEDepthStencilBuffer',
197dc2b55f3SEvan Bacon    options: { title: 'three.js depth and stencil buffer' },
198dc2b55f3SEvan Bacon    route: 'gl/threedepthstencilbuffer',
199dc2b55f3SEvan Bacon  },
200dc2b55f3SEvan Bacon  {
201dc2b55f3SEvan Bacon    getComponent() {
202dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLThreeSpriteScreen'));
203dc2b55f3SEvan Bacon    },
204dc2b55f3SEvan Bacon    name: 'THREESprite',
205dc2b55f3SEvan Bacon    options: { title: 'three.js sprite rendering' },
206dc2b55f3SEvan Bacon    route: 'gl/threesprite',
207dc2b55f3SEvan Bacon  },
208dc2b55f3SEvan Bacon  {
209dc2b55f3SEvan Bacon    getComponent() {
210dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/ProcessingInAndOutScreen'));
211dc2b55f3SEvan Bacon    },
212dc2b55f3SEvan Bacon    name: 'ProcessingInAndOut',
213dc2b55f3SEvan Bacon    options: { title: "'In and out' from openprocessing.org" },
214dc2b55f3SEvan Bacon    route: 'gl/processinginandout',
215dc2b55f3SEvan Bacon  },
216dc2b55f3SEvan Bacon  {
217dc2b55f3SEvan Bacon    getComponent() {
218dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/ProcessingNoClearScreen'));
219dc2b55f3SEvan Bacon    },
220dc2b55f3SEvan Bacon    name: 'ProcessingNoClear',
221dc2b55f3SEvan Bacon    options: { title: 'Draw without clearing screen with processing.js' },
222dc2b55f3SEvan Bacon    route: 'gl/processingnoclear',
223dc2b55f3SEvan Bacon  },
224dc2b55f3SEvan Bacon  {
225dc2b55f3SEvan Bacon    getComponent() {
226dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/PIXIBasicScreen'));
227dc2b55f3SEvan Bacon    },
228dc2b55f3SEvan Bacon    name: 'PIXIBasic',
229dc2b55f3SEvan Bacon    options: { title: 'Basic pixi.js use' },
230dc2b55f3SEvan Bacon    route: 'gl/pixibasic',
231dc2b55f3SEvan Bacon  },
232dc2b55f3SEvan Bacon  {
233dc2b55f3SEvan Bacon    getComponent() {
234dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/PIXISpriteScreen'));
235dc2b55f3SEvan Bacon    },
236dc2b55f3SEvan Bacon    name: 'PIXISprite',
237dc2b55f3SEvan Bacon    options: { title: 'pixi.js sprite rendering' },
238dc2b55f3SEvan Bacon    route: 'gl/pixisprite',
239dc2b55f3SEvan Bacon  },
240dc2b55f3SEvan Bacon  {
241dc2b55f3SEvan Bacon    getComponent() {
242dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLCameraScreen'));
243dc2b55f3SEvan Bacon    },
244dc2b55f3SEvan Bacon    name: 'GLCamera',
245dc2b55f3SEvan Bacon    options: { title: 'Expo.Camera integration' },
246dc2b55f3SEvan Bacon    route: 'gl/glcamera',
247dc2b55f3SEvan Bacon  },
248dc2b55f3SEvan Bacon  {
249dc2b55f3SEvan Bacon    getComponent() {
250dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/WebGL2TransformFeedbackScreen'));
251dc2b55f3SEvan Bacon    },
252dc2b55f3SEvan Bacon    name: 'WebGL2TransformFeedback',
253dc2b55f3SEvan Bacon    options: { title: 'WebGL2 - Transform feedback' },
254dc2b55f3SEvan Bacon    route: 'gl/webgl2transformfeedback',
255dc2b55f3SEvan Bacon  },
256dc2b55f3SEvan Bacon  {
257dc2b55f3SEvan Bacon    getComponent() {
258dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/CanvasScreen'));
259dc2b55f3SEvan Bacon    },
260dc2b55f3SEvan Bacon    name: 'Canvas',
261dc2b55f3SEvan Bacon    options: { title: 'Canvas example - expo-2d-context' },
262dc2b55f3SEvan Bacon    route: 'gl/canvas',
263dc2b55f3SEvan Bacon  },
264dc2b55f3SEvan Bacon  {
265dc2b55f3SEvan Bacon    getComponent() {
266dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GL/GLHeadlessRenderingScreen'));
267dc2b55f3SEvan Bacon    },
268dc2b55f3SEvan Bacon    name: 'HeadlessRendering',
269dc2b55f3SEvan Bacon    options: { title: 'Headless rendering' },
270dc2b55f3SEvan Bacon    route: 'gl/headlessrendering',
271dc2b55f3SEvan Bacon  },
272dc2b55f3SEvan Bacon  {
273dc2b55f3SEvan Bacon    getComponent() {
27479e2cd13SWojciech Kozyra      return optionalRequire(() => require('../screens/GL/GLReanimatedExample'));
27579e2cd13SWojciech Kozyra    },
27679e2cd13SWojciech Kozyra    name: 'ReanimatedWorklets',
27779e2cd13SWojciech Kozyra    options: { title: 'Reanimated worklets + gesture handler' },
27879e2cd13SWojciech Kozyra    route: 'gl/reanimated',
27979e2cd13SWojciech Kozyra  },
28079e2cd13SWojciech Kozyra  {
28179e2cd13SWojciech Kozyra    getComponent() {
28258fb4e57SWojciech Kozyra      return optionalRequire(() => require('../screens/GL/GLViewOnBusyThread'));
28358fb4e57SWojciech Kozyra    },
28458fb4e57SWojciech Kozyra    name: 'GLViewOnBusyThread',
28558fb4e57SWojciech Kozyra    options: { title: 'Creating GLView when a thread is busy' },
28658fb4e57SWojciech Kozyra    route: 'gl/busythread',
28758fb4e57SWojciech Kozyra  },
28858fb4e57SWojciech Kozyra  {
28958fb4e57SWojciech Kozyra    getComponent() {
290dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GestureHandlerPinchScreen'));
291dc2b55f3SEvan Bacon    },
292dc2b55f3SEvan Bacon    name: 'GestureHandlerPinch',
293dc2b55f3SEvan Bacon    options: { title: 'Pinch and Rotate' },
294dc2b55f3SEvan Bacon  },
295dc2b55f3SEvan Bacon  {
296dc2b55f3SEvan Bacon    getComponent() {
297dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GestureHandlerListScreen'));
298dc2b55f3SEvan Bacon    },
299dc2b55f3SEvan Bacon    name: 'GestureHandlerList',
300dc2b55f3SEvan Bacon    options: { title: 'Gesture Handler List' },
301dc2b55f3SEvan Bacon  },
302dc2b55f3SEvan Bacon  {
303dc2b55f3SEvan Bacon    getComponent() {
304dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GestureHandlerSwipeableScreen'));
305dc2b55f3SEvan Bacon    },
306dc2b55f3SEvan Bacon    name: 'GestureHandlerSwipeable',
307dc2b55f3SEvan Bacon    options: { title: 'Swipeable Rows' },
308dc2b55f3SEvan Bacon  },
309dc2b55f3SEvan Bacon  {
310dc2b55f3SEvan Bacon    getComponent() {
311dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/HTMLElementsScreen'));
312dc2b55f3SEvan Bacon    },
313dc2b55f3SEvan Bacon    name: 'HTML',
314dc2b55f3SEvan Bacon  },
315dc2b55f3SEvan Bacon  {
316dc2b55f3SEvan Bacon    getComponent() {
317dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/Image/ImageScreen'));
318dc2b55f3SEvan Bacon    },
319dc2b55f3SEvan Bacon    name: 'Image',
320dc2b55f3SEvan Bacon  },
321dc2b55f3SEvan Bacon  {
322dc2b55f3SEvan Bacon    getComponent() {
323dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/Reanimated/ReanimatedScreen'));
324dc2b55f3SEvan Bacon    },
325dc2b55f3SEvan Bacon    name: 'Reanimated',
326dc2b55f3SEvan Bacon  },
327dc2b55f3SEvan Bacon  {
328dc2b55f3SEvan Bacon    getComponent() {
329dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/GifScreen'));
330dc2b55f3SEvan Bacon    },
331dc2b55f3SEvan Bacon    name: 'Gif',
332dc2b55f3SEvan Bacon  },
333dc2b55f3SEvan Bacon  {
334dc2b55f3SEvan Bacon    getComponent() {
335dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/SegmentedControlScreen'));
336dc2b55f3SEvan Bacon    },
337dc2b55f3SEvan Bacon    name: 'SegmentedControl',
338dc2b55f3SEvan Bacon  },
339dc2b55f3SEvan Bacon  {
340dc2b55f3SEvan Bacon    getComponent() {
341a1a2c328SKudo Chien      return optionalRequire(() => require('../screens/Skia/SkiaScreen'));
342a1a2c328SKudo Chien    },
343a1a2c328SKudo Chien    name: 'Skia',
344a1a2c328SKudo Chien  },
345a1a2c328SKudo Chien  {
346a1a2c328SKudo Chien    getComponent() {
347dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/SVG/SVGScreen'));
348dc2b55f3SEvan Bacon    },
349dc2b55f3SEvan Bacon    name: 'SVG',
350dc2b55f3SEvan Bacon  },
351dc2b55f3SEvan Bacon  {
352dc2b55f3SEvan Bacon    getComponent() {
353dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/SVG/SVGExampleScreen'));
354dc2b55f3SEvan Bacon    },
355dc2b55f3SEvan Bacon    name: 'SVGExample',
356dc2b55f3SEvan Bacon  },
357dc2b55f3SEvan Bacon  {
358dc2b55f3SEvan Bacon    getComponent() {
359dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/LinearGradientScreen'));
360dc2b55f3SEvan Bacon    },
361dc2b55f3SEvan Bacon    name: 'LinearGradient',
362dc2b55f3SEvan Bacon  },
363dc2b55f3SEvan Bacon  {
364dc2b55f3SEvan Bacon    getComponent() {
365dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/LottieScreen'));
366dc2b55f3SEvan Bacon    },
367dc2b55f3SEvan Bacon    name: 'Lottie',
368dc2b55f3SEvan Bacon  },
369dc2b55f3SEvan Bacon  {
370dc2b55f3SEvan Bacon    getComponent() {
371dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/MapsScreen'));
372dc2b55f3SEvan Bacon    },
373dc2b55f3SEvan Bacon    name: 'Maps',
374dc2b55f3SEvan Bacon  },
375dc2b55f3SEvan Bacon  {
376dc2b55f3SEvan Bacon    getComponent() {
377ee0de234SŁukasz Kosmaty      return optionalRequire(() => require('../screens/ExpoMaps/ExpoMapsScreen'));
378ee0de234SŁukasz Kosmaty    },
379ee0de234SŁukasz Kosmaty    name: 'ExpoMaps',
380ee0de234SŁukasz Kosmaty  },
381ee0de234SŁukasz Kosmaty  {
382ee0de234SŁukasz Kosmaty    getComponent() {
383dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/AV/VideoScreen'));
384dc2b55f3SEvan Bacon    },
385dc2b55f3SEvan Bacon    name: 'Video',
386dc2b55f3SEvan Bacon  },
387dc2b55f3SEvan Bacon  {
388dc2b55f3SEvan Bacon    getComponent() {
389dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/Screens'));
390dc2b55f3SEvan Bacon    },
391dc2b55f3SEvan Bacon    name: 'Screens',
392dc2b55f3SEvan Bacon  },
393dc2b55f3SEvan Bacon  {
394dc2b55f3SEvan Bacon    getComponent() {
395dc2b55f3SEvan Bacon      return optionalRequire(() => require('../screens/WebViewScreen'));
396dc2b55f3SEvan Bacon    },
397dc2b55f3SEvan Bacon    name: 'WebView',
398dc2b55f3SEvan Bacon  },
399dc2b55f3SEvan Bacon  {
400dc2b55f3SEvan Bacon    getComponent() {
40143babc79SCharlie Cruzan      return optionalRequire(() => require('../screens/PagerViewScreen'));
402dc2b55f3SEvan Bacon    },
40343babc79SCharlie Cruzan    name: 'PagerView',
40443babc79SCharlie Cruzan    options: { gesturesEnabled: false, title: 'PagerView Example' },
405dc2b55f3SEvan Bacon  },
406dc2b55f3SEvan Bacon  {
407dc2b55f3SEvan Bacon    getComponent() {
4085d0ad635SKudo Chien      return optionalRequire(() => require('../screens/FlashListScreen'));
4095d0ad635SKudo Chien    },
4105d0ad635SKudo Chien    name: 'FlashList',
4115d0ad635SKudo Chien  },
4129fda0a4dSAlan Hughes  {
4139fda0a4dSAlan Hughes    getComponent() {
4149fda0a4dSAlan Hughes      return optionalRequire(() => require('../screens/ClipboardPasteButtonScreen'));
4159fda0a4dSAlan Hughes    },
4169fda0a4dSAlan Hughes    name: 'ClipboardPasteButton',
4179fda0a4dSAlan Hughes  },
418f0b19ea9STomasz Sapeta  ...ImageScreens,
419dc2b55f3SEvan Bacon];
420dc2b55f3SEvan Bacon
42191d99453SEvan Baconfunction ExpoComponentsStackNavigator(props: { navigation: BottomTabNavigationProp<any> }) {
42291d99453SEvan Bacon  return (
42306642451SEvan Bacon    <Stack.Navigator {...props} {...getStackConfig(props)}>
42491d99453SEvan Bacon      <Stack.Screen
42591d99453SEvan Bacon        name="ExpoComponents"
42691d99453SEvan Bacon        options={{ title: Layout.isSmallDevice ? 'Expo SDK Components' : 'Components in Expo SDK' }}
42791d99453SEvan Bacon        component={ExpoComponents}
42891d99453SEvan Bacon      />
429dc2b55f3SEvan Bacon      {Screens.map(({ name, getComponent, options }) => (
430dc2b55f3SEvan Bacon        <Stack.Screen name={name} key={name} getComponent={getComponent} options={options ?? {}} />
43191d99453SEvan Bacon      ))}
43291d99453SEvan Bacon    </Stack.Navigator>
43391d99453SEvan Bacon  );
43491d99453SEvan Bacon}
435ea08dda8SEvan Bacon
436ea08dda8SEvan Baconconst icon = ({ focused }: { focused: boolean }) => {
437e8f3dbaeSEvan Bacon  return <TabIcon name="react" focused={focused} />;
438ea08dda8SEvan Bacon};
43991d99453SEvan BaconExpoComponentsStackNavigator.navigationOptions = {
440e8f3dbaeSEvan Bacon  title: 'Components',
44191d99453SEvan Bacon  tabBarLabel: 'Components',
442ea08dda8SEvan Bacon  tabBarIcon: icon,
443ea08dda8SEvan Bacon  drawerIcon: icon,
44491d99453SEvan Bacon};
44591d99453SEvan Baconexport default ExpoComponentsStackNavigator;
446