@@ -11,24 +11,16 @@ import LiveViewNativeCore
1111
1212@ASTDecodable ( " ScrollTargetBehavior " )
1313@available ( iOS 17 , macOS 14 , tvOS 17 , watchOS 10 , * )
14- enum StylesheetResolvableScrollTargetBehavior : @preconcurrency ScrollTargetBehavior , StylesheetResolvable , @preconcurrency Decodable {
15- case _resolved( any ScrollTargetBehavior )
16-
14+ enum StylesheetResolvableScrollTargetBehavior : StylesheetResolvable , @preconcurrency Decodable {
1715 case paging
1816 case viewAligned
1917 case _viewAligned( limitBehavior: Any )
18+ case _viewAlignedResolved( limitBehavior: Any )
2019
2120 @available ( iOS 17 , macOS 14 , tvOS 17 , watchOS 10 , * )
2221 static func viewAligned( limitBehavior: AttributeReference < ViewAlignedScrollTargetBehavior . LimitBehavior . Resolvable > ) -> Self {
2322 . _viewAligned( limitBehavior: limitBehavior)
2423 }
25-
26- func updateTarget( _ target: inout ScrollTarget , context: TargetContext ) {
27- guard case let . _resolved( resolved) = self
28- else { fatalError ( ) }
29-
30- resolved. updateTarget ( & target, context: context)
31- }
3224}
3325
3426@available ( iOS 17 , macOS 14 , tvOS 17 , watchOS 10 , * )
@@ -64,16 +56,16 @@ extension StylesheetResolvableScrollTargetBehavior {
6456 @MainActor func resolve< R: RootRegistry > ( on element: ElementNode , in context: LiveContext < R > ) -> Self {
6557 switch self {
6658 case . paging:
67- return . _resolved ( . paging )
59+ return self
6860 case . viewAligned:
69- return . _resolved ( . viewAligned )
61+ return self
7062 case . _viewAligned( let limitBehavior) :
71- return . _resolved ( . viewAligned (
63+ return . _viewAlignedResolved (
7264 limitBehavior: ( limitBehavior as! AttributeReference < ViewAlignedScrollTargetBehavior . LimitBehavior . Resolvable > )
7365 . resolve ( on: element, in: context)
7466 . resolve ( on: element, in: context)
75- ) )
76- case . _resolved :
67+ )
68+ case . _viewAlignedResolved :
7769 return self
7870 }
7971 }
@@ -92,3 +84,21 @@ extension StylesheetResolvableScrollTargetBehavior: @preconcurrency AttributeDec
9284 }
9385 }
9486}
87+
88+ @available ( iOS 17 , macOS 14 , tvOS 17 , watchOS 10 , * )
89+ extension View {
90+ @_disfavoredOverload
91+ @ViewBuilder
92+ func scrollTargetBehavior( _ behavior: StylesheetResolvableScrollTargetBehavior ) -> some View {
93+ switch behavior {
94+ case . paging:
95+ self . scrollTargetBehavior ( . paging)
96+ case . viewAligned:
97+ self . scrollTargetBehavior ( . viewAligned)
98+ case . _viewAligned:
99+ fatalError ( )
100+ case . _viewAlignedResolved( let limitBehavior) :
101+ self . scrollTargetBehavior ( . viewAligned( limitBehavior: limitBehavior as! ViewAlignedScrollTargetBehavior . LimitBehavior ) )
102+ }
103+ }
104+ }
0 commit comments