diff --git a/Sources/OpenSwiftUICore/OpenGraph/Attribute/OGSearchOptions.swift b/Sources/OpenSwiftUICore/OpenGraph/Attribute/OGSearchOptions.swift new file mode 100644 index 000000000..e0398780d --- /dev/null +++ b/Sources/OpenSwiftUICore/OpenGraph/Attribute/OGSearchOptions.swift @@ -0,0 +1,12 @@ +// +// OGSearchOptions.swift +// OpenSwiftUICore + +import OpenGraphShims + +extension OGSearchOptions { + // FIXME + static var _2: OGSearchOptions { + .init(rawValue: 2) + } +} diff --git a/Sources/OpenSwiftUICore/View/CustomView.swift b/Sources/OpenSwiftUICore/View/CustomView.swift index 476f4edf7..f512fa6a4 100644 --- a/Sources/OpenSwiftUICore/View/CustomView.swift +++ b/Sources/OpenSwiftUICore/View/CustomView.swift @@ -2,12 +2,13 @@ // CustomView.swift // OpenSwiftUICore // -// Audited for iOS 18.0 // Status: Complete // ID: 9F92ACD17B554E8AB7D29ABB1E796415 (SwiftUI) // ID: CE1D93D8ECBBEB5FE2E32E69A123E7CB (SwiftUICore) -import OpenGraphShims +package import OpenGraphShims + +// MARK: - View default implmementation [6.0.87] @available(OpenSwiftUI_v1_0, *) extension View { @@ -60,3 +61,55 @@ extension View { } } } + +// MARK: - ViewBodyAccessor [6.0.87] + +package struct ViewBodyAccessor: BodyAccessor where V: View { + package init() {} + + package func updateBody(of container: Container, changed: Bool) { + guard changed else { + return + } + setBody { + container.body + } + } + + package typealias Body = V.Body + + package typealias Container = V +} + +// MARK: - ViewBodyAccessor [6.4.41] + +package struct ViewValuePredicate where V: View { + package var view: V? + + package init(view: V?) { + self.view = view + } + + package mutating func apply(to ident: AnyAttribute) -> Bool { + if let rule = ident._bodyType as? BodyAccessorRule.Type { + view = rule.value(as: V.self, attribute: ident) + } + return view != nil + } +} + +// MARK: - ViewBodyAccessor [6.4.41] + +package struct ViewStatePredicate where V: View { + package var state: Binding? + + package init() {} + + package mutating func apply(to ident: AnyAttribute) -> Bool { + if let rule = ident._bodyType as? BodyAccessorRule.Type, + let buffer = rule.buffer(as: V.self, attribute: ident) { + state = buffer.getState(type: S.self) + } + return state != nil + } +} diff --git a/Sources/OpenSwiftUICore/View/ViewBodyAccessor.swift b/Sources/OpenSwiftUICore/View/ViewBodyAccessor.swift deleted file mode 100644 index 5b7a3a766..000000000 --- a/Sources/OpenSwiftUICore/View/ViewBodyAccessor.swift +++ /dev/null @@ -1,19 +0,0 @@ -// -// ViewBodyAccessor.swift -// OpenSwiftUI -// -// Audited for iOS 15.5 -// Status: Complete - -struct ViewBodyAccessor: BodyAccessor { - typealias Body = Container.Body - - func updateBody(of container: Container, changed: Bool) { - guard changed else { - return - } - setBody { - container.body - } - } -}