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() { 1674967a3cSCharlie Cruzan return optionalRequire(() => require('../screens/FacebookAdsScreen')); 1774967a3cSCharlie Cruzan }, 1874967a3cSCharlie Cruzan name: 'FacebookAds', 1974967a3cSCharlie Cruzan }, 2074967a3cSCharlie Cruzan { 2174967a3cSCharlie Cruzan getComponent() { 2274967a3cSCharlie Cruzan return optionalRequire(() => require('../screens/DrawerLayoutAndroidScreen')); 2374967a3cSCharlie Cruzan }, 2474967a3cSCharlie Cruzan name: 'DrawerLayoutAndroid', 2574967a3cSCharlie Cruzan }, 2674967a3cSCharlie Cruzan { 2774967a3cSCharlie Cruzan getComponent() { 28fa37026dSCharlie Cruzan return optionalRequire(() => require('../screens/AdMobScreen')); 29fa37026dSCharlie Cruzan }, 30fa37026dSCharlie Cruzan name: 'Admob', 31fa37026dSCharlie Cruzan }, 32fa37026dSCharlie Cruzan { 33fa37026dSCharlie Cruzan getComponent() { 34dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/BarCodeScannerScreen')); 35dc2b55f3SEvan Bacon }, 36dc2b55f3SEvan Bacon name: 'BarCodeScanner', 37dc2b55f3SEvan Bacon }, 38dc2b55f3SEvan Bacon { 39dc2b55f3SEvan Bacon getComponent() { 40dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ModalScreen')); 41dc2b55f3SEvan Bacon }, 42dc2b55f3SEvan Bacon name: 'Modal', 43dc2b55f3SEvan Bacon }, 44dc2b55f3SEvan Bacon { 45dc2b55f3SEvan Bacon getComponent() { 46dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ScrollViewScreen')); 47dc2b55f3SEvan Bacon }, 48dc2b55f3SEvan Bacon name: 'ScrollView', 49dc2b55f3SEvan Bacon }, 50dc2b55f3SEvan Bacon { 51dc2b55f3SEvan Bacon getComponent() { 52dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/MaskedViewScreen')); 53dc2b55f3SEvan Bacon }, 54dc2b55f3SEvan Bacon name: 'MaskedView', 55dc2b55f3SEvan Bacon options: { title: 'Basic Mask Example' }, 56dc2b55f3SEvan Bacon }, 57dc2b55f3SEvan Bacon { 58dc2b55f3SEvan Bacon getComponent() { 59b4aa028bSBartłomiej Bukowski return optionalRequire(() => require('../screens/BlurView/BlurViewScreen')); 60dc2b55f3SEvan Bacon }, 61dc2b55f3SEvan Bacon name: 'BlurView', 62dc2b55f3SEvan Bacon }, 63dc2b55f3SEvan Bacon { 64dc2b55f3SEvan Bacon getComponent() { 65dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Camera/CameraScreen')); 66dc2b55f3SEvan Bacon }, 67dc2b55f3SEvan Bacon name: 'Camera', 68dc2b55f3SEvan Bacon }, 69dc2b55f3SEvan Bacon { 70dc2b55f3SEvan Bacon getComponent() { 71dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TextScreen')); 72dc2b55f3SEvan Bacon }, 73dc2b55f3SEvan Bacon name: 'Text', 74dc2b55f3SEvan Bacon }, 75dc2b55f3SEvan Bacon { 76dc2b55f3SEvan Bacon getComponent() { 77dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TextInputScreen')); 78dc2b55f3SEvan Bacon }, 79dc2b55f3SEvan Bacon name: 'TextInput', 80dc2b55f3SEvan Bacon }, 81dc2b55f3SEvan Bacon { 82dc2b55f3SEvan Bacon getComponent() { 83dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TouchablesScreen')); 84dc2b55f3SEvan Bacon }, 85dc2b55f3SEvan Bacon name: 'Touchables', 86dc2b55f3SEvan Bacon }, 87dc2b55f3SEvan Bacon { 88dc2b55f3SEvan Bacon getComponent() { 89dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ProgressViewIOSScreen')); 90dc2b55f3SEvan Bacon }, 91dc2b55f3SEvan Bacon name: 'ProgressViewIOS', 92dc2b55f3SEvan Bacon }, 93dc2b55f3SEvan Bacon { 94dc2b55f3SEvan Bacon getComponent() { 95dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ProgressBarAndroidScreen')); 96dc2b55f3SEvan Bacon }, 97dc2b55f3SEvan Bacon name: 'ProgressBarAndroid', 98dc2b55f3SEvan Bacon }, 99dc2b55f3SEvan Bacon { 100dc2b55f3SEvan Bacon getComponent() { 101dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/TouchableBounceScreen')); 102dc2b55f3SEvan Bacon }, 103dc2b55f3SEvan Bacon name: 'TouchableBounce', 104dc2b55f3SEvan Bacon }, 105dc2b55f3SEvan Bacon { 106dc2b55f3SEvan Bacon getComponent() { 107dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SwitchScreen')); 108dc2b55f3SEvan Bacon }, 109dc2b55f3SEvan Bacon name: 'Switch', 110dc2b55f3SEvan Bacon }, 111dc2b55f3SEvan Bacon { 112dc2b55f3SEvan Bacon getComponent() { 113dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SliderScreen')); 114dc2b55f3SEvan Bacon }, 115dc2b55f3SEvan Bacon name: 'Slider', 116dc2b55f3SEvan Bacon }, 117dc2b55f3SEvan Bacon { 118dc2b55f3SEvan Bacon getComponent() { 119dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/PressableScreen')); 120dc2b55f3SEvan Bacon }, 121dc2b55f3SEvan Bacon name: 'Pressable', 122dc2b55f3SEvan Bacon }, 123dc2b55f3SEvan Bacon { 124dc2b55f3SEvan Bacon getComponent() { 125dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/PickerScreen')); 126dc2b55f3SEvan Bacon }, 127dc2b55f3SEvan Bacon name: 'Picker', 128dc2b55f3SEvan Bacon }, 129dc2b55f3SEvan Bacon { 130dc2b55f3SEvan Bacon getComponent() { 131dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/CheckboxScreen')); 132dc2b55f3SEvan Bacon }, 133dc2b55f3SEvan Bacon name: 'Checkbox', 134dc2b55f3SEvan Bacon }, 135dc2b55f3SEvan Bacon { 136dc2b55f3SEvan Bacon getComponent() { 137dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ButtonScreen')); 138dc2b55f3SEvan Bacon }, 139dc2b55f3SEvan Bacon name: 'Button', 140dc2b55f3SEvan Bacon }, 141dc2b55f3SEvan Bacon { 142dc2b55f3SEvan Bacon getComponent() { 143dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/ActivityIndicatorScreen')); 144dc2b55f3SEvan Bacon }, 145dc2b55f3SEvan Bacon name: 'ActivityIndicator', 146dc2b55f3SEvan Bacon }, 147dc2b55f3SEvan Bacon { 148dc2b55f3SEvan Bacon getComponent() { 149dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/QRCodeScreen')); 150dc2b55f3SEvan Bacon }, 151dc2b55f3SEvan Bacon name: 'QRCode', 152dc2b55f3SEvan Bacon options: { title: 'QR Code' }, 153dc2b55f3SEvan Bacon }, 154dc2b55f3SEvan Bacon { 155dc2b55f3SEvan Bacon getComponent() { 156dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/DateTimePickerScreen')); 157dc2b55f3SEvan Bacon }, 158dc2b55f3SEvan Bacon name: 'DateTimePicker', 159dc2b55f3SEvan Bacon }, 160dc2b55f3SEvan Bacon { 161dc2b55f3SEvan Bacon getComponent() { 162dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLScreen')); 163dc2b55f3SEvan Bacon }, 164dc2b55f3SEvan Bacon name: 'GL', 165dc2b55f3SEvan Bacon options: { title: 'Examples of GL use' }, 166dc2b55f3SEvan Bacon }, 167dc2b55f3SEvan Bacon { 168dc2b55f3SEvan Bacon getComponent() { 169dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ClearToBlueScreen')); 170dc2b55f3SEvan Bacon }, 171dc2b55f3SEvan Bacon name: 'ClearToBlue', 172dc2b55f3SEvan Bacon options: { title: 'Clear to blue' }, 173dc2b55f3SEvan Bacon route: 'gl/cleartoblue', 174dc2b55f3SEvan Bacon }, 175dc2b55f3SEvan Bacon { 176dc2b55f3SEvan Bacon getComponent() { 177dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/BasicTextureScreen')); 178dc2b55f3SEvan Bacon }, 179dc2b55f3SEvan Bacon name: 'BasicTexture', 180dc2b55f3SEvan Bacon options: { title: 'Basic texture use' }, 181dc2b55f3SEvan Bacon route: 'gl/basictexture', 182dc2b55f3SEvan Bacon }, 183dc2b55f3SEvan Bacon { 184dc2b55f3SEvan Bacon getComponent() { 185dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLViewScreen')); 186dc2b55f3SEvan Bacon }, 187dc2b55f3SEvan Bacon name: 'GLViewScreen', 188dc2b55f3SEvan Bacon options: { title: 'GLView example' }, 189dc2b55f3SEvan Bacon route: 'gl/glviewscreen', 190dc2b55f3SEvan Bacon }, 191dc2b55f3SEvan Bacon { 192dc2b55f3SEvan Bacon getComponent() { 193dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLMaskScreen')); 194dc2b55f3SEvan Bacon }, 195dc2b55f3SEvan Bacon name: 'Mask', 196dc2b55f3SEvan Bacon options: { title: 'MaskedView integration' }, 197dc2b55f3SEvan Bacon route: 'gl/mask', 198dc2b55f3SEvan Bacon }, 199dc2b55f3SEvan Bacon { 200dc2b55f3SEvan Bacon getComponent() { 201dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLSnapshotsScreen')); 202dc2b55f3SEvan Bacon }, 203dc2b55f3SEvan Bacon name: 'Snapshots', 204dc2b55f3SEvan Bacon options: { title: 'Taking snapshots' }, 205dc2b55f3SEvan Bacon route: 'gl/snapshots', 206dc2b55f3SEvan Bacon }, 207dc2b55f3SEvan Bacon { 208dc2b55f3SEvan Bacon getComponent() { 209dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeComposerScreen')); 210dc2b55f3SEvan Bacon }, 211dc2b55f3SEvan Bacon name: 'THREEComposer', 212dc2b55f3SEvan Bacon options: { title: 'three.js glitch and film effects' }, 213dc2b55f3SEvan Bacon route: 'gl/threecomposer', 214dc2b55f3SEvan Bacon }, 215dc2b55f3SEvan Bacon { 216dc2b55f3SEvan Bacon getComponent() { 217dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeDepthStencilBufferScreen')); 218dc2b55f3SEvan Bacon }, 219dc2b55f3SEvan Bacon name: 'THREEDepthStencilBuffer', 220dc2b55f3SEvan Bacon options: { title: 'three.js depth and stencil buffer' }, 221dc2b55f3SEvan Bacon route: 'gl/threedepthstencilbuffer', 222dc2b55f3SEvan Bacon }, 223dc2b55f3SEvan Bacon { 224dc2b55f3SEvan Bacon getComponent() { 225dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLThreeSpriteScreen')); 226dc2b55f3SEvan Bacon }, 227dc2b55f3SEvan Bacon name: 'THREESprite', 228dc2b55f3SEvan Bacon options: { title: 'three.js sprite rendering' }, 229dc2b55f3SEvan Bacon route: 'gl/threesprite', 230dc2b55f3SEvan Bacon }, 231dc2b55f3SEvan Bacon { 232dc2b55f3SEvan Bacon getComponent() { 233dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ProcessingInAndOutScreen')); 234dc2b55f3SEvan Bacon }, 235dc2b55f3SEvan Bacon name: 'ProcessingInAndOut', 236dc2b55f3SEvan Bacon options: { title: "'In and out' from openprocessing.org" }, 237dc2b55f3SEvan Bacon route: 'gl/processinginandout', 238dc2b55f3SEvan Bacon }, 239dc2b55f3SEvan Bacon { 240dc2b55f3SEvan Bacon getComponent() { 241dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/ProcessingNoClearScreen')); 242dc2b55f3SEvan Bacon }, 243dc2b55f3SEvan Bacon name: 'ProcessingNoClear', 244dc2b55f3SEvan Bacon options: { title: 'Draw without clearing screen with processing.js' }, 245dc2b55f3SEvan Bacon route: 'gl/processingnoclear', 246dc2b55f3SEvan Bacon }, 247dc2b55f3SEvan Bacon { 248dc2b55f3SEvan Bacon getComponent() { 249dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/PIXIBasicScreen')); 250dc2b55f3SEvan Bacon }, 251dc2b55f3SEvan Bacon name: 'PIXIBasic', 252dc2b55f3SEvan Bacon options: { title: 'Basic pixi.js use' }, 253dc2b55f3SEvan Bacon route: 'gl/pixibasic', 254dc2b55f3SEvan Bacon }, 255dc2b55f3SEvan Bacon { 256dc2b55f3SEvan Bacon getComponent() { 257dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/PIXISpriteScreen')); 258dc2b55f3SEvan Bacon }, 259dc2b55f3SEvan Bacon name: 'PIXISprite', 260dc2b55f3SEvan Bacon options: { title: 'pixi.js sprite rendering' }, 261dc2b55f3SEvan Bacon route: 'gl/pixisprite', 262dc2b55f3SEvan Bacon }, 263dc2b55f3SEvan Bacon { 264dc2b55f3SEvan Bacon getComponent() { 265dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLCameraScreen')); 266dc2b55f3SEvan Bacon }, 267dc2b55f3SEvan Bacon name: 'GLCamera', 268dc2b55f3SEvan Bacon options: { title: 'Expo.Camera integration' }, 269dc2b55f3SEvan Bacon route: 'gl/glcamera', 270dc2b55f3SEvan Bacon }, 271dc2b55f3SEvan Bacon { 272dc2b55f3SEvan Bacon getComponent() { 273dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/WebGL2TransformFeedbackScreen')); 274dc2b55f3SEvan Bacon }, 275dc2b55f3SEvan Bacon name: 'WebGL2TransformFeedback', 276dc2b55f3SEvan Bacon options: { title: 'WebGL2 - Transform feedback' }, 277dc2b55f3SEvan Bacon route: 'gl/webgl2transformfeedback', 278dc2b55f3SEvan Bacon }, 279dc2b55f3SEvan Bacon { 280dc2b55f3SEvan Bacon getComponent() { 281dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/CanvasScreen')); 282dc2b55f3SEvan Bacon }, 283dc2b55f3SEvan Bacon name: 'Canvas', 284dc2b55f3SEvan Bacon options: { title: 'Canvas example - expo-2d-context' }, 285dc2b55f3SEvan Bacon route: 'gl/canvas', 286dc2b55f3SEvan Bacon }, 287dc2b55f3SEvan Bacon { 288dc2b55f3SEvan Bacon getComponent() { 289dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GL/GLHeadlessRenderingScreen')); 290dc2b55f3SEvan Bacon }, 291dc2b55f3SEvan Bacon name: 'HeadlessRendering', 292dc2b55f3SEvan Bacon options: { title: 'Headless rendering' }, 293dc2b55f3SEvan Bacon route: 'gl/headlessrendering', 294dc2b55f3SEvan Bacon }, 295dc2b55f3SEvan Bacon { 296dc2b55f3SEvan Bacon getComponent() { 29779e2cd13SWojciech Kozyra return optionalRequire(() => require('../screens/GL/GLReanimatedExample')); 29879e2cd13SWojciech Kozyra }, 29979e2cd13SWojciech Kozyra name: 'ReanimatedWorklets', 30079e2cd13SWojciech Kozyra options: { title: 'Reanimated worklets + gesture handler' }, 30179e2cd13SWojciech Kozyra route: 'gl/reanimated', 30279e2cd13SWojciech Kozyra }, 30379e2cd13SWojciech Kozyra { 30479e2cd13SWojciech Kozyra getComponent() { 305dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerPinchScreen')); 306dc2b55f3SEvan Bacon }, 307dc2b55f3SEvan Bacon name: 'GestureHandlerPinch', 308dc2b55f3SEvan Bacon options: { title: 'Pinch and Rotate' }, 309dc2b55f3SEvan Bacon }, 310dc2b55f3SEvan Bacon { 311dc2b55f3SEvan Bacon getComponent() { 312dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerListScreen')); 313dc2b55f3SEvan Bacon }, 314dc2b55f3SEvan Bacon name: 'GestureHandlerList', 315dc2b55f3SEvan Bacon options: { title: 'Gesture Handler List' }, 316dc2b55f3SEvan Bacon }, 317dc2b55f3SEvan Bacon { 318dc2b55f3SEvan Bacon getComponent() { 319dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GestureHandlerSwipeableScreen')); 320dc2b55f3SEvan Bacon }, 321dc2b55f3SEvan Bacon name: 'GestureHandlerSwipeable', 322dc2b55f3SEvan Bacon options: { title: 'Swipeable Rows' }, 323dc2b55f3SEvan Bacon }, 324dc2b55f3SEvan Bacon { 325dc2b55f3SEvan Bacon getComponent() { 326dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/HTMLElementsScreen')); 327dc2b55f3SEvan Bacon }, 328dc2b55f3SEvan Bacon name: 'HTML', 329dc2b55f3SEvan Bacon }, 330dc2b55f3SEvan Bacon { 331dc2b55f3SEvan Bacon getComponent() { 332dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Image/ImageScreen')); 333dc2b55f3SEvan Bacon }, 334dc2b55f3SEvan Bacon name: 'Image', 335dc2b55f3SEvan Bacon }, 336dc2b55f3SEvan Bacon { 337dc2b55f3SEvan Bacon getComponent() { 338dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Image/ImageTestsScreen')); 339dc2b55f3SEvan Bacon }, 340dc2b55f3SEvan Bacon name: 'ImageTests', 341dc2b55f3SEvan Bacon }, 342dc2b55f3SEvan Bacon { 343dc2b55f3SEvan Bacon getComponent() { 344dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Image/ImageTestScreen')); 345dc2b55f3SEvan Bacon }, 346dc2b55f3SEvan Bacon name: 'ImageTest', 347dc2b55f3SEvan Bacon }, 348dc2b55f3SEvan Bacon { 349dc2b55f3SEvan Bacon getComponent() { 350dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Reanimated/ReanimatedScreen')); 351dc2b55f3SEvan Bacon }, 352dc2b55f3SEvan Bacon name: 'Reanimated', 353dc2b55f3SEvan Bacon }, 354dc2b55f3SEvan Bacon { 355dc2b55f3SEvan Bacon getComponent() { 356dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/GifScreen')); 357dc2b55f3SEvan Bacon }, 358dc2b55f3SEvan Bacon name: 'Gif', 359dc2b55f3SEvan Bacon }, 360dc2b55f3SEvan Bacon { 361dc2b55f3SEvan Bacon getComponent() { 362dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SegmentedControlScreen')); 363dc2b55f3SEvan Bacon }, 364dc2b55f3SEvan Bacon name: 'SegmentedControl', 365dc2b55f3SEvan Bacon }, 366dc2b55f3SEvan Bacon { 367dc2b55f3SEvan Bacon getComponent() { 368a1a2c328SKudo Chien return optionalRequire(() => require('../screens/Skia/SkiaScreen')); 369a1a2c328SKudo Chien }, 370a1a2c328SKudo Chien name: 'Skia', 371a1a2c328SKudo Chien }, 372a1a2c328SKudo Chien { 373a1a2c328SKudo Chien getComponent() { 374dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SVG/SVGScreen')); 375dc2b55f3SEvan Bacon }, 376dc2b55f3SEvan Bacon name: 'SVG', 377dc2b55f3SEvan Bacon }, 378dc2b55f3SEvan Bacon { 379dc2b55f3SEvan Bacon getComponent() { 380dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SVG/SVGExampleScreen')); 381dc2b55f3SEvan Bacon }, 382dc2b55f3SEvan Bacon name: 'SVGExample', 383dc2b55f3SEvan Bacon }, 384dc2b55f3SEvan Bacon { 385dc2b55f3SEvan Bacon getComponent() { 386dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/LinearGradientScreen')); 387dc2b55f3SEvan Bacon }, 388dc2b55f3SEvan Bacon name: 'LinearGradient', 389dc2b55f3SEvan Bacon }, 390dc2b55f3SEvan Bacon { 391dc2b55f3SEvan Bacon getComponent() { 392dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/LottieScreen')); 393dc2b55f3SEvan Bacon }, 394dc2b55f3SEvan Bacon name: 'Lottie', 395dc2b55f3SEvan Bacon }, 396dc2b55f3SEvan Bacon { 397dc2b55f3SEvan Bacon getComponent() { 398dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/MapsScreen')); 399dc2b55f3SEvan Bacon }, 400dc2b55f3SEvan Bacon name: 'Maps', 401dc2b55f3SEvan Bacon }, 402dc2b55f3SEvan Bacon { 403dc2b55f3SEvan Bacon getComponent() { 404dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/AV/VideoScreen')); 405dc2b55f3SEvan Bacon }, 406dc2b55f3SEvan Bacon name: 'Video', 407dc2b55f3SEvan Bacon }, 408dc2b55f3SEvan Bacon { 409dc2b55f3SEvan Bacon getComponent() { 410dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/Screens')); 411dc2b55f3SEvan Bacon }, 412dc2b55f3SEvan Bacon name: 'Screens', 413dc2b55f3SEvan Bacon }, 414dc2b55f3SEvan Bacon { 415dc2b55f3SEvan Bacon getComponent() { 416dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/WebViewScreen')); 417dc2b55f3SEvan Bacon }, 418dc2b55f3SEvan Bacon name: 'WebView', 419dc2b55f3SEvan Bacon }, 420dc2b55f3SEvan Bacon { 421dc2b55f3SEvan Bacon getComponent() { 42243babc79SCharlie Cruzan return optionalRequire(() => require('../screens/PagerViewScreen')); 423dc2b55f3SEvan Bacon }, 42443babc79SCharlie Cruzan name: 'PagerView', 42543babc79SCharlie Cruzan options: { gesturesEnabled: false, title: 'PagerView Example' }, 426dc2b55f3SEvan Bacon }, 427dc2b55f3SEvan Bacon { 428dc2b55f3SEvan Bacon getComponent() { 429dc2b55f3SEvan Bacon return optionalRequire(() => require('../screens/SharedElementScreen')); 430dc2b55f3SEvan Bacon }, 431dc2b55f3SEvan Bacon name: 'SharedElement', 432dc2b55f3SEvan Bacon }, 433*5d0ad635SKudo Chien { 434*5d0ad635SKudo Chien getComponent() { 435*5d0ad635SKudo Chien return optionalRequire(() => require('../screens/FlashListScreen')); 436*5d0ad635SKudo Chien }, 437*5d0ad635SKudo Chien name: 'FlashList', 438*5d0ad635SKudo Chien }, 439dc2b55f3SEvan Bacon]; 440dc2b55f3SEvan Bacon 44191d99453SEvan Baconfunction ExpoComponentsStackNavigator(props: { navigation: BottomTabNavigationProp<any> }) { 44291d99453SEvan Bacon return ( 44306642451SEvan Bacon <Stack.Navigator {...props} {...getStackConfig(props)}> 44491d99453SEvan Bacon <Stack.Screen 44591d99453SEvan Bacon name="ExpoComponents" 44691d99453SEvan Bacon options={{ title: Layout.isSmallDevice ? 'Expo SDK Components' : 'Components in Expo SDK' }} 44791d99453SEvan Bacon component={ExpoComponents} 44891d99453SEvan Bacon /> 449dc2b55f3SEvan Bacon {Screens.map(({ name, getComponent, options }) => ( 450dc2b55f3SEvan Bacon <Stack.Screen name={name} key={name} getComponent={getComponent} options={options ?? {}} /> 45191d99453SEvan Bacon ))} 45291d99453SEvan Bacon </Stack.Navigator> 45391d99453SEvan Bacon ); 45491d99453SEvan Bacon} 455ea08dda8SEvan Bacon 456ea08dda8SEvan Baconconst icon = ({ focused }: { focused: boolean }) => { 457e8f3dbaeSEvan Bacon return <TabIcon name="react" focused={focused} />; 458ea08dda8SEvan Bacon}; 45991d99453SEvan BaconExpoComponentsStackNavigator.navigationOptions = { 460e8f3dbaeSEvan Bacon title: 'Components', 46191d99453SEvan Bacon tabBarLabel: 'Components', 462ea08dda8SEvan Bacon tabBarIcon: icon, 463ea08dda8SEvan Bacon drawerIcon: icon, 46491d99453SEvan Bacon}; 46591d99453SEvan Baconexport default ExpoComponentsStackNavigator; 466