@@ -61,7 +61,7 @@ import SwiftUI
6161/// ```
6262///
6363public struct AtomRoot < Content: View > : View {
64- private var storeHost : StoreHost
64+ private var storage : Storage
6565 private var overrides = [ OverrideKey : any OverrideProtocol ] ( )
6666 private var observers = [ Observer] ( )
6767 private let content : Content
@@ -70,7 +70,7 @@ public struct AtomRoot<Content: View>: View {
7070 ///
7171 /// - Parameter content: The descendant view content that provides context for atoms.
7272 public init ( @ViewBuilder content: ( ) -> Content ) {
73- self . storeHost = . tree
73+ self . storage = . managed
7474 self . content = content ( )
7575 }
7676
@@ -84,26 +84,26 @@ public struct AtomRoot<Content: View>: View {
8484 storesIn store: AtomStore ,
8585 @ViewBuilder content: ( ) -> Content
8686 ) {
87- self . storeHost = . unmanaged( store: store)
87+ self . storage = . unmanaged( store: store)
8888 self . content = content ( )
8989 }
9090
9191 /// The content and behavior of the view.
9292 public var body : some View {
93- switch storeHost {
94- case . tree:
95- TreeManaged (
96- content: content,
93+ switch storage {
94+ case . managed:
95+ Managed (
9796 overrides: overrides,
98- observers: observers
97+ observers: observers,
98+ content: content
9999 )
100100
101101 case . unmanaged( let store) :
102102 Unmanaged (
103- content: content,
104103 store: store,
105104 overrides: overrides,
106- observers: observers
105+ observers: observers,
106+ content: content
107107 )
108108 }
109109 }
@@ -150,31 +150,28 @@ public struct AtomRoot<Content: View>: View {
150150}
151151
152152private extension AtomRoot {
153- enum StoreHost {
154- case tree
153+ enum Storage {
154+ case managed
155155 case unmanaged( store: AtomStore )
156156 }
157157
158- struct TreeManaged : View {
159- @MainActor
160- final class State : ObservableObject {
161- let store = AtomStore ( )
162- let token = ScopeKey . Token ( )
163- }
164-
165- let content : Content
158+ struct Managed : View {
166159 let overrides : [ OverrideKey : any OverrideProtocol ]
167160 let observers : [ Observer ]
161+ let content : Content
162+
163+ @State
164+ private var store = AtomStore ( )
168165
169- @StateObject
170- private var state = State ( )
166+ @State
167+ private var token = ScopeKey . Token ( )
171168
172169 var body : some View {
173170 content. environment (
174171 \. store,
175172 StoreContext (
176- store: state . store,
177- scopeKey: ScopeKey ( token: state . token) ,
173+ store: store,
174+ scopeKey: ScopeKey ( token: token) ,
178175 inheritedScopeKeys: [ : ] ,
179176 observers: observers,
180177 scopedObservers: [ ] ,
@@ -186,25 +183,20 @@ private extension AtomRoot {
186183 }
187184
188185 struct Unmanaged : View {
189- @MainActor
190- final class State : ObservableObject {
191- let token = ScopeKey . Token ( )
192- }
193-
194- let content : Content
195186 let store : AtomStore
196187 let overrides : [ OverrideKey : any OverrideProtocol ]
197188 let observers : [ Observer ]
189+ let content : Content
198190
199- @StateObject
200- private var state = State ( )
191+ @State
192+ private var token = ScopeKey . Token ( )
201193
202194 var body : some View {
203195 content. environment (
204196 \. store,
205197 StoreContext (
206198 store: store,
207- scopeKey: ScopeKey ( token: state . token) ,
199+ scopeKey: ScopeKey ( token: token) ,
208200 inheritedScopeKeys: [ : ] ,
209201 observers: observers,
210202 scopedObservers: [ ] ,
0 commit comments