1 import ExpoModulesCore 2 3 internal enum ModuleOrientationLock: Int, Enumerable { 4 case allButUpsideDown = 0 5 case all = 1 6 case portrait = 2 7 case portraitUp = 3 8 case portraitDown = 4 9 case landscape = 5 10 case landscapeLeft = 6 11 case landscapeRight = 7 12 case other = 8 13 case unknown = 9 14 fromnull15 static func from(mask: UIInterfaceOrientationMask) -> ModuleOrientationLock { 16 switch mask { 17 case .allButUpsideDown: 18 return .allButUpsideDown 19 case .all: 20 return .all 21 case [.portrait, .portraitUpsideDown]: 22 return .portrait 23 case .portrait: 24 return .portraitUp 25 case .portraitUpsideDown: 26 return .portraitDown 27 case .landscape: 28 return .landscape 29 case .landscapeLeft: 30 return .landscapeLeft 31 case .landscapeRight: 32 return .landscapeRight 33 default: 34 return UIInterfaceOrientationMask.all.contains(mask) ? .other : .unknown 35 } 36 } 37 toInterfaceOrientationMasknull38 func toInterfaceOrientationMask() -> UIInterfaceOrientationMask { 39 switch self { 40 case .allButUpsideDown: 41 return .allButUpsideDown 42 case .all: 43 return .all 44 case .portrait: 45 return [.portrait, .portraitUpsideDown] 46 case .portraitUp: 47 return .portrait 48 case .portraitDown: 49 return .portraitUpsideDown 50 case .landscape: 51 return .landscape 52 case .landscapeLeft: 53 return .landscapeLeft 54 case .landscapeRight: 55 return .landscapeRight 56 default: 57 return [] 58 } 59 } 60 } 61