ssap_app/node_modules/expo-web-browser/ios/WebBrowserOptions.swift

111 lines
2.3 KiB
Swift

// Copyright 2022-present 650 Industries. All rights reserved.
#if os(iOS)
import SafariServices
#endif
import ExpoModulesCore
struct WebBrowserOptions: Record {
@Field
var readerMode: Bool = false
@Field
var enableBarCollapsing: Bool = false
@Field
var dismissButtonStyle: DismissButtonStyle = .done
@Field
var toolbarColor: UIColor?
@Field
var controlsColor: UIColor?
// Defaults to .overFullScreen to keep backwards compatibility
@Field
var presentationStyle: PresentationStyle = .overFullScreen
}
struct AuthSessionOptions: Record {
@Field
var preferEphemeralSession: Bool = false
}
enum DismissButtonStyle: String, Enumerable {
case done
case close
case cancel
#if os(iOS)
func toSafariDismissButtonStyle() -> SFSafariViewController.DismissButtonStyle {
switch self {
case .done:
return .done
case .close:
return .close
case .cancel:
return .cancel
}
}
#endif
}
internal enum PresentationStyle: String, Enumerable {
case fullScreen
case pageSheet
case formSheet
case currentContext
case overFullScreen
case overCurrentContext
case popover
case none
case automatic
#if os(iOS)
func toPresentationStyle() -> UIModalPresentationStyle {
switch self {
case .fullScreen:
return .fullScreen
case .pageSheet:
return .pageSheet
case .formSheet:
return .formSheet
case .currentContext:
return .currentContext
case .overFullScreen:
return .overFullScreen
case .overCurrentContext:
return .overCurrentContext
case .popover:
return .popover
case .none:
return .none
case .automatic:
return .automatic
}
}
#else
func toContentRect() -> NSRect {
switch self {
case .fullScreen, .overFullScreen:
if let screenFrame = NSScreen.main?.frame {
return screenFrame
} else {
return NSRect(x: 0, y: 0, width: 1440, height: 900)
}
case .pageSheet:
return NSRect(x: 0, y: 0, width: 1000, height: 700)
case .formSheet:
return NSRect(x: 0, y: 0, width: 600, height: 400)
case .popover:
return NSRect(x: 0, y: 0, width: 300, height: 200)
case .automatic, .none, .currentContext, .overCurrentContext:
return NSRect(x: 0, y: 0, width: 1200, height: 800)
}
}
#endif
}