@@ -96,7 +96,7 @@ public struct _ViewListInputs {
96
96
}
97
97
98
98
package var canTransition : Bool {
99
- options. contains ( . canTransition)
99
+ options. contains ( . canTransition) && !options . contains ( . disableTransitions )
100
100
}
101
101
102
102
package mutating func addTraitKey< K> ( _ key: K . Type ) where K: _ViewTraitKey {
@@ -1132,7 +1132,7 @@ private struct UnaryElements<Generator>: ViewList.Elements where Generator: Unar
1132
1132
}
1133
1133
}
1134
1134
1135
- // MARK: - ViewListOutputs + Extension [TODO ]
1135
+ // MARK: - ViewListOutputs + Extension [WIP ]
1136
1136
1137
1137
extension _ViewListOutputs {
1138
1138
private struct ApplyModifiers : Rule , AsyncAttribute {
@@ -1146,11 +1146,40 @@ extension _ViewListOutputs {
1146
1146
}
1147
1147
}
1148
1148
1149
- private static func staticList( _ elements: any ViewList . Elements , inputs: _ViewListInputs , staticCount: Int ) -> _ViewListOutputs {
1150
- preconditionFailure ( " TODO " )
1149
+ private static func staticList(
1150
+ _ elements: any ViewList . Elements ,
1151
+ inputs: _ViewListInputs ,
1152
+ staticCount: Int
1153
+ ) -> _ViewListOutputs {
1154
+ let implicitID = inputs. implicitID
1155
+ let scope = inputs. base. stableIDScope
1156
+ let traits = inputs. traits
1157
+ let canTransition = inputs. canTransition
1158
+ let views : Views
1159
+ if scope != nil || traits != nil || canTransition {
1160
+ views = . dynamicList(
1161
+ Attribute ( BaseViewList . Init (
1162
+ elements: elements,
1163
+ implicitID: implicitID,
1164
+ canTransition: canTransition,
1165
+ stableIDScope: scope,
1166
+ traitKeys: inputs. traitKeys,
1167
+ traits: . init( traits)
1168
+ ) ) ,
1169
+ nil
1170
+ )
1171
+ } else {
1172
+ views = . staticList( elements)
1173
+ }
1174
+ return _ViewListOutputs (
1175
+ views,
1176
+ nextImplicitID: implicitID &+ staticCount,
1177
+ staticCount: staticCount
1178
+ )
1151
1179
}
1152
1180
1153
- static func nonEmptyParentViewList( inputs: _ViewListInputs ) -> _ViewListOutputs {
1181
+ // FIXME: Group
1182
+ package static func nonEmptyParentViewList( inputs: _ViewListInputs ) -> _ViewListOutputs {
1154
1183
preconditionFailure ( " TODO " )
1155
1184
}
1156
1185
@@ -1175,15 +1204,51 @@ extension _ViewListOutputs {
1175
1204
}
1176
1205
1177
1206
package func makeAttribute( inputs: _ViewListInputs ) -> Attribute < any ViewList > {
1178
- preconditionFailure ( " TODO " )
1207
+ switch views {
1208
+ case let . staticList( elements) :
1209
+ Attribute ( value: BaseViewList (
1210
+ elements: elements,
1211
+ implicitID: nextImplicitID,
1212
+ canTransition: inputs. canTransition,
1213
+ stableIDScope: inputs. base. stableIDScope,
1214
+ traitKeys: . init( ) ,
1215
+ traits: . init( )
1216
+ ) )
1217
+ case let . dynamicList( attribute, modifier) :
1218
+ if let modifier {
1219
+ Attribute ( ApplyModifiers ( base: attribute, modifier: modifier) )
1220
+ } else {
1221
+ attribute
1222
+ }
1223
+ }
1179
1224
}
1180
1225
1181
1226
package func makeAttribute( viewInputs: _ViewInputs ) -> Attribute < any ViewList > {
1182
- preconditionFailure ( " TODO " )
1227
+ switch views {
1228
+ case let . staticList( elements) :
1229
+ Attribute ( value: BaseViewList (
1230
+ elements: elements,
1231
+ implicitID: nextImplicitID,
1232
+ canTransition: false ,
1233
+ stableIDScope: viewInputs. base. stableIDScope,
1234
+ traitKeys: . init( ) ,
1235
+ traits: . init( )
1236
+ ) )
1237
+ case let . dynamicList( attribute, modifier) :
1238
+ if let modifier {
1239
+ Attribute ( ApplyModifiers ( base: attribute, modifier: modifier) )
1240
+ } else {
1241
+ attribute
1242
+ }
1243
+ }
1183
1244
}
1184
1245
1185
1246
package static func makeModifiedList( list: Attribute < any ViewList > , modifier: ListModifier ? ) -> Attribute < any ViewList > {
1186
- preconditionFailure ( " TODO " )
1247
+ if let modifier {
1248
+ Attribute ( ApplyModifiers ( base: list, modifier: modifier) )
1249
+ } else {
1250
+ list
1251
+ }
1187
1252
}
1188
1253
1189
1254
package mutating func multiModifier< T> ( _ modifier: _GraphValue < T > , inputs: _ViewListInputs ) where T: ViewModifier {
0 commit comments