@@ -96,7 +96,7 @@ public struct _ViewListInputs {
9696 }
9797
9898 package var canTransition : Bool {
99- options. contains ( . canTransition)
99+ options. contains ( . canTransition) && !options . contains ( . disableTransitions )
100100 }
101101
102102 package mutating func addTraitKey< K> ( _ key: K . Type ) where K: _ViewTraitKey {
@@ -1132,7 +1132,7 @@ private struct UnaryElements<Generator>: ViewList.Elements where Generator: Unar
11321132 }
11331133}
11341134
1135- // MARK: - ViewListOutputs + Extension [TODO ]
1135+ // MARK: - ViewListOutputs + Extension [WIP ]
11361136
11371137extension _ViewListOutputs {
11381138 private struct ApplyModifiers : Rule , AsyncAttribute {
@@ -1146,11 +1146,40 @@ extension _ViewListOutputs {
11461146 }
11471147 }
11481148
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+ )
11511179 }
11521180
1153- static func nonEmptyParentViewList( inputs: _ViewListInputs ) -> _ViewListOutputs {
1181+ // FIXME: Group
1182+ package static func nonEmptyParentViewList( inputs: _ViewListInputs ) -> _ViewListOutputs {
11541183 preconditionFailure ( " TODO " )
11551184 }
11561185
@@ -1175,15 +1204,51 @@ extension _ViewListOutputs {
11751204 }
11761205
11771206 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+ }
11791224 }
11801225
11811226 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+ }
11831244 }
11841245
11851246 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+ }
11871252 }
11881253
11891254 package mutating func multiModifier< T> ( _ modifier: _GraphValue < T > , inputs: _ViewListInputs ) where T: ViewModifier {
0 commit comments