@@ -2,48 +2,97 @@ import SwiftUI
2
2
3
3
extension Grid {
4
4
public init < Data, Item> ( _ data: Data , @ViewBuilder item: @escaping ( Data . Element ) -> Item ) where Content == ForEach < Data , Data . Element . ID , Item > , Data : RandomAccessCollection , Item : View , Data. Element : Identifiable {
5
- self . items = data. map ( { AnyView ( item ( $0) ) } )
5
+ self . items = data. map { GridItem ( view : AnyView ( item ( $0) ) , id : AnyHashable ( $0 . id ) ) }
6
6
}
7
7
8
8
public init < Data, ID, Item> ( _ data: Data , id: KeyPath < Data . Element , ID > , @ViewBuilder item: @escaping ( Data . Element ) -> Item ) where Content == ForEach < Data , ID , Item > , Data : RandomAccessCollection , ID : Hashable , Item : View {
9
- self . items = data. map ( { AnyView ( item ( $0) ) } )
9
+ self . items = data. map { GridItem ( view : AnyView ( item ( $0) ) , id : AnyHashable ( $0 [ keyPath : id ] ) ) }
10
10
}
11
11
12
12
public init < Item> ( _ data: Range < Int > , @ViewBuilder item: @escaping ( Int ) -> Item ) where Content == ForEach < Range < Int > , Int , Item > , Item : View {
13
- self . items = data. map ( { AnyView ( item ( $0) ) } )
13
+ self . items = data. map { GridItem ( view : AnyView ( item ( $0) ) , id : AnyHashable ( $0 ) ) }
14
14
}
15
15
}
16
16
17
17
extension Grid {
18
18
public init < C0: View , C1: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 ) > {
19
- self . items = [ AnyView ( content ( ) . value. 0 ) , AnyView ( content ( ) . value. 1 ) ]
19
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
20
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ]
20
21
}
21
-
22
+
22
23
public init < C0: View , C1: View , C2: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 , C2 ) > {
23
- self . items = [ AnyView ( content ( ) . value. 0 ) , AnyView ( content ( ) . value. 1 ) , AnyView ( content ( ) . value. 2 ) ]
24
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
25
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ,
26
+ GridItem ( view: AnyView ( content ( ) . value. 2 ) , id: AnyHashable ( 2 ) ) ]
24
27
}
25
-
28
+
26
29
public init < C0: View , C1: View , C2: View , C3: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 , C2 , C3 ) > {
27
- self . items = [ AnyView ( content ( ) . value. 0 ) , AnyView ( content ( ) . value. 1 ) , AnyView ( content ( ) . value. 2 ) , AnyView ( content ( ) . value. 3 ) ]
30
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
31
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ,
32
+ GridItem ( view: AnyView ( content ( ) . value. 2 ) , id: AnyHashable ( 2 ) ) ,
33
+ GridItem ( view: AnyView ( content ( ) . value. 3 ) , id: AnyHashable ( 3 ) ) ]
28
34
}
29
35
30
36
public init < C0: View , C1: View , C2: View , C3: View , C4: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 , C2 , C3 , C4 ) > {
31
- self . items = [ AnyView ( content ( ) . value. 0 ) , AnyView ( content ( ) . value. 1 ) , AnyView ( content ( ) . value. 2 ) , AnyView ( content ( ) . value. 3 ) , AnyView ( content ( ) . value. 4 ) ]
37
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
38
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ,
39
+ GridItem ( view: AnyView ( content ( ) . value. 2 ) , id: AnyHashable ( 2 ) ) ,
40
+ GridItem ( view: AnyView ( content ( ) . value. 3 ) , id: AnyHashable ( 3 ) ) ,
41
+ GridItem ( view: AnyView ( content ( ) . value. 4 ) , id: AnyHashable ( 4 ) ) ]
32
42
}
33
-
43
+
34
44
public init < C0: View , C1: View , C2: View , C3: View , C4: View , C5: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 , C2 , C3 , C4 , C5 ) > {
35
- self . items = [ AnyView ( content ( ) . value. 0 ) , AnyView ( content ( ) . value. 1 ) , AnyView ( content ( ) . value. 2 ) , AnyView ( content ( ) . value. 3 ) , AnyView ( content ( ) . value. 4 ) , AnyView ( content ( ) . value. 5 ) ]
45
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
46
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ,
47
+ GridItem ( view: AnyView ( content ( ) . value. 2 ) , id: AnyHashable ( 2 ) ) ,
48
+ GridItem ( view: AnyView ( content ( ) . value. 3 ) , id: AnyHashable ( 3 ) ) ,
49
+ GridItem ( view: AnyView ( content ( ) . value. 4 ) , id: AnyHashable ( 4 ) ) ,
50
+ GridItem ( view: AnyView ( content ( ) . value. 5 ) , id: AnyHashable ( 5 ) ) ]
36
51
}
37
-
52
+
38
53
public init < C0: View , C1: View , C2: View , C3: View , C4: View , C5: View , C6: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 , C2 , C3 , C4 , C5 , C6 ) > {
39
- self . items = [ AnyView ( content ( ) . value. 0 ) , AnyView ( content ( ) . value. 1 ) , AnyView ( content ( ) . value. 2 ) , AnyView ( content ( ) . value. 3 ) , AnyView ( content ( ) . value. 4 ) , AnyView ( content ( ) . value. 5 ) , AnyView ( content ( ) . value. 6 ) ]
54
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
55
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ,
56
+ GridItem ( view: AnyView ( content ( ) . value. 2 ) , id: AnyHashable ( 2 ) ) ,
57
+ GridItem ( view: AnyView ( content ( ) . value. 3 ) , id: AnyHashable ( 3 ) ) ,
58
+ GridItem ( view: AnyView ( content ( ) . value. 4 ) , id: AnyHashable ( 4 ) ) ,
59
+ GridItem ( view: AnyView ( content ( ) . value. 5 ) , id: AnyHashable ( 5 ) ) ,
60
+ GridItem ( view: AnyView ( content ( ) . value. 6 ) , id: AnyHashable ( 6 ) ) ]
40
61
}
41
-
62
+
63
+ public init < C0: View , C1: View , C2: View , C3: View , C4: View , C5: View , C6: View , C7: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 ) > {
64
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
65
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ,
66
+ GridItem ( view: AnyView ( content ( ) . value. 2 ) , id: AnyHashable ( 2 ) ) ,
67
+ GridItem ( view: AnyView ( content ( ) . value. 3 ) , id: AnyHashable ( 3 ) ) ,
68
+ GridItem ( view: AnyView ( content ( ) . value. 4 ) , id: AnyHashable ( 4 ) ) ,
69
+ GridItem ( view: AnyView ( content ( ) . value. 5 ) , id: AnyHashable ( 5 ) ) ,
70
+ GridItem ( view: AnyView ( content ( ) . value. 6 ) , id: AnyHashable ( 6 ) ) ,
71
+ GridItem ( view: AnyView ( content ( ) . value. 7 ) , id: AnyHashable ( 7 ) ) ]
72
+ }
73
+
42
74
public init < C0: View , C1: View , C2: View , C3: View , C4: View , C5: View , C6: View , C7: View , C8: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 ) > {
43
- self . items = [ AnyView ( content ( ) . value. 0 ) , AnyView ( content ( ) . value. 1 ) , AnyView ( content ( ) . value. 2 ) , AnyView ( content ( ) . value. 3 ) , AnyView ( content ( ) . value. 4 ) , AnyView ( content ( ) . value. 5 ) , AnyView ( content ( ) . value. 6 ) , AnyView ( content ( ) . value. 7 ) , AnyView ( content ( ) . value. 8 ) ]
75
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
76
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ,
77
+ GridItem ( view: AnyView ( content ( ) . value. 2 ) , id: AnyHashable ( 2 ) ) ,
78
+ GridItem ( view: AnyView ( content ( ) . value. 3 ) , id: AnyHashable ( 3 ) ) ,
79
+ GridItem ( view: AnyView ( content ( ) . value. 4 ) , id: AnyHashable ( 4 ) ) ,
80
+ GridItem ( view: AnyView ( content ( ) . value. 5 ) , id: AnyHashable ( 5 ) ) ,
81
+ GridItem ( view: AnyView ( content ( ) . value. 6 ) , id: AnyHashable ( 6 ) ) ,
82
+ GridItem ( view: AnyView ( content ( ) . value. 7 ) , id: AnyHashable ( 7 ) ) ,
83
+ GridItem ( view: AnyView ( content ( ) . value. 8 ) , id: AnyHashable ( 8 ) ) ]
44
84
}
45
-
85
+
46
86
public init < C0: View , C1: View , C2: View , C3: View , C4: View , C5: View , C6: View , C7: View , C8: View , C9: View > ( @ViewBuilder content: ( ) -> Content ) where Content == TupleView < ( C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9 ) > {
47
- self . items = [ AnyView ( content ( ) . value. 0 ) , AnyView ( content ( ) . value. 1 ) , AnyView ( content ( ) . value. 2 ) , AnyView ( content ( ) . value. 3 ) , AnyView ( content ( ) . value. 4 ) , AnyView ( content ( ) . value. 5 ) , AnyView ( content ( ) . value. 6 ) , AnyView ( content ( ) . value. 7 ) , AnyView ( content ( ) . value. 8 ) , AnyView ( content ( ) . value. 9 ) ]
87
+ self . items = [ GridItem ( view: AnyView ( content ( ) . value. 0 ) , id: AnyHashable ( 0 ) ) ,
88
+ GridItem ( view: AnyView ( content ( ) . value. 1 ) , id: AnyHashable ( 1 ) ) ,
89
+ GridItem ( view: AnyView ( content ( ) . value. 2 ) , id: AnyHashable ( 2 ) ) ,
90
+ GridItem ( view: AnyView ( content ( ) . value. 3 ) , id: AnyHashable ( 3 ) ) ,
91
+ GridItem ( view: AnyView ( content ( ) . value. 4 ) , id: AnyHashable ( 4 ) ) ,
92
+ GridItem ( view: AnyView ( content ( ) . value. 5 ) , id: AnyHashable ( 5 ) ) ,
93
+ GridItem ( view: AnyView ( content ( ) . value. 6 ) , id: AnyHashable ( 6 ) ) ,
94
+ GridItem ( view: AnyView ( content ( ) . value. 7 ) , id: AnyHashable ( 7 ) ) ,
95
+ GridItem ( view: AnyView ( content ( ) . value. 8 ) , id: AnyHashable ( 8 ) ) ,
96
+ GridItem ( view: AnyView ( content ( ) . value. 9 ) , id: AnyHashable ( 9 ) ) ]
48
97
}
49
98
}
0 commit comments