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'; 8f0b19ea9STomasz Sapetaimport { ImageScreens } from '../screens/Image/ImageScreen'; 906642451SEvan Baconimport getStackConfig from './StackConfig'; 10dc2b55f3SEvan Baconimport { optionalRequire } from './routeBuilder'; 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/ProgressViewIOSScreen')); 79dc2b55f3SEvan Bacon }, 80dc2b55f3SEvan Bacon name: 'ProgressViewIOS', 81dc2b55f3SEvan Bacon }, 82dc2b55f3SEvan Bacon { 83dc2b55f3SEvan Bacon getComponent() { 84dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ProgressBarAndroidScreen')); 85dc2b55f3SEvan Bacon }, 86dc2b55f3SEvan Bacon name: 'ProgressBarAndroid', 87dc2b55f3SEvan Bacon }, 88dc2b55f3SEvan Bacon { 89dc2b55f3SEvan Bacon getComponent() { 90dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TouchableBounceScreen')); 91dc2b55f3SEvan Bacon }, 92dc2b55f3SEvan Bacon name: 'TouchableBounce', 93dc2b55f3SEvan Bacon }, 94dc2b55f3SEvan Bacon { 95dc2b55f3SEvan Bacon getComponent() { 96dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SwitchScreen')); 97dc2b55f3SEvan Bacon }, 98dc2b55f3SEvan Bacon name: 'Switch', 99dc2b55f3SEvan Bacon }, 100dc2b55f3SEvan Bacon { 101dc2b55f3SEvan Bacon getComponent() { 102dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SliderScreen')); 103dc2b55f3SEvan Bacon }, 104dc2b55f3SEvan Bacon name: 'Slider', 105dc2b55f3SEvan Bacon }, 106dc2b55f3SEvan Bacon { 107dc2b55f3SEvan Bacon getComponent() { 108dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/PressableScreen')); 109dc2b55f3SEvan Bacon }, 110dc2b55f3SEvan Bacon name: 'Pressable', 111dc2b55f3SEvan Bacon }, 112dc2b55f3SEvan Bacon { 113dc2b55f3SEvan Bacon getComponent() { 114dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/PickerScreen')); 115dc2b55f3SEvan Bacon }, 116dc2b55f3SEvan Bacon name: 'Picker', 117dc2b55f3SEvan Bacon }, 118dc2b55f3SEvan Bacon { 119dc2b55f3SEvan Bacon getComponent() { 120dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/CheckboxScreen')); 121dc2b55f3SEvan Bacon }, 122dc2b55f3SEvan Bacon name: 'Checkbox', 123dc2b55f3SEvan Bacon }, 124dc2b55f3SEvan Bacon { 125dc2b55f3SEvan Bacon getComponent() { 126dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ButtonScreen')); 127dc2b55f3SEvan Bacon }, 128dc2b55f3SEvan Bacon name: 'Button', 129dc2b55f3SEvan Bacon }, 130dc2b55f3SEvan Bacon { 131dc2b55f3SEvan Bacon getComponent() { 132dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ActivityIndicatorScreen')); 133dc2b55f3SEvan Bacon }, 134dc2b55f3SEvan Bacon name: 'ActivityIndicator', 135dc2b55f3SEvan Bacon }, 136dc2b55f3SEvan Bacon { 137dc2b55f3SEvan Bacon getComponent() { 138dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/QRCodeScreen')); 139dc2b55f3SEvan Bacon }, 140dc2b55f3SEvan Bacon name: 'QRCode', 141dc2b55f3SEvan Bacon options: { title: 'QR Code' }, 142dc2b55f3SEvan Bacon }, 143dc2b55f3SEvan Bacon { 144dc2b55f3SEvan Bacon getComponent() { 145dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/DateTimePickerScreen')); 146dc2b55f3SEvan Bacon }, 147dc2b55f3SEvan Bacon name: 'DateTimePicker', 148dc2b55f3SEvan Bacon }, 149dc2b55f3SEvan Bacon { 150dc2b55f3SEvan Bacon getComponent() { 151dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLScreen')); 152dc2b55f3SEvan Bacon }, 153dc2b55f3SEvan Bacon name: 'GL', 154dc2b55f3SEvan Bacon options: { title: 'Examples of GL use' }, 155dc2b55f3SEvan Bacon }, 156dc2b55f3SEvan Bacon { 157dc2b55f3SEvan Bacon getComponent() { 158dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ClearToBlueScreen')); 159dc2b55f3SEvan Bacon }, 160dc2b55f3SEvan Bacon name: 'ClearToBlue', 161dc2b55f3SEvan Bacon options: { title: 'Clear to blue' }, 162dc2b55f3SEvan Bacon route: 'gl/cleartoblue', 163dc2b55f3SEvan Bacon }, 164dc2b55f3SEvan Bacon { 165dc2b55f3SEvan Bacon getComponent() { 166dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/BasicTextureScreen')); 167dc2b55f3SEvan Bacon }, 168dc2b55f3SEvan Bacon name: 'BasicTexture', 169dc2b55f3SEvan Bacon options: { title: 'Basic texture use' }, 170dc2b55f3SEvan Bacon route: 'gl/basictexture', 171dc2b55f3SEvan Bacon }, 172dc2b55f3SEvan Bacon { 173dc2b55f3SEvan Bacon getComponent() { 174dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLViewScreen')); 175dc2b55f3SEvan Bacon }, 176dc2b55f3SEvan Bacon name: 'GLViewScreen', 177dc2b55f3SEvan Bacon options: { title: 'GLView example' }, 178dc2b55f3SEvan Bacon route: 'gl/glviewscreen', 179dc2b55f3SEvan Bacon }, 180dc2b55f3SEvan Bacon { 181dc2b55f3SEvan Bacon getComponent() { 182dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLMaskScreen')); 183dc2b55f3SEvan Bacon }, 184dc2b55f3SEvan Bacon name: 'Mask', 185dc2b55f3SEvan Bacon options: { title: 'MaskedView integration' }, 186dc2b55f3SEvan Bacon route: 'gl/mask', 187dc2b55f3SEvan Bacon }, 188dc2b55f3SEvan Bacon { 189dc2b55f3SEvan Bacon getComponent() { 190dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLSnapshotsScreen')); 191dc2b55f3SEvan Bacon }, 192dc2b55f3SEvan Bacon name: 'Snapshots', 193dc2b55f3SEvan Bacon options: { title: 'Taking snapshots' }, 194dc2b55f3SEvan Bacon route: 'gl/snapshots', 195dc2b55f3SEvan Bacon }, 196dc2b55f3SEvan Bacon { 197dc2b55f3SEvan Bacon getComponent() { 198dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeComposerScreen')); 199dc2b55f3SEvan Bacon }, 200dc2b55f3SEvan Bacon name: 'THREEComposer', 201dc2b55f3SEvan Bacon options: { title: 'three.js glitch and film effects' }, 202dc2b55f3SEvan Bacon route: 'gl/threecomposer', 203dc2b55f3SEvan Bacon }, 204dc2b55f3SEvan Bacon { 205dc2b55f3SEvan Bacon getComponent() { 206dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeDepthStencilBufferScreen')); 207dc2b55f3SEvan Bacon }, 208dc2b55f3SEvan Bacon name: 'THREEDepthStencilBuffer', 209dc2b55f3SEvan Bacon options: { title: 'three.js depth and stencil buffer' }, 210dc2b55f3SEvan Bacon route: 'gl/threedepthstencilbuffer', 211dc2b55f3SEvan Bacon }, 212dc2b55f3SEvan Bacon { 213dc2b55f3SEvan Bacon getComponent() { 214dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeSpriteScreen')); 215dc2b55f3SEvan Bacon }, 216dc2b55f3SEvan Bacon name: 'THREESprite', 217dc2b55f3SEvan Bacon options: { title: 'three.js sprite rendering' }, 218dc2b55f3SEvan Bacon route: 'gl/threesprite', 219dc2b55f3SEvan Bacon }, 220dc2b55f3SEvan Bacon { 221dc2b55f3SEvan Bacon getComponent() { 222dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ProcessingInAndOutScreen')); 223dc2b55f3SEvan Bacon }, 224dc2b55f3SEvan Bacon name: 'ProcessingInAndOut', 225dc2b55f3SEvan Bacon options: { title: "'In and out' from openprocessing.org" }, 226dc2b55f3SEvan Bacon route: 'gl/processinginandout', 227dc2b55f3SEvan Bacon }, 228dc2b55f3SEvan Bacon { 229dc2b55f3SEvan Bacon getComponent() { 230dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ProcessingNoClearScreen')); 231dc2b55f3SEvan Bacon }, 232dc2b55f3SEvan Bacon name: 'ProcessingNoClear', 233dc2b55f3SEvan Bacon options: { title: 'Draw without clearing screen with processing.js' }, 234dc2b55f3SEvan Bacon route: 'gl/processingnoclear', 235dc2b55f3SEvan Bacon }, 236dc2b55f3SEvan Bacon { 237dc2b55f3SEvan Bacon getComponent() { 238dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/PIXIBasicScreen')); 239dc2b55f3SEvan Bacon }, 240dc2b55f3SEvan Bacon name: 'PIXIBasic', 241dc2b55f3SEvan Bacon options: { title: 'Basic pixi.js use' }, 242dc2b55f3SEvan Bacon route: 'gl/pixibasic', 243dc2b55f3SEvan Bacon }, 244dc2b55f3SEvan Bacon { 245dc2b55f3SEvan Bacon getComponent() { 246dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/PIXISpriteScreen')); 247dc2b55f3SEvan Bacon }, 248dc2b55f3SEvan Bacon name: 'PIXISprite', 249dc2b55f3SEvan Bacon options: { title: 'pixi.js sprite rendering' }, 250dc2b55f3SEvan Bacon route: 'gl/pixisprite', 251dc2b55f3SEvan Bacon }, 252dc2b55f3SEvan Bacon { 253dc2b55f3SEvan Bacon getComponent() { 254dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLCameraScreen')); 255dc2b55f3SEvan Bacon }, 256dc2b55f3SEvan Bacon name: 'GLCamera', 257dc2b55f3SEvan Bacon options: { title: 'Expo.Camera integration' }, 258dc2b55f3SEvan Bacon route: 'gl/glcamera', 259dc2b55f3SEvan Bacon }, 260dc2b55f3SEvan Bacon { 261dc2b55f3SEvan Bacon getComponent() { 262dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/WebGL2TransformFeedbackScreen')); 263dc2b55f3SEvan Bacon }, 264dc2b55f3SEvan Bacon name: 'WebGL2TransformFeedback', 265dc2b55f3SEvan Bacon options: { title: 'WebGL2 - Transform feedback' }, 266dc2b55f3SEvan Bacon route: 'gl/webgl2transformfeedback', 267dc2b55f3SEvan Bacon }, 268dc2b55f3SEvan Bacon { 269dc2b55f3SEvan Bacon getComponent() { 270dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/CanvasScreen')); 271dc2b55f3SEvan Bacon }, 272dc2b55f3SEvan Bacon name: 'Canvas', 273dc2b55f3SEvan Bacon options: { title: 'Canvas example - expo-2d-context' }, 274dc2b55f3SEvan Bacon route: 'gl/canvas', 275dc2b55f3SEvan Bacon }, 276dc2b55f3SEvan Bacon { 277dc2b55f3SEvan Bacon getComponent() { 278dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLHeadlessRenderingScreen')); 279dc2b55f3SEvan Bacon }, 280dc2b55f3SEvan Bacon name: 'HeadlessRendering', 281dc2b55f3SEvan Bacon options: { title: 'Headless rendering' }, 282dc2b55f3SEvan Bacon route: 'gl/headlessrendering', 283dc2b55f3SEvan Bacon }, 284dc2b55f3SEvan Bacon { 285dc2b55f3SEvan Bacon getComponent() { 28679e2cd13SWojciech Kozyra return optionalRequire(() => require('../screens/GL/GLReanimatedExample')); 28779e2cd13SWojciech Kozyra }, 28879e2cd13SWojciech Kozyra name: 'ReanimatedWorklets', 28979e2cd13SWojciech Kozyra options: { title: 'Reanimated worklets + gesture handler' }, 29079e2cd13SWojciech Kozyra route: 'gl/reanimated', 29179e2cd13SWojciech Kozyra }, 29279e2cd13SWojciech Kozyra { 29379e2cd13SWojciech Kozyra getComponent() { 294*58fb4e57SWojciech Kozyra return optionalRequire(() => require('../screens/GL/GLViewOnBusyThread')); 295*58fb4e57SWojciech Kozyra }, 296*58fb4e57SWojciech Kozyra name: 'GLViewOnBusyThread', 297*58fb4e57SWojciech Kozyra options: { title: 'Creating GLView when a thread is busy' }, 298*58fb4e57SWojciech Kozyra route: 'gl/busythread', 299*58fb4e57SWojciech Kozyra }, 300*58fb4e57SWojciech Kozyra { 301*58fb4e57SWojciech Kozyra getComponent() { 302dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerPinchScreen')); 303dc2b55f3SEvan Bacon }, 304dc2b55f3SEvan Bacon name: 'GestureHandlerPinch', 305dc2b55f3SEvan Bacon options: { title: 'Pinch and Rotate' }, 306dc2b55f3SEvan Bacon }, 307dc2b55f3SEvan Bacon { 308dc2b55f3SEvan Bacon getComponent() { 309dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerListScreen')); 310dc2b55f3SEvan Bacon }, 311dc2b55f3SEvan Bacon name: 'GestureHandlerList', 312dc2b55f3SEvan Bacon options: { title: 'Gesture Handler List' }, 313dc2b55f3SEvan Bacon }, 314dc2b55f3SEvan Bacon { 315dc2b55f3SEvan Bacon getComponent() { 316dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerSwipeableScreen')); 317dc2b55f3SEvan Bacon }, 318dc2b55f3SEvan Bacon name: 'GestureHandlerSwipeable', 319dc2b55f3SEvan Bacon options: { title: 'Swipeable Rows' }, 320dc2b55f3SEvan Bacon }, 321dc2b55f3SEvan Bacon { 322dc2b55f3SEvan Bacon getComponent() { 323dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/HTMLElementsScreen')); 324dc2b55f3SEvan Bacon }, 325dc2b55f3SEvan Bacon name: 'HTML', 326dc2b55f3SEvan Bacon }, 327dc2b55f3SEvan Bacon { 328dc2b55f3SEvan Bacon getComponent() { 329dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Image/ImageScreen')); 330dc2b55f3SEvan Bacon }, 331dc2b55f3SEvan Bacon name: 'Image', 332dc2b55f3SEvan Bacon }, 333dc2b55f3SEvan Bacon { 334dc2b55f3SEvan Bacon getComponent() { 335dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Reanimated/ReanimatedScreen')); 336dc2b55f3SEvan Bacon }, 337dc2b55f3SEvan Bacon name: 'Reanimated', 338dc2b55f3SEvan Bacon }, 339dc2b55f3SEvan Bacon { 340dc2b55f3SEvan Bacon getComponent() { 341dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GifScreen')); 342dc2b55f3SEvan Bacon }, 343dc2b55f3SEvan Bacon name: 'Gif', 344dc2b55f3SEvan Bacon }, 345dc2b55f3SEvan Bacon { 346dc2b55f3SEvan Bacon getComponent() { 347dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SegmentedControlScreen')); 348dc2b55f3SEvan Bacon }, 349dc2b55f3SEvan Bacon name: 'SegmentedControl', 350dc2b55f3SEvan Bacon }, 351dc2b55f3SEvan Bacon { 352dc2b55f3SEvan Bacon getComponent() { 353a1a2c328SKudo Chien return optionalRequire(() => require('../screens/Skia/SkiaScreen')); 354a1a2c328SKudo Chien }, 355a1a2c328SKudo Chien name: 'Skia', 356a1a2c328SKudo Chien }, 357a1a2c328SKudo Chien { 358a1a2c328SKudo Chien getComponent() { 359dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SVG/SVGScreen')); 360dc2b55f3SEvan Bacon }, 361dc2b55f3SEvan Bacon name: 'SVG', 362dc2b55f3SEvan Bacon }, 363dc2b55f3SEvan Bacon { 364dc2b55f3SEvan Bacon getComponent() { 365dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SVG/SVGExampleScreen')); 366dc2b55f3SEvan Bacon }, 367dc2b55f3SEvan Bacon name: 'SVGExample', 368dc2b55f3SEvan Bacon }, 369dc2b55f3SEvan Bacon { 370dc2b55f3SEvan Bacon getComponent() { 371dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/LinearGradientScreen')); 372dc2b55f3SEvan Bacon }, 373dc2b55f3SEvan Bacon name: 'LinearGradient', 374dc2b55f3SEvan Bacon }, 375dc2b55f3SEvan Bacon { 376dc2b55f3SEvan Bacon getComponent() { 377dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/LottieScreen')); 378dc2b55f3SEvan Bacon }, 379dc2b55f3SEvan Bacon name: 'Lottie', 380dc2b55f3SEvan Bacon }, 381dc2b55f3SEvan Bacon { 382dc2b55f3SEvan Bacon getComponent() { 383dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/MapsScreen')); 384dc2b55f3SEvan Bacon }, 385dc2b55f3SEvan Bacon name: 'Maps', 386dc2b55f3SEvan Bacon }, 387dc2b55f3SEvan Bacon { 388dc2b55f3SEvan Bacon getComponent() { 389ee0de234SŁukasz Kosmaty return optionalRequire(() => require('../screens/ExpoMaps/ExpoMapsScreen')); 390ee0de234SŁukasz Kosmaty }, 391ee0de234SŁukasz Kosmaty name: 'ExpoMaps', 392ee0de234SŁukasz Kosmaty }, 393ee0de234SŁukasz Kosmaty { 394ee0de234SŁukasz Kosmaty getComponent() { 395dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/AV/VideoScreen')); 396dc2b55f3SEvan Bacon }, 397dc2b55f3SEvan Bacon name: 'Video', 398dc2b55f3SEvan Bacon }, 399dc2b55f3SEvan Bacon { 400dc2b55f3SEvan Bacon getComponent() { 401dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Screens')); 402dc2b55f3SEvan Bacon }, 403dc2b55f3SEvan Bacon name: 'Screens', 404dc2b55f3SEvan Bacon }, 405dc2b55f3SEvan Bacon { 406dc2b55f3SEvan Bacon getComponent() { 407dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/WebViewScreen')); 408dc2b55f3SEvan Bacon }, 409dc2b55f3SEvan Bacon name: 'WebView', 410dc2b55f3SEvan Bacon }, 411dc2b55f3SEvan Bacon { 412dc2b55f3SEvan Bacon getComponent() { 41343babc79SCharlie Cruzan return optionalRequire(() => require('../screens/PagerViewScreen')); 414dc2b55f3SEvan Bacon }, 41543babc79SCharlie Cruzan name: 'PagerView', 41643babc79SCharlie Cruzan options: { gesturesEnabled: false, title: 'PagerView Example' }, 417dc2b55f3SEvan Bacon }, 418dc2b55f3SEvan Bacon { 419dc2b55f3SEvan Bacon getComponent() { 420dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SharedElementScreen')); 421dc2b55f3SEvan Bacon }, 422dc2b55f3SEvan Bacon name: 'SharedElement', 423dc2b55f3SEvan Bacon }, 4245d0ad635SKudo Chien { 4255d0ad635SKudo Chien getComponent() { 4265d0ad635SKudo Chien return optionalRequire(() => require('../screens/FlashListScreen')); 4275d0ad635SKudo Chien }, 4285d0ad635SKudo Chien name: 'FlashList', 4295d0ad635SKudo Chien }, 430f0b19ea9STomasz Sapeta ...ImageScreens, 431dc2b55f3SEvan Bacon]; 432dc2b55f3SEvan Bacon 43391d99453SEvan Baconfunction ExpoComponentsStackNavigator(props: { navigation: BottomTabNavigationProp<any> }) { 43491d99453SEvan Bacon return ( 43506642451SEvan Bacon <Stack.Navigator {...props} {...getStackConfig(props)}> 43691d99453SEvan Bacon <Stack.Screen 43791d99453SEvan Bacon name="ExpoComponents" 43891d99453SEvan Bacon options={{ title: Layout.isSmallDevice ? 'Expo SDK Components' : 'Components in Expo SDK' }} 43991d99453SEvan Bacon component={ExpoComponents} 44091d99453SEvan Bacon /> 441dc2b55f3SEvan Bacon {Screens.map(({ name, getComponent, options }) => ( 442dc2b55f3SEvan Bacon <Stack.Screen name={name} key={name} getComponent={getComponent} options={options ?? {}} /> 44391d99453SEvan Bacon ))} 44491d99453SEvan Bacon </Stack.Navigator> 44591d99453SEvan Bacon ); 44691d99453SEvan Bacon} 447ea08dda8SEvan Bacon 448ea08dda8SEvan Baconconst icon = ({ focused }: { focused: boolean }) => { 449e8f3dbaeSEvan Bacon return <TabIcon name="react" focused={focused} />; 450ea08dda8SEvan Bacon}; 45191d99453SEvan BaconExpoComponentsStackNavigator.navigationOptions = { 452e8f3dbaeSEvan Bacon title: 'Components', 45391d99453SEvan Bacon tabBarLabel: 'Components', 454ea08dda8SEvan Bacon tabBarIcon: icon, 455ea08dda8SEvan Bacon drawerIcon: icon, 45691d99453SEvan Bacon}; 45791d99453SEvan Baconexport default ExpoComponentsStackNavigator; 458