-
Notifications
You must be signed in to change notification settings - Fork 27
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
7 changed files
with
142 additions
and
4 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
// | ||
// ForEach.swift | ||
// OpenSwiftUI | ||
// | ||
// Audited for RELEASE_2021 | ||
// Status: WIP | ||
|
||
/// A structure that computes views on demand from an underlying collection of | ||
/// identified data. | ||
/// | ||
/// Use `ForEach` to provide views based on a | ||
/// [RandomAccessCollection](https://developer.apple.com/documentation/swift/randomaccesscollection) | ||
/// of some data type. Either the collection's elements must conform to | ||
/// [Identifiable](https://developer.apple.com/documentation/swift/identifiable) or you | ||
/// need to provide an `id` parameter to the `ForEach` initializer. | ||
/// | ||
/// The following example creates a `NamedFont` type that conforms to | ||
/// [Identifiable](https://developer.apple.com/documentation/swift/identifiable), and an | ||
/// array of this type called `namedFonts`. A `ForEach` instance iterates | ||
/// over the array, producing new ``Text`` instances that display examples | ||
/// of each OpenSwiftUI ``Font`` style provided in the array. | ||
/// | ||
/// private struct NamedFont: Identifiable { | ||
/// let name: String | ||
/// let font: Font | ||
/// var id: String { name } | ||
/// } | ||
/// | ||
/// private let namedFonts: [NamedFont] = [ | ||
/// NamedFont(name: "Large Title", font: .largeTitle), | ||
/// NamedFont(name: "Title", font: .title), | ||
/// NamedFont(name: "Headline", font: .headline), | ||
/// NamedFont(name: "Body", font: .body), | ||
/// NamedFont(name: "Caption", font: .caption) | ||
/// ] | ||
/// | ||
/// var body: some View { | ||
/// ForEach(namedFonts) { namedFont in | ||
/// Text(namedFont.name) | ||
/// .font(namedFont.font) | ||
/// } | ||
/// } | ||
/// | ||
/// ![A vertically arranged stack of labels showing various standard fonts, | ||
/// such as Large Title and Headline.](OpenSwiftUI-ForEach-fonts.png) | ||
public struct ForEach<Data, ID, Content> where Data: RandomAccessCollection, ID: Hashable { | ||
|
||
/// The collection of underlying identified data that OpenSwiftUI uses to create | ||
/// views dynamically. | ||
public var data: Data | ||
|
||
/// A function to create content on demand using the underlying data. | ||
public var content: (Data.Element) -> Content | ||
} |
65 changes: 64 additions & 1 deletion
65
Sources/OpenSwiftUI/Core/View/VariadicView/VariadicView_Children.swift
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,69 @@ | ||
// TODO | ||
// | ||
// VariadicView_Children.swift | ||
// OpenSwiftUI | ||
// | ||
// Audited for RELEASE_2021 | ||
// Status: TODO | ||
// ID: 52A2FFECFBCF37BFFEED558E33EBD1E3 | ||
|
||
internal import OpenGraphShims | ||
|
||
/// An ad hoc collection of the children of a variadic view. | ||
public struct _VariadicView_Children { | ||
var list: ViewList | ||
var contentSubgraph: OGSubgraph | ||
} | ||
|
||
extension _VariadicView_Children: RandomAccessCollection { | ||
public struct Element: PrimitiveView, UnaryView, Identifiable { | ||
|
||
// var view: _ViewList_View | ||
var traits: ViewTraitCollection | ||
|
||
public var id: AnyHashable { | ||
// view.viewID | ||
fatalError("TODO") | ||
|
||
} | ||
public func id<ID>(as _: ID.Type = ID.self) -> ID? where ID : Hashable { | ||
fatalError("TODO") | ||
} | ||
|
||
public subscript<Trait: _ViewTraitKey>(key: Trait.Type) -> Trait.Value { | ||
get { traits[key] } | ||
set { traits[key] = newValue } | ||
} | ||
|
||
public static func _makeView(view: _GraphValue<_VariadicView_Children.Element>, inputs: _ViewInputs) -> _ViewOutputs { | ||
fatalError("TODO") | ||
} | ||
} | ||
|
||
public var startIndex: Int { | ||
fatalError("TODO") | ||
|
||
// get | ||
} | ||
public var endIndex: Int { | ||
fatalError("TODO") | ||
|
||
// get | ||
} | ||
public subscript(index: Int) -> _VariadicView_Children.Element { | ||
fatalError("TODO") | ||
|
||
// get | ||
} | ||
} | ||
|
||
extension _VariadicView_Children { | ||
private struct Child: Rule, AsyncAttribute { | ||
typealias Value = ForEach<_VariadicView_Children, AnyHashable, _VariadicView_Children.Element> | ||
|
||
@Attribute var children: _VariadicView_Children | ||
|
||
var value: Value { | ||
fatalError("TODO") | ||
} | ||
} | ||
} |
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// ID: 70E71091E926A1B09B75AAEB38F5AA3F | ||
|
||
struct _ViewList_ID { | ||
var _index: Int32 | ||
var implicitID: Int32 | ||
private var explicitIDs: [Explicit] | ||
} | ||
|
||
extension _ViewList_ID { | ||
private struct Explicit { | ||
} | ||
} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
internal import OpenGraphShims | ||
|
||
struct _ViewList_View { | ||
var elements: _ViewList_Elements | ||
var id: _ViewList_ID | ||
var index: Int | ||
var count: Int | ||
var contentSubgraph: OGSubgraph | ||
} |
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