|  | @@ -55,23 +55,23 @@ static NSString* const setDefaultOptions	= @"setDefaultOptions";
 | 
	
		
			
			| 55 | 55 |  
 | 
	
		
			
			| 56 | 56 |  - (void)setRoot:(NSDictionary*)layout commandId:(NSString*)commandId completion:(RNNTransitionCompletionBlock)completion {
 | 
	
		
			
			| 57 | 57 |  	[self assertReady];
 | 
	
		
			
			| 58 |  | -
 | 
	
		
			
			|  | 58 | +	
 | 
	
		
			
			| 59 | 59 |  	if (@available(iOS 9, *)) {
 | 
	
		
			
			| 60 |  | -	    if(_controllerFactory.defaultOptions.layout.direction.hasValue) {
 | 
	
		
			
			| 61 |  | -	        if ([_controllerFactory.defaultOptions.layout.direction.get isEqualToString:@"rtl"]) {
 | 
	
		
			
			| 62 |  | -                [[RCTI18nUtil sharedInstance] allowRTL:YES];
 | 
	
		
			
			| 63 |  | -                [[RCTI18nUtil sharedInstance] forceRTL:YES];
 | 
	
		
			
			| 64 |  | -                [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
 | 
	
		
			
			| 65 |  | -                [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
 | 
	
		
			
			| 66 |  | -            } else {
 | 
	
		
			
			| 67 |  | -                [[RCTI18nUtil sharedInstance] allowRTL:NO];
 | 
	
		
			
			| 68 |  | -                [[RCTI18nUtil sharedInstance] forceRTL:NO];
 | 
	
		
			
			| 69 |  | -                [[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight];
 | 
	
		
			
			| 70 |  | -                [[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight];
 | 
	
		
			
			| 71 |  | -            }
 | 
	
		
			
			| 72 |  | -	    }
 | 
	
		
			
			|  | 60 | +		if(_controllerFactory.defaultOptions.layout.direction.hasValue) {
 | 
	
		
			
			|  | 61 | +			if ([_controllerFactory.defaultOptions.layout.direction.get isEqualToString:@"rtl"]) {
 | 
	
		
			
			|  | 62 | +				[[RCTI18nUtil sharedInstance] allowRTL:YES];
 | 
	
		
			
			|  | 63 | +				[[RCTI18nUtil sharedInstance] forceRTL:YES];
 | 
	
		
			
			|  | 64 | +				[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
 | 
	
		
			
			|  | 65 | +				[[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceRightToLeft];
 | 
	
		
			
			|  | 66 | +			} else {
 | 
	
		
			
			|  | 67 | +				[[RCTI18nUtil sharedInstance] allowRTL:NO];
 | 
	
		
			
			|  | 68 | +				[[RCTI18nUtil sharedInstance] forceRTL:NO];
 | 
	
		
			
			|  | 69 | +				[[UIView appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight];
 | 
	
		
			
			|  | 70 | +				[[UINavigationBar appearance] setSemanticContentAttribute:UISemanticContentAttributeForceLeftToRight];
 | 
	
		
			
			|  | 71 | +			}
 | 
	
		
			
			|  | 72 | +		}
 | 
	
		
			
			| 73 | 73 |  	}
 | 
	
		
			
			| 74 |  | -
 | 
	
		
			
			|  | 74 | +	
 | 
	
		
			
			| 75 | 75 |  	[_modalManager dismissAllModalsAnimated:NO];
 | 
	
		
			
			| 76 | 76 |  	
 | 
	
		
			
			| 77 | 77 |  	UIViewController *vc = [_controllerFactory createLayout:layout[@"root"]];
 | 
	
	
		
			
			|  | @@ -171,11 +171,11 @@ static NSString* const setDefaultOptions	= @"setDefaultOptions";
 | 
	
		
			
			| 171 | 171 |  - (void)setStackRoot:(NSString*)componentId commandId:(NSString*)commandId children:(NSArray*)children completion:(RNNTransitionCompletionBlock)completion rejection:(RCTPromiseRejectBlock)rejection {
 | 
	
		
			
			| 172 | 172 |  	[self assertReady];
 | 
	
		
			
			| 173 | 173 |  	
 | 
	
		
			
			| 174 |  | - 	NSArray *childViewControllers = [_controllerFactory createChildrenLayout:children];
 | 
	
		
			
			|  | 174 | +	NSArray<UIViewController *> *childViewControllers = [_controllerFactory createChildrenLayout:children];
 | 
	
		
			
			| 175 | 175 |  	for (UIViewController<RNNLayoutProtocol>* viewController in childViewControllers) {
 | 
	
		
			
			| 176 | 176 |  		[viewController renderTreeAndWait:NO perform:nil];
 | 
	
		
			
			| 177 | 177 |  	}
 | 
	
		
			
			| 178 |  | -	RNNNavigationOptions* options = [childViewControllers.lastObject getCurrentChild].resolveOptions;
 | 
	
		
			
			|  | 178 | +	RNNNavigationOptions* options = childViewControllers.lastObject.resolveOptions;
 | 
	
		
			
			| 179 | 179 |  	UIViewController *fromVC = [RNNLayoutManager findComponentForId:componentId];
 | 
	
		
			
			| 180 | 180 |  	__weak typeof(RNNEventEmitter*) weakEventEmitter = _eventEmitter;
 | 
	
		
			
			| 181 | 181 |  	[_stackManager setStackChildren:childViewControllers fromViewController:fromVC animated:[options.animations.setStackRoot.enable getWithDefaultValue:YES] completion:^{
 | 
	
	
		
			
			|  | @@ -236,7 +236,7 @@ static NSString* const setDefaultOptions	= @"setDefaultOptions";
 | 
	
		
			
			| 236 | 236 |  	}];
 | 
	
		
			
			| 237 | 237 |  	
 | 
	
		
			
			| 238 | 238 |  	[_stackManager popToRoot:vc animated:[vc.resolveOptions.animations.pop.enable getWithDefaultValue:YES] completion:^(NSArray *poppedViewControllers) {
 | 
	
		
			
			| 239 |  | -
 | 
	
		
			
			|  | 239 | +		
 | 
	
		
			
			| 240 | 240 |  	} rejection:^(NSString *code, NSString *message, NSError *error) {
 | 
	
		
			
			| 241 | 241 |  		
 | 
	
		
			
			| 242 | 242 |  	}];
 | 
	
	
		
			
			|  | @@ -269,7 +269,7 @@ static NSString* const setDefaultOptions	= @"setDefaultOptions";
 | 
	
		
			
			| 269 | 269 |  	
 | 
	
		
			
			| 270 | 270 |  	RNNNavigationOptions *options = [[RNNNavigationOptions alloc] initWithDict:mergeOptions];
 | 
	
		
			
			| 271 | 271 |  	[modalToDismiss.getCurrentChild overrideOptions:options];
 | 
	
		
			
			| 272 |  | -		
 | 
	
		
			
			|  | 272 | +	
 | 
	
		
			
			| 273 | 273 |  	[CATransaction begin];
 | 
	
		
			
			| 274 | 274 |  	[CATransaction setCompletionBlock:^{
 | 
	
		
			
			| 275 | 275 |  		[_eventEmitter sendOnNavigationCommandCompletion:dismissModal commandId:commandId params:@{@"componentId": componentId}];
 |