Privacy settings

This commit is contained in:
Isaac
2024-01-12 22:42:18 +04:00
parent 5b7d4984ac
commit eeba8a7db1
70 changed files with 2586 additions and 521 deletions

View File

@@ -1,14 +1,22 @@
import Foundation
import UIKit
public enum VStackAlignment {
case left
case center
case right
}
public final class VStack<ChildEnvironment: Equatable>: CombinedComponent {
public typealias EnvironmentType = ChildEnvironment
private let items: [AnyComponentWithIdentity<ChildEnvironment>]
private let alignment: VStackAlignment
private let spacing: CGFloat
public init(_ items: [AnyComponentWithIdentity<ChildEnvironment>], spacing: CGFloat) {
public init(_ items: [AnyComponentWithIdentity<ChildEnvironment>], alignment: VStackAlignment = .center, spacing: CGFloat) {
self.items = items
self.alignment = alignment
self.spacing = spacing
}
@@ -16,6 +24,9 @@ public final class VStack<ChildEnvironment: Equatable>: CombinedComponent {
if lhs.items != rhs.items {
return false
}
if lhs.alignment != rhs.alignment {
return false
}
if lhs.spacing != rhs.spacing {
return false
}
@@ -45,8 +56,17 @@ public final class VStack<ChildEnvironment: Equatable>: CombinedComponent {
var nextY = 0.0
for child in updatedChildren {
let childFrame: CGRect
switch context.component.alignment {
case .left:
childFrame = CGRect(origin: CGPoint(x: 0.0, y: nextY), size: child.size)
case .center:
childFrame = CGRect(origin: CGPoint(x: floor((size.width - child.size.width) * 0.5), y: nextY), size: child.size)
case .right:
childFrame = CGRect(origin: CGPoint(x: size.width - child.size.width, y: nextY), size: child.size)
}
context.add(child
.position(child.size.centered(in: CGRect(origin: CGPoint(x: floor((size.width - child.size.width) * 0.5), y: nextY), size: child.size)).center)
.position(childFrame.center)
.appear(.default(scale: true, alpha: true))
.disappear(.default(scale: true, alpha: true))
)