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