* translation expo module * add `onClose` and `onReplacementAction` * rm onReplacementAction * make all props published * make translation api available globally w/o wrapper (#4110) * conditionally import the translation module * only use native translation if language is probably supported * open native translation via dropdown menu --------- Co-authored-by: Hailey <me@haileyok.com> Co-authored-by: Dan Abramov <dan.abramov@gmail.com>
31 lines
671 B
Swift
31 lines
671 B
Swift
import SwiftUI
|
|
// conditionally import the Translation module
|
|
#if canImport(Translation)
|
|
import Translation
|
|
#endif
|
|
|
|
struct TranslateView: View {
|
|
@ObservedObject var state = TranslateViewState.shared
|
|
|
|
var body: some View {
|
|
if #available(iOS 17.4, *) {
|
|
VStack {
|
|
UIViewRepresentableWrapper(view: UIView(frame: .zero))
|
|
}
|
|
.translationPresentation(
|
|
isPresented: $state.isPresented,
|
|
text: state.text
|
|
)
|
|
}
|
|
}
|
|
}
|
|
|
|
struct UIViewRepresentableWrapper: UIViewRepresentable {
|
|
let view: UIView
|
|
|
|
func makeUIView(context: Context) -> UIView {
|
|
return view
|
|
}
|
|
|
|
func updateUIView(_ uiView: UIView, context: Context) {}
|
|
}
|