/* * Copyright (c) Facebook, Inc. and its affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import "RCTLogBoxView.h" #import #import @implementation RCTLogBoxView { RCTSurface *_surface; } - (instancetype)initWithFrame:(CGRect)frame { if ((self = [super initWithFrame:frame])) { self.windowLevel = UIWindowLevelStatusBar - 1; self.backgroundColor = [UIColor clearColor]; } return self; } - (void)createRootViewController:(UIView *)view { UIViewController *_rootViewController = [UIViewController new]; _rootViewController.view = view; _rootViewController.view.backgroundColor = [UIColor clearColor]; _rootViewController.modalPresentationStyle = UIModalPresentationFullScreen; self.rootViewController = _rootViewController; } - (instancetype)initWithFrame:(CGRect)frame bridge:(RCTBridge *)bridge { if ((self = [super initWithFrame:frame])) { self.windowLevel = UIWindowLevelStatusBar - 1; self.backgroundColor = [UIColor clearColor]; _surface = [[RCTSurface alloc] initWithBridge:bridge moduleName:@"LogBox" initialProperties:@{}]; [_surface start]; [_surface setSize:frame.size]; if (![_surface synchronouslyWaitForStage:RCTSurfaceStageSurfaceDidInitialMounting timeout:1]) { RCTLogInfo(@"Failed to mount LogBox within 1s"); } [self createRootViewController:(UIView *)_surface.view]; } return self; } - (void)dealloc { [RCTSharedApplication().delegate.window makeKeyWindow]; } - (void)show { [self becomeFirstResponder]; [self makeKeyAndVisible]; } @end