1import React from 'react';
2import ComponentListScreen from './ComponentListScreen';
3import { Layout } from '../constants';
4import { Screens } from '../navigation/ExpoComponents';
5
6export default class ExpoComponentsScreen extends React.Component {
7  static path = '';
8
9  static navigationOptions = {
10    title: Layout.isSmallDevice ? 'Expo SDK Components' : 'Components in Expo SDK',
11  };
12
13  render() {
14    // @ts-ignore
15    return <ComponentListScreen apis={this._getApis()} tabName="ExpoComponents" />;
16  }
17
18  _getApis = () => {
19    const screens = [
20      'AdMob',
21      'BarCodeScanner',
22      'BlurView',
23      'Camera',
24      'FacebookAds',
25      'GestureHandlerList',
26      'GestureHandlerPinch',
27      'GestureHandlerSwipeable',
28      'Gif',
29      'GL',
30      'LinearGradient',
31      'Lottie',
32      'Maps',
33      'ReanimatedImagePreview',
34      'ReanimatedProgress',
35      'Screens',
36      'SVG',
37      'Video',
38      'WebView',
39    ];
40    return screens
41      .map(name => ({ name, isAvailable: !!Screens[name] }))
42      .sort((a, b) => {
43        if (a.isAvailable !== b.isAvailable) {
44          if (a.isAvailable) {
45            return -1;
46          }
47          return 1;
48        }
49        return 0;
50      });
51  }
52}
53