From 1092e9effac9aee8d695e865c36229e73968d0b0 Mon Sep 17 00:00:00 2001 From: Kyle Date: Sat, 21 Jun 2025 19:34:51 +0800 Subject: [PATCH] Update CustomView --- .../OpenGraph/Attribute/OGSearchOptions.swift | 12 ++++ Sources/OpenSwiftUICore/View/CustomView.swift | 57 ++++++++++++++++++- .../View/ViewBodyAccessor.swift | 19 ------- 3 files changed, 67 insertions(+), 21 deletions(-) create mode 100644 Sources/OpenSwiftUICore/OpenGraph/Attribute/OGSearchOptions.swift delete mode 100644 Sources/OpenSwiftUICore/View/ViewBodyAccessor.swift 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 - } - } -}