191d99453SEvan Baconimport { BottomTabNavigationProp } from '@react-navigation/bottom-tabs'; 291d99453SEvan Baconimport { createStackNavigator } from '@react-navigation/stack'; 391d99453SEvan Baconimport * as React from 'react'; 491d99453SEvan Bacon 58a424bebSJames Ideimport getStackConfig from './StackConfig'; 68a424bebSJames 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 }, 385*88cf444cSTomasz Sapeta name: 'Video (expo-av)', 386*88cf444cSTomasz Sapeta }, 387*88cf444cSTomasz Sapeta { 388*88cf444cSTomasz Sapeta getComponent() { 389*88cf444cSTomasz Sapeta return optionalRequire(() => require('../screens/Video/VideoScreen')); 390*88cf444cSTomasz Sapeta }, 391*88cf444cSTomasz Sapeta name: 'Video (expo-video)', 392dc2b55f3SEvan Bacon }, 393dc2b55f3SEvan Bacon { 394dc2b55f3SEvan Bacon getComponent() { 395dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Screens')); 396dc2b55f3SEvan Bacon }, 397dc2b55f3SEvan Bacon name: 'Screens', 398dc2b55f3SEvan Bacon }, 399dc2b55f3SEvan Bacon { 400dc2b55f3SEvan Bacon getComponent() { 401dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/WebViewScreen')); 402dc2b55f3SEvan Bacon }, 403dc2b55f3SEvan Bacon name: 'WebView', 404dc2b55f3SEvan Bacon }, 405dc2b55f3SEvan Bacon { 406dc2b55f3SEvan Bacon getComponent() { 40743babc79SCharlie Cruzan return optionalRequire(() => require('../screens/PagerViewScreen')); 408dc2b55f3SEvan Bacon }, 40943babc79SCharlie Cruzan name: 'PagerView', 41043babc79SCharlie Cruzan options: { gesturesEnabled: false, title: 'PagerView Example' }, 411dc2b55f3SEvan Bacon }, 412dc2b55f3SEvan Bacon { 413dc2b55f3SEvan Bacon getComponent() { 4145d0ad635SKudo Chien return optionalRequire(() => require('../screens/FlashListScreen')); 4155d0ad635SKudo Chien }, 4165d0ad635SKudo Chien name: 'FlashList', 4175d0ad635SKudo Chien }, 4189fda0a4dSAlan Hughes { 4199fda0a4dSAlan Hughes getComponent() { 4209fda0a4dSAlan Hughes return optionalRequire(() => require('../screens/ClipboardPasteButtonScreen')); 4219fda0a4dSAlan Hughes }, 4229fda0a4dSAlan Hughes name: 'ClipboardPasteButton', 4239fda0a4dSAlan Hughes }, 424f0b19ea9STomasz Sapeta ...ImageScreens, 425dc2b55f3SEvan Bacon]; 426dc2b55f3SEvan Bacon 42791d99453SEvan Baconfunction ExpoComponentsStackNavigator(props: { navigation: BottomTabNavigationProp<any> }) { 42891d99453SEvan Bacon return ( 42906642451SEvan Bacon <Stack.Navigator {...props} {...getStackConfig(props)}> 43091d99453SEvan Bacon <Stack.Screen 43191d99453SEvan Bacon name="ExpoComponents" 43291d99453SEvan Bacon options={{ title: Layout.isSmallDevice ? 'Expo SDK Components' : 'Components in Expo SDK' }} 43391d99453SEvan Bacon component={ExpoComponents} 43491d99453SEvan Bacon /> 435dc2b55f3SEvan Bacon {Screens.map(({ name, getComponent, options }) => ( 436dc2b55f3SEvan Bacon <Stack.Screen name={name} key={name} getComponent={getComponent} options={options ?? {}} /> 43791d99453SEvan Bacon ))} 43891d99453SEvan Bacon </Stack.Navigator> 43991d99453SEvan Bacon ); 44091d99453SEvan Bacon} 441ea08dda8SEvan Bacon 442ea08dda8SEvan Baconconst icon = ({ focused }: { focused: boolean }) => { 443e8f3dbaeSEvan Bacon return <TabIcon name="react" focused={focused} />; 444ea08dda8SEvan Bacon}; 44591d99453SEvan BaconExpoComponentsStackNavigator.navigationOptions = { 446e8f3dbaeSEvan Bacon title: 'Components', 44791d99453SEvan Bacon tabBarLabel: 'Components', 448ea08dda8SEvan Bacon tabBarIcon: icon, 449ea08dda8SEvan Bacon drawerIcon: icon, 45091d99453SEvan Bacon}; 45191d99453SEvan Baconexport default ExpoComponentsStackNavigator; 452