hunk.code_window:   Text,
     View,
   } from 'react-native';
   import FadeIn from '@expo/react-native-fade-in-image';
   export default class BrowserScreenLoading extends React.Component {
     render() {
       const { manifest, loadingStatus } = this.props;
  
hunk.labels: keep keep keep keep add keep keep keep keep
hunk.after_edit: import { Constants } from 'expo';
  
hunk.file_path: js/Browser/BrowserScreenLoading.js
hunk.type: add
file: /**
   * Copyright (c) 2015-present, Facebook, Inc.
   * All rights reserved.
   *
   * This source code is licensed under the BSD-style license found in the
   * LICENSE file in the root directory of this source tree. An additional grant
   * of patent rights can be found in the PATENTS file in the same directory.
   */
  
  #import "ABI20_0_0RCTPicker.h"
  
  #import "ABI20_0_0RCTConvert.h"
  #import "ABI20_0_0RCTUtils.h"
  
  @interface ABI20_0_0RCTPicker() <UIPickerViewDataSource, UIPickerViewDelegate>
  @end
  
  @implementation ABI20_0_0RCTPicker
  
  - (instancetype)initWithFrame:(CGRect)frame
  {
    if ((self = [super initWithFrame:frame])) {
      _color = [UIColor blackColor];
      _font = [UIFont systemFontOfSize:21]; // TODO: selected title default should be 23.5
      _selectedIndex = NSNotFound;
      _textAlign = NSTextAlignmentCenter;
      self.delegate = self;
    }
    return self;
  }
  
  ABI20_0_0RCT_NOT_IMPLEMENTED(- (instancetype)initWithCoder:(NSCoder *)aDecoder)
  
  - (void)setItems:(NSArray<NSDictionary *> *)items
  {
    _items = [items copy];
    [self setNeedsLayout];
  }
  
  - (void)setSelectedIndex:(NSInteger)selectedIndex
  {
    if (_selectedIndex != selectedIndex) {
      BOOL animated = _selectedIndex != NSNotFound; // Don't animate the initial value
      _selectedIndex = selectedIndex;
      dispatch_async(dispatch_get_main_queue(), ^{
        [self selectRow:selectedIndex inComponent:0 animated:animated];
      });
    }
  }
  
  #pragma mark - UIPickerViewDataSource protocol
  
  - (NSInteger)numberOfComponentsInPickerView:(__unused UIPickerView *)pickerView
  {
    return 1;
  }
  
  - (NSInteger)pickerView:(__unused UIPickerView *)pickerView
  numberOfRowsInComponent:(__unused NSInteger)component
  {
    return _items.count;
  }
  
  #pragma mark - UIPickerViewDelegate methods
  
  - (NSString *)pickerView:(__unused UIPickerView *)pickerView
               titleForRow:(NSInteger)row
              forComponent:(__unused NSInteger)component
  {
    return [ABI20_0_0RCTConvert NSString:_items[row][@"label"]];
  }
  
  - (UIView *)pickerView:(UIPickerView *)pickerView
              viewForRow:(NSInteger)row
            forComponent:(NSInteger)component
             reusingView:(UILabel *)label
  {
    if (!label) {
      label = [[UILabel alloc] initWithFrame:(CGRect){
        CGPointZero,
        {
          [pickerView rowSizeForComponent:component].width,
          [pickerView rowSizeForComponent:component].height,
        }
      }];
    }
  
    label.font = _font;
  
    label.textColor = [ABI20_0_0RCTConvert UIColor:_items[row][@"textColor"]] ?: _color;
  
    label.textAlignment = _textAlign;
    label.text = [self pickerView:pickerView titleForRow:row forComponent:component];
    return label;
  }
  
  - (void)pickerView:(__unused UIPickerView *)pickerView
        didSelectRow:(NSInteger)row inComponent:(__unused NSInteger)component
  {
    _selectedIndex = row;
    if (_onChange && _items.count > (NSUInteger)row) {
      _onChange(@{
        @"newIndex": @(row),
        @"newValue": ABI20_0_0RCTNullIfNil(_items[row][@"value"]),
      });
    }
  }
  
  @end
  