App.js 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // @flow
  2. import React, { Component, Fragment } from 'react';
  3. import {
  4. SafeAreaView,
  5. StatusBar,
  6. View,
  7. Text,
  8. TouchableOpacity,
  9. StyleSheet,
  10. ScrollView,
  11. } from 'react-native';
  12. import libPkg from 'react-native-view-shot/package.json';
  13. import { createAppContainer } from 'react-navigation';
  14. import { createStackNavigator } from 'react-navigation-stack';
  15. // To add a screen, import it and add it in screens
  16. import FullScreen from './Full';
  17. import BlurScreen from './Blur';
  18. import ViewshootScreen from './Viewshoot';
  19. import TransparencyScreen from './Transparency';
  20. import VideoScreen from './Video';
  21. import WebViewScreen from './WebView';
  22. import MapViewScreen from './MapView';
  23. import CanvasScreen from './Canvas';
  24. import GLReactV2Screen from './GLReactV2';
  25. import SVGUriScreen from './SVGUri';
  26. import ARTScreen from './ART';
  27. import FSScreen from './FS';
  28. import ModalScreen from './Modal';
  29. import OffscreenScreen from './Offscreen';
  30. import ElevationScreen from './Elevation';
  31. const screens = {
  32. Full: {
  33. screen: FullScreen,
  34. },
  35. Video: {
  36. screen: VideoScreen,
  37. },
  38. WebView: {
  39. screen: WebViewScreen,
  40. },
  41. SVGUri: {
  42. screen: SVGUriScreen,
  43. },
  44. ART: {
  45. screen: ARTScreen,
  46. },
  47. Blur: {
  48. screen: BlurScreen,
  49. },
  50. FS: {
  51. screen: FSScreen,
  52. },
  53. Canvas: {
  54. screen: CanvasScreen,
  55. },
  56. MapView: {
  57. screen: MapViewScreen,
  58. },
  59. GLReactV2: {
  60. screen: GLReactV2Screen,
  61. },
  62. Modal: {
  63. screen: ModalScreen,
  64. },
  65. Viewshoot: {
  66. screen: ViewshootScreen,
  67. },
  68. Transparency: {
  69. screen: TransparencyScreen,
  70. },
  71. Offscreen: {
  72. screen: OffscreenScreen,
  73. },
  74. Elevation: {
  75. screen: ElevationScreen,
  76. },
  77. };
  78. ///////////////////////////////////////////////////
  79. class HomeScreen extends Component {
  80. static navigationOptions = {
  81. title: 'react-native-view-shot ' + libPkg.version,
  82. };
  83. render() {
  84. const { navigation } = this.props;
  85. return (
  86. <Fragment>
  87. <StatusBar barStyle="dark-content" />
  88. <SafeAreaView>
  89. <ScrollView>
  90. {Object.keys(screens).map(key => (
  91. <TouchableOpacity key={key} onPress={() => navigation.navigate(key)}>
  92. <View style={styles.entry}>
  93. <Text style={styles.entryText}>
  94. {(screens[key].screen.navigationOptions &&
  95. screens[key].screen.navigationOptions.title) ||
  96. key}
  97. </Text>
  98. </View>
  99. </TouchableOpacity>
  100. ))}
  101. </ScrollView>
  102. </SafeAreaView>
  103. </Fragment>
  104. );
  105. }
  106. }
  107. const styles = StyleSheet.create({
  108. entry: {
  109. paddingVertical: 10,
  110. paddingHorizontal: 20,
  111. },
  112. entryText: {
  113. fontSize: 22,
  114. color: '#36f',
  115. },
  116. });
  117. const AppNavigator = createStackNavigator({
  118. Home: {
  119. screen: HomeScreen,
  120. },
  121. ...screens,
  122. });
  123. export default createAppContainer(AppNavigator);