39 lines
1.1 KiB
Swift
39 lines
1.1 KiB
Swift
import ExpoModulesCore
|
|
|
|
public class ExpoSelectableTextModule: Module {
|
|
public func definition() -> ModuleDefinition {
|
|
Name("ExpoSelectableText")
|
|
|
|
View(ExpoSelectableTextView.self) {
|
|
Events("onTextPress", "onTextLongPress", "onTextLayout")
|
|
|
|
Prop("segments") { (view: ExpoSelectableTextView, prop: String) in
|
|
// Convert the JSON to segments
|
|
if let data = prop.data(using: .utf8) {
|
|
print("first")
|
|
if let segments = try? JSONDecoder().decode(TextSegments.self, from: data) {
|
|
print("second")
|
|
view.segments = segments.segments
|
|
}
|
|
}
|
|
}
|
|
|
|
Prop("rootStyle") { (view: ExpoSelectableTextView, prop: String) in
|
|
if let data = prop.data(using: .utf8) {
|
|
if let style = try? JSONDecoder().decode(TextStyle.self, from: data) {
|
|
view.style = style
|
|
}
|
|
}
|
|
}
|
|
|
|
Prop("selectable") { (view: ExpoSelectableTextView, prop: Bool) in
|
|
view.textView.isSelectable = prop
|
|
}
|
|
|
|
Prop("children") { (view: ExpoSelectableTextView, prop: JavaScriptValue) in
|
|
print(prop)
|
|
}
|
|
}
|
|
}
|
|
}
|