This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public protocol DynamicProperties: AnyObject { | |
subscript<T>(dynamic key: String) -> T? { get set } | |
} | |
private extension String { | |
var unsafePointer: UnsafeRawPointer { | |
return UnsafeRawPointer(bitPattern: hashValue)! | |
} | |
} | |
extension DynamicProperties { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import Observation | |
public protocol _Observable: Observable { | |
nonisolated | |
func _access<Member>(keyPath: KeyPath<Self, Member>) | |
nonisolated | |
func _withMutation<Member, MutationResult>( | |
keyPath: KeyPath<Self, Member>, | |
_ mutation: () throws -> MutationResult |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@propertyWrapper | |
public struct AllowDecodingFailure<T: Codable>: Codable { | |
public var wrappedValue: T? | |
public var error: Error? | |
public var projectedValue: AllowDecodingFailure<T> { self } | |
public init(wrappedValue: T?) { | |
self.wrappedValue = wrappedValue | |
self.error = nil | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@propertyWrapper | |
public struct AllowDecodingFailures<T: Codable>: Codable { | |
public var wrappedValue: [T] | |
public var errors: [Error] | |
public var projectedValue: AllowDecodingFailures<T> { self } | |
private struct Empty: Decodable { } | |
public init(wrappedValue: [T]) { | |
self.init(wrappedValue: wrappedValue, errors: []) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@propertyWrapper @MainActor public struct AsyncPublished<Value> { | |
public typealias AsyncAction = (Value) async throws -> Void | |
private class State { | |
var wrappedValue: Value | |
var isWorking: Bool = false | |
var current: Task<Void, Never>? | |
var action: AsyncAction = { _ in fatalError("Please configure action in parent object") } | |
init(wrappedValue: Value) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public protocol AnalyticsReducer { | |
associatedtype State | |
associatedtype Action | |
func analytics(before: State, after: State, action: Action) -> Effect<Action> | |
} | |
public struct _AnalyticsReducer<Base: Reducer, Analytics: AnalyticsReducer>: Reducer where Analytics.State == Base.State, Analytics.Action == Base.Action { | |
@usableFromInline | |
let base: Base |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct ReadSpacing<Content: View>: View { | |
@State private var spacing: CGFloat = 0 | |
@Binding private var outsideSpacing: CGFloat? | |
private let content: (CGFloat) -> Content | |
init(@ViewBuilder content: @escaping (CGFloat) -> Content) { | |
self._outsideSpacing = .constant(nil) | |
self.content = content | |
} | |
init(into spacing: Binding<CGFloat>, @ViewBuilder content: @escaping () -> Content) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// MARK: - TCAView | |
public protocol TCAView: View where Body == WithViewStore<ScopedState, ScopedAction, Content> { | |
associatedtype ViewState | |
associatedtype ViewAction | |
associatedtype ScopedState | |
associatedtype ScopedAction | |
associatedtype Content |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct Invalidation { | |
static let display = Invalidation { $0.setNeedsDisplay() } | |
static let layout = Invalidation { $0.setNeedsLayout() } | |
let action: (UIView) -> Void | |
} | |
@propertyWrapper | |
struct Invalidating<Value> { | |
private let invalidations: [Invalidation] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
struct Parent: View { | |
@State private var foo = "foo" { | |
didSet { print("Parent", foo) } | |
} | |
var body: some View { | |
VStack { | |
Inner(value: foo) | |
Button("Parent Double") { |
NewerOlder