191d99453SEvan Baconimport { BottomTabNavigationProp } from '@react-navigation/bottom-tabs'; 291d99453SEvan Baconimport { createStackNavigator } from '@react-navigation/stack'; 391d99453SEvan Baconimport * as React from 'react'; 491d99453SEvan Bacon 591d99453SEvan Baconimport TabIcon from '../components/TabIcon'; 691d99453SEvan Baconimport { Layout } from '../constants'; 791d99453SEvan Baconimport ExpoComponents from '../screens/ExpoComponentsScreen'; 806642451SEvan Baconimport getStackConfig from './StackConfig'; 9dc2b55f3SEvan Baconimport { optionalRequire } from './routeBuilder'; 1091d99453SEvan Bacon 1191d99453SEvan Baconconst Stack = createStackNavigator(); 1291d99453SEvan Bacon 13dc2b55f3SEvan Baconexport const Screens = [ 14dc2b55f3SEvan Bacon { 15dc2b55f3SEvan Bacon getComponent() { 16*fa37026dSCharlie Cruzan return optionalRequire(() => require('../screens/AdMobScreen')); 17*fa37026dSCharlie Cruzan }, 18*fa37026dSCharlie Cruzan name: 'Admob', 19*fa37026dSCharlie Cruzan }, 20*fa37026dSCharlie Cruzan { 21*fa37026dSCharlie Cruzan getComponent() { 22dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/BarCodeScannerScreen')); 23dc2b55f3SEvan Bacon }, 24dc2b55f3SEvan Bacon name: 'BarCodeScanner', 25dc2b55f3SEvan Bacon }, 26dc2b55f3SEvan Bacon { 27dc2b55f3SEvan Bacon getComponent() { 28dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ModalScreen')); 29dc2b55f3SEvan Bacon }, 30dc2b55f3SEvan Bacon name: 'Modal', 31dc2b55f3SEvan Bacon }, 32dc2b55f3SEvan Bacon { 33dc2b55f3SEvan Bacon getComponent() { 34dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ScrollViewScreen')); 35dc2b55f3SEvan Bacon }, 36dc2b55f3SEvan Bacon name: 'ScrollView', 37dc2b55f3SEvan Bacon }, 38dc2b55f3SEvan Bacon { 39dc2b55f3SEvan Bacon getComponent() { 40dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/MaskedViewScreen')); 41dc2b55f3SEvan Bacon }, 42dc2b55f3SEvan Bacon name: 'MaskedView', 43dc2b55f3SEvan Bacon options: { title: 'Basic Mask Example' }, 44dc2b55f3SEvan Bacon }, 45dc2b55f3SEvan Bacon { 46dc2b55f3SEvan Bacon getComponent() { 47dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/BlurViewScreen')); 48dc2b55f3SEvan Bacon }, 49dc2b55f3SEvan Bacon name: 'BlurView', 50dc2b55f3SEvan Bacon }, 51dc2b55f3SEvan Bacon { 52dc2b55f3SEvan Bacon getComponent() { 53dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Camera/CameraScreen')); 54dc2b55f3SEvan Bacon }, 55dc2b55f3SEvan Bacon name: 'Camera', 56dc2b55f3SEvan Bacon }, 57dc2b55f3SEvan Bacon { 58dc2b55f3SEvan Bacon getComponent() { 59dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TextScreen')); 60dc2b55f3SEvan Bacon }, 61dc2b55f3SEvan Bacon name: 'Text', 62dc2b55f3SEvan Bacon }, 63dc2b55f3SEvan Bacon { 64dc2b55f3SEvan Bacon getComponent() { 65dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TextInputScreen')); 66dc2b55f3SEvan Bacon }, 67dc2b55f3SEvan Bacon name: 'TextInput', 68dc2b55f3SEvan Bacon }, 69dc2b55f3SEvan Bacon { 70dc2b55f3SEvan Bacon getComponent() { 71dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TouchablesScreen')); 72dc2b55f3SEvan Bacon }, 73dc2b55f3SEvan Bacon name: 'Touchables', 74dc2b55f3SEvan Bacon }, 75dc2b55f3SEvan Bacon { 76dc2b55f3SEvan Bacon getComponent() { 77dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ProgressViewIOSScreen')); 78dc2b55f3SEvan Bacon }, 79dc2b55f3SEvan Bacon name: 'ProgressViewIOS', 80dc2b55f3SEvan Bacon }, 81dc2b55f3SEvan Bacon { 82dc2b55f3SEvan Bacon getComponent() { 83dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ProgressBarAndroidScreen')); 84dc2b55f3SEvan Bacon }, 85dc2b55f3SEvan Bacon name: 'ProgressBarAndroid', 86dc2b55f3SEvan Bacon }, 87dc2b55f3SEvan Bacon { 88dc2b55f3SEvan Bacon getComponent() { 89dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TouchableBounceScreen')); 90dc2b55f3SEvan Bacon }, 91dc2b55f3SEvan Bacon name: 'TouchableBounce', 92dc2b55f3SEvan Bacon }, 93dc2b55f3SEvan Bacon { 94dc2b55f3SEvan Bacon getComponent() { 95dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SwitchScreen')); 96dc2b55f3SEvan Bacon }, 97dc2b55f3SEvan Bacon name: 'Switch', 98dc2b55f3SEvan Bacon }, 99dc2b55f3SEvan Bacon { 100dc2b55f3SEvan Bacon getComponent() { 101dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SliderScreen')); 102dc2b55f3SEvan Bacon }, 103dc2b55f3SEvan Bacon name: 'Slider', 104dc2b55f3SEvan Bacon }, 105dc2b55f3SEvan Bacon { 106dc2b55f3SEvan Bacon getComponent() { 107dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/PressableScreen')); 108dc2b55f3SEvan Bacon }, 109dc2b55f3SEvan Bacon name: 'Pressable', 110dc2b55f3SEvan Bacon }, 111dc2b55f3SEvan Bacon { 112dc2b55f3SEvan Bacon getComponent() { 113dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/PickerScreen')); 114dc2b55f3SEvan Bacon }, 115dc2b55f3SEvan Bacon name: 'Picker', 116dc2b55f3SEvan Bacon }, 117dc2b55f3SEvan Bacon { 118dc2b55f3SEvan Bacon getComponent() { 119dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/CheckboxScreen')); 120dc2b55f3SEvan Bacon }, 121dc2b55f3SEvan Bacon name: 'Checkbox', 122dc2b55f3SEvan Bacon }, 123dc2b55f3SEvan Bacon { 124dc2b55f3SEvan Bacon getComponent() { 125dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ButtonScreen')); 126dc2b55f3SEvan Bacon }, 127dc2b55f3SEvan Bacon name: 'Button', 128dc2b55f3SEvan Bacon }, 129dc2b55f3SEvan Bacon { 130dc2b55f3SEvan Bacon getComponent() { 131dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ActivityIndicatorScreen')); 132dc2b55f3SEvan Bacon }, 133dc2b55f3SEvan Bacon name: 'ActivityIndicator', 134dc2b55f3SEvan Bacon }, 135dc2b55f3SEvan Bacon { 136dc2b55f3SEvan Bacon getComponent() { 137dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/QRCodeScreen')); 138dc2b55f3SEvan Bacon }, 139dc2b55f3SEvan Bacon name: 'QRCode', 140dc2b55f3SEvan Bacon options: { title: 'QR Code' }, 141dc2b55f3SEvan Bacon }, 142dc2b55f3SEvan Bacon { 143dc2b55f3SEvan Bacon getComponent() { 144dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/DateTimePickerScreen')); 145dc2b55f3SEvan Bacon }, 146dc2b55f3SEvan Bacon name: 'DateTimePicker', 147dc2b55f3SEvan Bacon }, 148dc2b55f3SEvan Bacon { 149dc2b55f3SEvan Bacon getComponent() { 150dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLScreen')); 151dc2b55f3SEvan Bacon }, 152dc2b55f3SEvan Bacon name: 'GL', 153dc2b55f3SEvan Bacon options: { title: 'Examples of GL use' }, 154dc2b55f3SEvan Bacon }, 155dc2b55f3SEvan Bacon { 156dc2b55f3SEvan Bacon getComponent() { 157dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ClearToBlueScreen')); 158dc2b55f3SEvan Bacon }, 159dc2b55f3SEvan Bacon name: 'ClearToBlue', 160dc2b55f3SEvan Bacon options: { title: 'Clear to blue' }, 161dc2b55f3SEvan Bacon route: 'gl/cleartoblue', 162dc2b55f3SEvan Bacon }, 163dc2b55f3SEvan Bacon { 164dc2b55f3SEvan Bacon getComponent() { 165dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/BasicTextureScreen')); 166dc2b55f3SEvan Bacon }, 167dc2b55f3SEvan Bacon name: 'BasicTexture', 168dc2b55f3SEvan Bacon options: { title: 'Basic texture use' }, 169dc2b55f3SEvan Bacon route: 'gl/basictexture', 170dc2b55f3SEvan Bacon }, 171dc2b55f3SEvan Bacon { 172dc2b55f3SEvan Bacon getComponent() { 173dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLViewScreen')); 174dc2b55f3SEvan Bacon }, 175dc2b55f3SEvan Bacon name: 'GLViewScreen', 176dc2b55f3SEvan Bacon options: { title: 'GLView example' }, 177dc2b55f3SEvan Bacon route: 'gl/glviewscreen', 178dc2b55f3SEvan Bacon }, 179dc2b55f3SEvan Bacon { 180dc2b55f3SEvan Bacon getComponent() { 181dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLMaskScreen')); 182dc2b55f3SEvan Bacon }, 183dc2b55f3SEvan Bacon name: 'Mask', 184dc2b55f3SEvan Bacon options: { title: 'MaskedView integration' }, 185dc2b55f3SEvan Bacon route: 'gl/mask', 186dc2b55f3SEvan Bacon }, 187dc2b55f3SEvan Bacon { 188dc2b55f3SEvan Bacon getComponent() { 189dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLSnapshotsScreen')); 190dc2b55f3SEvan Bacon }, 191dc2b55f3SEvan Bacon name: 'Snapshots', 192dc2b55f3SEvan Bacon options: { title: 'Taking snapshots' }, 193dc2b55f3SEvan Bacon route: 'gl/snapshots', 194dc2b55f3SEvan Bacon }, 195dc2b55f3SEvan Bacon { 196dc2b55f3SEvan Bacon getComponent() { 197dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeComposerScreen')); 198dc2b55f3SEvan Bacon }, 199dc2b55f3SEvan Bacon name: 'THREEComposer', 200dc2b55f3SEvan Bacon options: { title: 'three.js glitch and film effects' }, 201dc2b55f3SEvan Bacon route: 'gl/threecomposer', 202dc2b55f3SEvan Bacon }, 203dc2b55f3SEvan Bacon { 204dc2b55f3SEvan Bacon getComponent() { 205dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeDepthStencilBufferScreen')); 206dc2b55f3SEvan Bacon }, 207dc2b55f3SEvan Bacon name: 'THREEDepthStencilBuffer', 208dc2b55f3SEvan Bacon options: { title: 'three.js depth and stencil buffer' }, 209dc2b55f3SEvan Bacon route: 'gl/threedepthstencilbuffer', 210dc2b55f3SEvan Bacon }, 211dc2b55f3SEvan Bacon { 212dc2b55f3SEvan Bacon getComponent() { 213dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeSpriteScreen')); 214dc2b55f3SEvan Bacon }, 215dc2b55f3SEvan Bacon name: 'THREESprite', 216dc2b55f3SEvan Bacon options: { title: 'three.js sprite rendering' }, 217dc2b55f3SEvan Bacon route: 'gl/threesprite', 218dc2b55f3SEvan Bacon }, 219dc2b55f3SEvan Bacon { 220dc2b55f3SEvan Bacon getComponent() { 221dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ProcessingInAndOutScreen')); 222dc2b55f3SEvan Bacon }, 223dc2b55f3SEvan Bacon name: 'ProcessingInAndOut', 224dc2b55f3SEvan Bacon options: { title: "'In and out' from openprocessing.org" }, 225dc2b55f3SEvan Bacon route: 'gl/processinginandout', 226dc2b55f3SEvan Bacon }, 227dc2b55f3SEvan Bacon { 228dc2b55f3SEvan Bacon getComponent() { 229dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ProcessingNoClearScreen')); 230dc2b55f3SEvan Bacon }, 231dc2b55f3SEvan Bacon name: 'ProcessingNoClear', 232dc2b55f3SEvan Bacon options: { title: 'Draw without clearing screen with processing.js' }, 233dc2b55f3SEvan Bacon route: 'gl/processingnoclear', 234dc2b55f3SEvan Bacon }, 235dc2b55f3SEvan Bacon { 236dc2b55f3SEvan Bacon getComponent() { 237dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/PIXIBasicScreen')); 238dc2b55f3SEvan Bacon }, 239dc2b55f3SEvan Bacon name: 'PIXIBasic', 240dc2b55f3SEvan Bacon options: { title: 'Basic pixi.js use' }, 241dc2b55f3SEvan Bacon route: 'gl/pixibasic', 242dc2b55f3SEvan Bacon }, 243dc2b55f3SEvan Bacon { 244dc2b55f3SEvan Bacon getComponent() { 245dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/PIXISpriteScreen')); 246dc2b55f3SEvan Bacon }, 247dc2b55f3SEvan Bacon name: 'PIXISprite', 248dc2b55f3SEvan Bacon options: { title: 'pixi.js sprite rendering' }, 249dc2b55f3SEvan Bacon route: 'gl/pixisprite', 250dc2b55f3SEvan Bacon }, 251dc2b55f3SEvan Bacon { 252dc2b55f3SEvan Bacon getComponent() { 253dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLCameraScreen')); 254dc2b55f3SEvan Bacon }, 255dc2b55f3SEvan Bacon name: 'GLCamera', 256dc2b55f3SEvan Bacon options: { title: 'Expo.Camera integration' }, 257dc2b55f3SEvan Bacon route: 'gl/glcamera', 258dc2b55f3SEvan Bacon }, 259dc2b55f3SEvan Bacon { 260dc2b55f3SEvan Bacon getComponent() { 261dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/WebGL2TransformFeedbackScreen')); 262dc2b55f3SEvan Bacon }, 263dc2b55f3SEvan Bacon name: 'WebGL2TransformFeedback', 264dc2b55f3SEvan Bacon options: { title: 'WebGL2 - Transform feedback' }, 265dc2b55f3SEvan Bacon route: 'gl/webgl2transformfeedback', 266dc2b55f3SEvan Bacon }, 267dc2b55f3SEvan Bacon { 268dc2b55f3SEvan Bacon getComponent() { 269dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/CanvasScreen')); 270dc2b55f3SEvan Bacon }, 271dc2b55f3SEvan Bacon name: 'Canvas', 272dc2b55f3SEvan Bacon options: { title: 'Canvas example - expo-2d-context' }, 273dc2b55f3SEvan Bacon route: 'gl/canvas', 274dc2b55f3SEvan Bacon }, 275dc2b55f3SEvan Bacon { 276dc2b55f3SEvan Bacon getComponent() { 277dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLHeadlessRenderingScreen')); 278dc2b55f3SEvan Bacon }, 279dc2b55f3SEvan Bacon name: 'HeadlessRendering', 280dc2b55f3SEvan Bacon options: { title: 'Headless rendering' }, 281dc2b55f3SEvan Bacon route: 'gl/headlessrendering', 282dc2b55f3SEvan Bacon }, 283dc2b55f3SEvan Bacon { 284dc2b55f3SEvan Bacon getComponent() { 285dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerPinchScreen')); 286dc2b55f3SEvan Bacon }, 287dc2b55f3SEvan Bacon name: 'GestureHandlerPinch', 288dc2b55f3SEvan Bacon options: { title: 'Pinch and Rotate' }, 289dc2b55f3SEvan Bacon }, 290dc2b55f3SEvan Bacon { 291dc2b55f3SEvan Bacon getComponent() { 292dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerListScreen')); 293dc2b55f3SEvan Bacon }, 294dc2b55f3SEvan Bacon name: 'GestureHandlerList', 295dc2b55f3SEvan Bacon options: { title: 'Gesture Handler List' }, 296dc2b55f3SEvan Bacon }, 297dc2b55f3SEvan Bacon { 298dc2b55f3SEvan Bacon getComponent() { 299dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerSwipeableScreen')); 300dc2b55f3SEvan Bacon }, 301dc2b55f3SEvan Bacon name: 'GestureHandlerSwipeable', 302dc2b55f3SEvan Bacon options: { title: 'Swipeable Rows' }, 303dc2b55f3SEvan Bacon }, 304dc2b55f3SEvan Bacon { 305dc2b55f3SEvan Bacon getComponent() { 306dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/HTMLElementsScreen')); 307dc2b55f3SEvan Bacon }, 308dc2b55f3SEvan Bacon name: 'HTML', 309dc2b55f3SEvan Bacon }, 310dc2b55f3SEvan Bacon { 311dc2b55f3SEvan Bacon getComponent() { 312dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Image/ImageScreen')); 313dc2b55f3SEvan Bacon }, 314dc2b55f3SEvan Bacon name: 'Image', 315dc2b55f3SEvan Bacon }, 316dc2b55f3SEvan Bacon { 317dc2b55f3SEvan Bacon getComponent() { 318dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Image/ImageTestsScreen')); 319dc2b55f3SEvan Bacon }, 320dc2b55f3SEvan Bacon name: 'ImageTests', 321dc2b55f3SEvan Bacon }, 322dc2b55f3SEvan Bacon { 323dc2b55f3SEvan Bacon getComponent() { 324dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Image/ImageTestScreen')); 325dc2b55f3SEvan Bacon }, 326dc2b55f3SEvan Bacon name: 'ImageTest', 327dc2b55f3SEvan Bacon }, 328dc2b55f3SEvan Bacon { 329dc2b55f3SEvan Bacon getComponent() { 330dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Reanimated/ReanimatedScreen')); 331dc2b55f3SEvan Bacon }, 332dc2b55f3SEvan Bacon name: 'Reanimated', 333dc2b55f3SEvan Bacon }, 334dc2b55f3SEvan Bacon { 335dc2b55f3SEvan Bacon getComponent() { 336dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GifScreen')); 337dc2b55f3SEvan Bacon }, 338dc2b55f3SEvan Bacon name: 'Gif', 339dc2b55f3SEvan Bacon }, 340dc2b55f3SEvan Bacon { 341dc2b55f3SEvan Bacon getComponent() { 342dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SegmentedControlScreen')); 343dc2b55f3SEvan Bacon }, 344dc2b55f3SEvan Bacon name: 'SegmentedControl', 345dc2b55f3SEvan Bacon }, 346dc2b55f3SEvan Bacon { 347dc2b55f3SEvan Bacon getComponent() { 348dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SVG/SVGScreen')); 349dc2b55f3SEvan Bacon }, 350dc2b55f3SEvan Bacon name: 'SVG', 351dc2b55f3SEvan Bacon }, 352dc2b55f3SEvan Bacon { 353dc2b55f3SEvan Bacon getComponent() { 354dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SVG/SVGExampleScreen')); 355dc2b55f3SEvan Bacon }, 356dc2b55f3SEvan Bacon name: 'SVGExample', 357dc2b55f3SEvan Bacon }, 358dc2b55f3SEvan Bacon { 359dc2b55f3SEvan Bacon getComponent() { 360dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/LinearGradientScreen')); 361dc2b55f3SEvan Bacon }, 362dc2b55f3SEvan Bacon name: 'LinearGradient', 363dc2b55f3SEvan Bacon }, 364dc2b55f3SEvan Bacon { 365dc2b55f3SEvan Bacon getComponent() { 366dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/LottieScreen')); 367dc2b55f3SEvan Bacon }, 368dc2b55f3SEvan Bacon name: 'Lottie', 369dc2b55f3SEvan Bacon }, 370dc2b55f3SEvan Bacon { 371dc2b55f3SEvan Bacon getComponent() { 372dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/MapsScreen')); 373dc2b55f3SEvan Bacon }, 374dc2b55f3SEvan Bacon name: 'Maps', 375dc2b55f3SEvan Bacon }, 376dc2b55f3SEvan Bacon { 377dc2b55f3SEvan Bacon getComponent() { 378dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/AV/VideoScreen')); 379dc2b55f3SEvan Bacon }, 380dc2b55f3SEvan Bacon name: 'Video', 381dc2b55f3SEvan Bacon }, 382dc2b55f3SEvan Bacon { 383dc2b55f3SEvan Bacon getComponent() { 384dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Screens')); 385dc2b55f3SEvan Bacon }, 386dc2b55f3SEvan Bacon name: 'Screens', 387dc2b55f3SEvan Bacon }, 388dc2b55f3SEvan Bacon { 389dc2b55f3SEvan Bacon getComponent() { 390dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/WebViewScreen')); 391dc2b55f3SEvan Bacon }, 392dc2b55f3SEvan Bacon name: 'WebView', 393dc2b55f3SEvan Bacon }, 394dc2b55f3SEvan Bacon { 395dc2b55f3SEvan Bacon getComponent() { 396dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ViewPagerScreen')); 397dc2b55f3SEvan Bacon }, 398dc2b55f3SEvan Bacon name: 'ViewPager', 399dc2b55f3SEvan Bacon options: { gesturesEnabled: false, title: 'ViewPager Example' }, 400dc2b55f3SEvan Bacon }, 401dc2b55f3SEvan Bacon { 402dc2b55f3SEvan Bacon getComponent() { 403dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SharedElementScreen')); 404dc2b55f3SEvan Bacon }, 405dc2b55f3SEvan Bacon name: 'SharedElement', 406dc2b55f3SEvan Bacon }, 407dc2b55f3SEvan Bacon]; 408dc2b55f3SEvan Bacon 40991d99453SEvan Baconfunction ExpoComponentsStackNavigator(props: { navigation: BottomTabNavigationProp<any> }) { 41091d99453SEvan Bacon return ( 41106642451SEvan Bacon <Stack.Navigator {...props} {...getStackConfig(props)}> 41291d99453SEvan Bacon <Stack.Screen 41391d99453SEvan Bacon name="ExpoComponents" 41491d99453SEvan Bacon options={{ title: Layout.isSmallDevice ? 'Expo SDK Components' : 'Components in Expo SDK' }} 41591d99453SEvan Bacon component={ExpoComponents} 41691d99453SEvan Bacon /> 417dc2b55f3SEvan Bacon {Screens.map(({ name, getComponent, options }) => ( 418dc2b55f3SEvan Bacon <Stack.Screen name={name} key={name} getComponent={getComponent} options={options ?? {}} /> 41991d99453SEvan Bacon ))} 42091d99453SEvan Bacon </Stack.Navigator> 42191d99453SEvan Bacon ); 42291d99453SEvan Bacon} 423ea08dda8SEvan Bacon 424ea08dda8SEvan Baconconst icon = ({ focused }: { focused: boolean }) => { 425e8f3dbaeSEvan Bacon return <TabIcon name="react" focused={focused} />; 426ea08dda8SEvan Bacon}; 42791d99453SEvan BaconExpoComponentsStackNavigator.navigationOptions = { 428e8f3dbaeSEvan Bacon title: 'Components', 42991d99453SEvan Bacon tabBarLabel: 'Components', 430ea08dda8SEvan Bacon tabBarIcon: icon, 431ea08dda8SEvan Bacon drawerIcon: icon, 43291d99453SEvan Bacon}; 43391d99453SEvan Baconexport default ExpoComponentsStackNavigator; 434