hunk.code_window:     "android": "expo start --android",
       "ios": "expo start --ios",
       "web": "expo start --web"
     },
     "dependencies": {
       "expo": "~45.0.0-beta.4",
       "expo-status-bar": "~1.3.0",
       "react": "18.0.0",
       "react-dom": "18.0.0",
       "react-native": "0.69.1",
       "react-native-web": "0.18.1"
     },
     "devDependencies": {
       "@babel/core": "^7.12.9",
  
hunk.labels: keep keep keep keep keep replace replace replace replace replace replace keep keep keep
hunk.after_edit:     "expo": "~46.0.0-alpha.0",
       "expo-status-bar": "~1.4.0",
       "react": "17.0.2",
       "react-dom": "17.0.2",
       "react-native": "0.68.2",
       "react-native-web": "0.17.7"
  
hunk.file_path: templates/expo-template-blank-typescript/package.json
hunk.type: replace
file: //
  //  ABI44_0_0RNRotationHandler.m
  //  ABI44_0_0RNGestureHandler
  //
  //  Created by Krzysztof Magiera on 12/10/2017.
  //  Copyright © 2017 Software Mansion. All rights reserved.
  //
  
  #import "ABI44_0_0RNRotationHandler.h"
  
  @interface ABI44_0_0RNBetterRotationRecognizer : UIRotationGestureRecognizer
  
  - (id)initWithGestureHandler:(ABI44_0_0RNGestureHandler*)gestureHandler;
  
  @end
  
  @implementation ABI44_0_0RNBetterRotationRecognizer {
    __weak ABI44_0_0RNGestureHandler *_gestureHandler;
  }
  
  - (id)initWithGestureHandler:(ABI44_0_0RNGestureHandler *)gestureHandler
  {
    if ((self = [super initWithTarget:self action:@selector(handleGesture:)])) {
      _gestureHandler = gestureHandler;
    }
    return self;
  }
  
  - (void)handleGesture:(UIGestureRecognizer *)recognizer
  {
    if (self.state == UIGestureRecognizerStateBegan) {
      self.rotation = 0;
    }
    [_gestureHandler handleGesture:recognizer];
  }
  
  
  - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
  {
    [super touchesBegan:touches withEvent:event];
    [_gestureHandler.pointerTracker touchesBegan:touches withEvent:event];
  }
  
  - (void)touchesMoved:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
  {
    [super touchesMoved:touches withEvent:event];
    [_gestureHandler.pointerTracker touchesMoved:touches withEvent:event];
  }
  
  - (void)touchesEnded:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
  {
    [super touchesEnded:touches withEvent:event];
    [_gestureHandler.pointerTracker touchesEnded:touches withEvent:event];
  }
  
  - (void)touchesCancelled:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
  {
    [super touchesCancelled:touches withEvent:event];
    [_gestureHandler.pointerTracker touchesCancelled:touches withEvent:event];
  }
  
  - (void)reset
  {
    [_gestureHandler.pointerTracker reset];
    [super reset];
  }
  
  @end
  
  @implementation ABI44_0_0RNRotationGestureHandler
  
  - (instancetype)initWithTag:(NSNumber *)tag
  {
      if ((self = [super initWithTag:tag])) {
          #if !TARGET_OS_TV
          _recognizer = [[ABI44_0_0RNBetterRotationRecognizer alloc] initWithGestureHandler:self];
          #endif
      }
      return self;
  }
  
  #if !TARGET_OS_TV
  - (ABI44_0_0RNGestureHandlerEventExtraData *)eventExtraData:(UIRotationGestureRecognizer *)recognizer
  {
      return [ABI44_0_0RNGestureHandlerEventExtraData
              forRotation:recognizer.rotation
              withAnchorPoint:[recognizer locationInView:recognizer.view]
              withVelocity:recognizer.velocity
              withNumberOfTouches:recognizer.numberOfTouches];
  }
  #endif
  
  @end
  
  