├── .gitignore ├── Examples ├── CocktailExample │ ├── CocktailExample.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── swiftpm │ │ │ └── Package.resolved │ ├── CocktailExample │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Atoms.swift │ │ ├── CocktaiItemView.swift │ │ ├── CocktailDetailView.swift │ │ ├── CocktailExampleApp.swift │ │ ├── CocktailImageView.swift │ │ ├── CocktailsView.swift │ │ ├── Model.swift │ │ └── Preview Content │ │ │ └── Preview Assets.xcassets │ │ │ └── Contents.json │ ├── CocktailExampleTests │ │ └── CocktailExampleTests.swift │ └── README.md ├── SignupExample │ ├── README.md │ ├── SignupExample.xcodeproj │ │ ├── project.pbxproj │ │ └── project.xcworkspace │ │ │ ├── contents.xcworkspacedata │ │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── swiftpm │ │ │ └── Package.resolved │ ├── SignupExample │ │ ├── Assets.xcassets │ │ │ ├── AccentColor.colorset │ │ │ │ └── Contents.json │ │ │ ├── AppIcon.appiconset │ │ │ │ └── Contents.json │ │ │ └── Contents.json │ │ ├── Atoms.swift │ │ ├── Preview Content │ │ │ └── Preview Assets.xcassets │ │ │ │ └── Contents.json │ │ ├── SignupExampleApp.swift │ │ └── SignupView.swift │ └── SignupExampleTests │ │ └── SignupExampleTests.swift └── TodoExample │ ├── README.md │ ├── TodoExample.xcodeproj │ ├── project.pbxproj │ └── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── swiftpm │ │ └── Package.resolved │ ├── TodoExample │ ├── Assets.xcassets │ │ ├── AccentColor.colorset │ │ │ └── Contents.json │ │ ├── AppIcon.appiconset │ │ │ └── Contents.json │ │ └── Contents.json │ ├── Atoms.swift │ ├── Model.swift │ ├── NewTodoView.swift │ ├── Preview Content │ │ └── Preview Assets.xcassets │ │ │ └── Contents.json │ ├── TodoExampleApp.swift │ ├── TodoItemView.swift │ └── TodoView.swift │ └── TodoExampleTests │ └── TodoExampleTests.swift ├── LICENSE ├── Package.resolved ├── Package.swift ├── README.md ├── Resources └── TestScreenshot.png ├── Sources └── Atoms │ ├── AsyncState.swift │ ├── AtomProvider.swift │ ├── AtomStore.swift │ ├── Atoms │ ├── AsyncAtom.swift │ ├── AsyncSequenceAtom.swift │ ├── Atom.swift │ ├── DerivedAtom.swift │ ├── GetSetAtom.swift │ ├── ObservableObjectAtom.swift │ ├── PublishedAtom.swift │ ├── PublisherAtom.swift │ └── WillSetAtom.swift │ ├── Internal │ ├── AtomValue.swift │ ├── Atomic.swift │ ├── DebugInfo.swift │ ├── ExportAsyncExpectations.swift │ ├── GetSetPublisher.swift │ ├── ReadableAtom.swift │ ├── RefCounter.swift │ ├── ResettableAtom.swift │ ├── Scope.swift │ ├── Store.swift │ ├── StoreConfig.swift │ ├── UsedAtomInfo.swift │ ├── Utilities.swift │ ├── WeakRef.swift │ └── WritableAtom.swift │ ├── PropertyWrappers │ ├── CaptureAtom.swift │ ├── CaptureAtomPublisher.swift │ ├── CaptureAtomValue.swift │ ├── UseAtom.swift │ └── UseAtomValue.swift │ └── TestStore.swift ├── Tests └── AtomsTests │ └── AtomsTests.swift └── docs ├── assets.json ├── css ├── documentation-topic.3bca6578.css ├── documentation-topic~topic~tutorials-overview.82acfe22.css ├── index.12bb178a.css ├── topic.ee15af52.css └── tutorials-overview.06e8bcf7.css ├── data └── documentation │ ├── atoms.json │ └── atoms │ ├── asyncatom.json │ ├── asyncatom │ ├── cancel().json │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(keepalive:throwoncancellation:file:function:line:operation:).json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ ├── reload().json │ └── type.json │ ├── asyncsequenceatom.json │ ├── asyncsequenceatom │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(_:keepalive:file:function:line:)-6rh5p.json │ ├── init(_:keepalive:file:function:line:)-qbn7.json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ └── type.json │ ├── asyncstate.json │ ├── asyncstate │ ├── !=(_:_:).json │ ├── ==(_:_:).json │ ├── equatable-implementations.json │ ├── failure(_:).json │ ├── failure.json │ ├── loading-swift.enum.case.json │ ├── loading-swift.property.json │ ├── success(_:).json │ └── value.json │ ├── atom.json │ ├── atom │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(_:keepalive:file:function:line:).json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ ├── reset().json │ └── type.json │ ├── atomstore.json │ ├── atomstore │ ├── debugscope.json │ ├── debugscope │ │ ├── exclude(_:).json │ │ └── include(_:).json │ ├── enableatomlogging(_:enabled:).json │ ├── inject(_:mutation:).json │ ├── loggingenabled.json │ └── shared.json │ ├── captureatom.json │ ├── captureatom │ ├── init(_:).json │ └── wrappedvalue.json │ ├── captureatompublisher.json │ ├── captureatompublisher │ ├── init(_:).json │ └── wrappedvalue.json │ ├── captureatomvalue.json │ ├── captureatomvalue │ ├── init(_:).json │ └── wrappedvalue.json │ ├── derivedatom.json │ ├── derivedatom │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(keepalive:file:function:line:get:).json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ └── type.json │ ├── getsetatom.json │ ├── getsetatom │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(keepalive:file:function:line:get:set:).json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ ├── reset().json │ └── type.json │ ├── observableobjectatom.json │ ├── observableobjectatom │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(_:keepalive:file:function:line:).json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ └── type.json │ ├── publishedatom.json │ ├── publishedatom │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(_:keepalive:).json │ ├── init(keepalive:file:function:line:_:).json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ └── type.json │ ├── publisheratom.json │ ├── publisheratom │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(_:keepalive:file:function:line:).json │ ├── init(keepalive:file:function:line:_:)-2ldm0.json │ ├── init(keepalive:file:function:line:_:)-837kr.json │ ├── init(publisher:keepalive:file:function:line:).json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ └── type.json │ ├── readableatom.json │ ├── readableatom │ ├── debuglabel(_:).json │ ├── id.json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── t.json │ └── type.json │ ├── store.json │ ├── store │ └── inject(_:mutation:).json │ ├── teststore.json │ ├── teststore │ └── init(operation:).json │ ├── useatom.json │ ├── useatom │ ├── dynamicproperty-implementations.json │ ├── init(_:debounce:).json │ ├── projectedvalue.json │ ├── update().json │ └── wrappedvalue.json │ ├── useatomvalue.json │ ├── useatomvalue │ ├── dynamicproperty-implementations.json │ ├── init(_:debounce:).json │ ├── update().json │ └── wrappedvalue.json │ ├── willsetatom.json │ ├── willsetatom │ ├── debuglabel(_:).json │ ├── id.json │ ├── init(keepalive:file:function:line:_:willset:).json │ ├── keepalive.json │ ├── onupdate(skip:_:).json │ ├── readableatom-implementations.json │ ├── reset().json │ └── type.json │ └── writableatom.json ├── developer-og-twitter.jpg ├── developer-og.jpg ├── diagnostics.json ├── documentation └── atoms │ ├── asyncatom │ ├── cancel() │ │ └── index.html │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(keepalive:throwoncancellation:file:function:line:operation:) │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ ├── reload() │ │ └── index.html │ └── type │ │ └── index.html │ ├── asyncsequenceatom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(_:keepalive:file:function:line:)-6rh5p │ │ └── index.html │ ├── init(_:keepalive:file:function:line:)-qbn7 │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ └── type │ │ └── index.html │ ├── asyncstate │ ├── !=(_:_:) │ │ └── index.html │ ├── ==(_:_:) │ │ └── index.html │ ├── equatable-implementations │ │ └── index.html │ ├── failure(_:) │ │ └── index.html │ ├── failure │ │ └── index.html │ ├── index.html │ ├── loading-swift.enum.case │ │ └── index.html │ ├── loading-swift.property │ │ └── index.html │ ├── success(_:) │ │ └── index.html │ └── value │ │ └── index.html │ ├── atom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(_:keepalive:file:function:line:) │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ ├── reset() │ │ └── index.html │ └── type │ │ └── index.html │ ├── atomstore │ ├── debugscope │ │ ├── exclude(_:) │ │ │ └── index.html │ │ ├── include(_:) │ │ │ └── index.html │ │ └── index.html │ ├── enableatomlogging(_:enabled:) │ │ └── index.html │ ├── index.html │ ├── inject(_:mutation:) │ │ └── index.html │ ├── loggingenabled │ │ └── index.html │ └── shared │ │ └── index.html │ ├── captureatom │ ├── index.html │ ├── init(_:) │ │ └── index.html │ └── wrappedvalue │ │ └── index.html │ ├── captureatompublisher │ ├── index.html │ ├── init(_:) │ │ └── index.html │ └── wrappedvalue │ │ └── index.html │ ├── captureatomvalue │ ├── index.html │ ├── init(_:) │ │ └── index.html │ └── wrappedvalue │ │ └── index.html │ ├── derivedatom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(keepalive:file:function:line:get:) │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ └── type │ │ └── index.html │ ├── getsetatom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(keepalive:file:function:line:get:set:) │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ ├── reset() │ │ └── index.html │ └── type │ │ └── index.html │ ├── index.html │ ├── observableobjectatom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(_:keepalive:file:function:line:) │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ └── type │ │ └── index.html │ ├── publishedatom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(_:keepalive:) │ │ └── index.html │ ├── init(keepalive:file:function:line:_:) │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ └── type │ │ └── index.html │ ├── publisheratom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(_:keepalive:file:function:line:) │ │ └── index.html │ ├── init(keepalive:file:function:line:_:)-2ldm0 │ │ └── index.html │ ├── init(keepalive:file:function:line:_:)-837kr │ │ └── index.html │ ├── init(publisher:keepalive:file:function:line:) │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ └── type │ │ └── index.html │ ├── readableatom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── t │ │ └── index.html │ └── type │ │ └── index.html │ ├── store │ ├── index.html │ └── inject(_:mutation:) │ │ └── index.html │ ├── teststore │ ├── index.html │ └── init(operation:) │ │ └── index.html │ ├── useatom │ ├── dynamicproperty-implementations │ │ └── index.html │ ├── index.html │ ├── init(_:debounce:) │ │ └── index.html │ ├── projectedvalue │ │ └── index.html │ ├── update() │ │ └── index.html │ └── wrappedvalue │ │ └── index.html │ ├── useatomvalue │ ├── dynamicproperty-implementations │ │ └── index.html │ ├── index.html │ ├── init(_:debounce:) │ │ └── index.html │ ├── update() │ │ └── index.html │ └── wrappedvalue │ │ └── index.html │ ├── willsetatom │ ├── debuglabel(_:) │ │ └── index.html │ ├── id │ │ └── index.html │ ├── index.html │ ├── init(keepalive:file:function:line:_:willset:) │ │ └── index.html │ ├── keepalive │ │ └── index.html │ ├── onupdate(skip:_:) │ │ └── index.html │ ├── readableatom-implementations │ │ └── index.html │ ├── reset() │ │ └── index.html │ └── type │ │ └── index.html │ └── writableatom │ └── index.html ├── favicon.ico ├── favicon.svg ├── img ├── added-icon.d6f7e47d.svg ├── deprecated-icon.015b4f17.svg ├── modified-icon.f496e73d.svg └── no-image@2x.df2a0a50.png ├── index.html ├── index └── index.json ├── indexing-records.json ├── js ├── chunk-2d0d3105.cd72cc8e.js ├── chunk-vendors.b24b7aaa.js ├── documentation-topic.f62098b6.js ├── documentation-topic~topic~tutorials-overview.8e36e44f.js ├── highlight-js-bash.1b52852f.js ├── highlight-js-c.d1db3f17.js ├── highlight-js-cpp.eaddddbe.js ├── highlight-js-css.75eab1fe.js ├── highlight-js-custom-markdown.7cffc4b3.js ├── highlight-js-custom-swift.5cda5c20.js ├── highlight-js-diff.62d66733.js ├── highlight-js-http.163e45b6.js ├── highlight-js-java.8326d9d8.js ├── highlight-js-javascript.acb8a8eb.js ├── highlight-js-json.471128d2.js ├── highlight-js-llvm.6100b125.js ├── highlight-js-markdown.90077643.js ├── highlight-js-objectivec.bcdf5156.js ├── highlight-js-perl.757d7b6f.js ├── highlight-js-php.cc8d6c27.js ├── highlight-js-python.c214ed92.js ├── highlight-js-ruby.f889d392.js ├── highlight-js-scss.62ee18da.js ├── highlight-js-shell.dd7f411f.js ├── highlight-js-swift.84f3e88c.js ├── highlight-js-xml.9c3688c7.js ├── index.58e30ec4.js ├── topic.6a1c7b7f.js └── tutorials-overview.c8178b83.js ├── linkable-entities.json ├── metadata.json └── theme-settings.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.build 3 | /Packages 4 | /*.xcodeproj 5 | xcuserdata/ 6 | /.swiftpm 7 | DerivedData/ 8 | .swiftpm/config/registries.json 9 | .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata 10 | .netrc 11 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "pins" : [ 3 | { 4 | "identity" : "swift-async-expectations", 5 | "kind" : "remoteSourceControl", 6 | "location" : "https://github.com/bangerang/swift-async-expectations.git", 7 | "state" : { 8 | "revision" : "1f65a7dcc7810eb4e5108e007dcfc03466aac0e8", 9 | "version" : "0.1.0" 10 | } 11 | }, 12 | { 13 | "identity" : "swift-custom-dump", 14 | "kind" : "remoteSourceControl", 15 | "location" : "https://github.com/pointfreeco/swift-custom-dump", 16 | "state" : { 17 | "revision" : "84b30e1af72e0ffe6dfbfe39d53b8173caacf224", 18 | "version" : "0.10.2" 19 | } 20 | }, 21 | { 22 | "identity" : "swift-docc-plugin", 23 | "kind" : "remoteSourceControl", 24 | "location" : "https://github.com/apple/swift-docc-plugin", 25 | "state" : { 26 | "revision" : "9b1258905c21fc1b97bf03d1b4ca12c4ec4e5fda", 27 | "version" : "1.2.0" 28 | } 29 | }, 30 | { 31 | "identity" : "swift-docc-symbolkit", 32 | "kind" : "remoteSourceControl", 33 | "location" : "https://github.com/apple/swift-docc-symbolkit", 34 | "state" : { 35 | "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34", 36 | "version" : "1.0.0" 37 | } 38 | }, 39 | { 40 | "identity" : "xctest-dynamic-overlay", 41 | "kind" : "remoteSourceControl", 42 | "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay", 43 | "state" : { 44 | "revision" : "ab8c9f45843694dd16be4297e6d44c0634fd9913", 45 | "version" : "0.8.4" 46 | } 47 | } 48 | ], 49 | "version" : 2 50 | } 51 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | } 8 | ], 9 | "info" : { 10 | "author" : "xcode", 11 | "version" : 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/Atoms.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import Atoms 3 | 4 | let cocktailServiceAtom = Atom(CocktailService(search: CocktailAPI.searchCocktail)) 5 | 6 | let searchCocktailTextAtom = Atom("") 7 | 8 | let searchCocktailsAtom = AsyncAtom<[Cocktail]> { 9 | @UseAtomValue(searchCocktailTextAtom) var searchText 10 | @UseAtomValue(cocktailServiceAtom) var service 11 | if searchText.isEmpty { 12 | return [] 13 | } 14 | return try await service.search(searchText) 15 | } 16 | 17 | let favoritesAtom = Atom<[Cocktail]>([]) 18 | 19 | let favoritesManagerAtom = ObservableObjectAtom(FavoritesManager()) 20 | 21 | 22 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/CocktaiItemView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CocktaiItemView.swift 3 | // CocktailExample 4 | // 5 | // Created by Johan Thorell on 2023-04-17. 6 | // 7 | 8 | import Foundation 9 | import SwiftUI 10 | import Atoms 11 | 12 | struct CocktailItemView: View { 13 | @UseAtomValue(favoritesManagerAtom) var favoritesManager 14 | let cocktail: Cocktail 15 | 16 | var body: some View { 17 | HStack { 18 | CocktailImageView(imageSource: cocktail.strDrinkThumb, size: .thumbnail) 19 | Text(cocktail.strDrink) 20 | Spacer() 21 | if favoritesManager.isFavorite(cocktail) { 22 | Image(systemName: "star.fill") 23 | } 24 | }.swipeActions { 25 | if favoritesManager.isFavorite(cocktail) { 26 | Button("Remove favorite") { 27 | favoritesManager.remove(cocktail) 28 | }.tint(.red) 29 | } else { 30 | Button("Add to favorite") { 31 | favoritesManager.add(cocktail) 32 | }.tint(.indigo) 33 | } 34 | } 35 | } 36 | } 37 | 38 | struct CocktailItemView_Previews: PreviewProvider { 39 | static var previews: some View { 40 | CocktailItemView(cocktail: .mock) 41 | .inject(favoritesManagerAtom) { 42 | .init(favorites: [.mock]) 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/CocktailDetailView.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import SwiftUI 3 | import Atoms 4 | 5 | struct CocktailDetailView: View { 6 | let cocktail: Cocktail 7 | @UseAtomValue(favoritesManagerAtom) var favoritesManager 8 | 9 | var body: some View { 10 | ScrollView { 11 | CocktailImageView(imageSource: cocktail.strImageSource, size: .regular) 12 | Text(cocktail.strInstructions) 13 | } 14 | .padding() 15 | .navigationTitle(cocktail.strDrink) 16 | .toolbar { 17 | if favoritesManager.isFavorite(cocktail) { 18 | Button { 19 | favoritesManager.remove(cocktail) 20 | } label: { 21 | Image(systemName: "star.fill") 22 | } 23 | } else { 24 | Button { 25 | favoritesManager.add(cocktail) 26 | } label: { 27 | Image(systemName: "star") 28 | } 29 | } 30 | } 31 | } 32 | } 33 | 34 | struct CocktailDetailView_Previews: PreviewProvider { 35 | static var previews: some View { 36 | NavigationStack { 37 | CocktailDetailView(cocktail: .mock) 38 | .inject(favoritesManagerAtom) { 39 | .init(favorites: [.mock]) 40 | } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/CocktailExampleApp.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | @main 4 | struct CocktailExampleApp: App { 5 | var body: some Scene { 6 | WindowGroup { 7 | CocktailsView() 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/CocktailImageView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | struct CocktailImageView: View { 4 | enum Size { 5 | case regular 6 | case thumbnail 7 | } 8 | let imageSource: String? 9 | let size: Size 10 | 11 | var body: some View { 12 | if let imgSource = imageSource, let url = URL(string: imgSource) { 13 | AsyncImage( 14 | url: url, 15 | content: { image in 16 | image.resizable() 17 | .aspectRatio(contentMode: .fit) 18 | .frame(maxWidth: size == .regular ? 300 : 50, maxHeight: size == .regular ? 300 : 50) 19 | }, 20 | placeholder: { 21 | ProgressView() 22 | } 23 | ) 24 | } else { 25 | Text("🍹") 26 | .font(size == .regular ? .system(size: 90) : .system(size: 20)) 27 | } 28 | } 29 | } 30 | struct CocktailImageView_Previews: PreviewProvider { 31 | static var previews: some View { 32 | CocktailImageView(imageSource: nil, size: .regular) 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/CocktailsView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import Foundation 3 | import Atoms 4 | 5 | struct CocktailsView: View { 6 | @UseAtom(searchCocktailTextAtom) var searchCocktailText 7 | @UseAtomValue(searchCocktailsAtom) var searchCocktailsState 8 | @UseAtomValue(favoritesManagerAtom) var favoritesManager 9 | var body: some View { 10 | NavigationStack { 11 | List { 12 | if let cocktails = searchCocktailsState.value, !cocktails.isEmpty { 13 | ForEach(cocktails) { cocktail in 14 | NavigationLink { 15 | CocktailDetailView(cocktail: cocktail) 16 | } label: { 17 | CocktailItemView(cocktail: cocktail) 18 | } 19 | } 20 | } else { 21 | ForEach(favoritesManager.favorites) { cocktail in 22 | NavigationLink { 23 | CocktailDetailView(cocktail: cocktail) 24 | } label: { 25 | CocktailItemView(cocktail: cocktail) 26 | } 27 | } 28 | } 29 | } 30 | .searchable(text: $searchCocktailText) 31 | .navigationTitle("Search cocktails") 32 | } 33 | } 34 | } 35 | 36 | struct CocktailsView_Previews: PreviewProvider { 37 | static var previews: some View { 38 | CocktailsView() 39 | .inject(searchCocktailsAtom) { 40 | .success([.init(idDrink: "1", strDrink: "Drink2", strInstructions: "Some instructions", strImageSource: nil, strDrinkThumb: nil)]) 41 | } 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/Model.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct Drinks: Codable { 4 | let drinks: [Cocktail] 5 | } 6 | struct Cocktail: Codable, Hashable, Identifiable { 7 | var id: String { 8 | idDrink 9 | } 10 | let idDrink: String 11 | let strDrink: String 12 | let strInstructions: String 13 | let strImageSource: String? 14 | let strDrinkThumb: String? 15 | } 16 | 17 | extension Cocktail { 18 | static var mock: Cocktail { 19 | .init(idDrink: "1", 20 | strDrink: "Margarita", 21 | strInstructions: "Do things", 22 | strImageSource: nil, 23 | strDrinkThumb: nil) 24 | } 25 | } 26 | 27 | struct CocktailAPI { 28 | static func searchCocktail(_ query: String) async throws -> [Cocktail] { 29 | guard let urlEncoded = query.addingPercentEncoding(withAllowedCharacters: .alphanumerics) else { 30 | fatalError() 31 | } 32 | let (data, _) = try await URLSession.shared.data(from: URL(string: "https://www.thecocktaildb.com/api/json/v1/1/search.php?s=\(urlEncoded)")!) 33 | let decoder = JSONDecoder() 34 | return try decoder.decode(Drinks.self, from: data).drinks 35 | } 36 | } 37 | 38 | let cocktailAPI = CocktailAPI() 39 | 40 | struct CocktailService { 41 | var search: (String) async throws -> [Cocktail] 42 | } 43 | 44 | class FavoritesManager: ObservableObject { 45 | @Published var favorites: [Cocktail] = [] 46 | 47 | init(favorites: [Cocktail] = []) { 48 | self.favorites = favorites 49 | } 50 | 51 | func isFavorite(_ cocktail: Cocktail) -> Bool { 52 | return favorites.contains(where: { $0.id == cocktail.id}) 53 | } 54 | func add(_ cocktail: Cocktail) { 55 | favorites.append(cocktail) 56 | } 57 | func remove(_ cocktail: Cocktail) { 58 | favorites.removeAll(where: { $0.id == cocktail.id }) 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExample/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Examples/CocktailExample/CocktailExampleTests/CocktailExampleTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // CocktailExampleTests.swift 3 | // CocktailExampleTests 4 | // 5 | // Created by Johan Thorell on 2023-04-17. 6 | // 7 | 8 | import XCTest 9 | @testable import CocktailExample 10 | import Atoms 11 | 12 | final class CocktailExampleTests: XCTestCase { 13 | 14 | @MainActor 15 | func testSearchForCocktail() async throws { 16 | let mock: [Cocktail] = [.mock] 17 | try await TestStore { store in 18 | store.inject(cocktailServiceAtom) { 19 | .init { _ in 20 | return mock 21 | } 22 | } 23 | @CaptureAtomValue(searchCocktailsAtom) var cocktailState: AsyncState<[Cocktail]> 24 | @CaptureAtom(searchCocktailTextAtom) var searchText: String 25 | searchText = "Foo" 26 | try await expectEqual(cocktailState, .success(mock)) 27 | } 28 | } 29 | 30 | @MainActor 31 | func testAddToFavorite() async throws { 32 | await TestStore { store in 33 | @CaptureAtomValue(favoritesManagerAtom) var favoriteManager: FavoritesManager 34 | favoriteManager.add(.mock) 35 | XCTAssertEqual(favoriteManager.favorites, [.mock]) 36 | favoriteManager.remove(.mock) 37 | XCTAssert(favoriteManager.favorites.isEmpty) 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /Examples/CocktailExample/README.md: -------------------------------------------------------------------------------- 1 | # Cocktail Example 2 | An example app that searches for cocktails using a real API. You can also toggle favorites, demonstrating how state is shared across screens. Includes unit tests 3 | -------------------------------------------------------------------------------- /Examples/SignupExample/README.md: -------------------------------------------------------------------------------- 1 | # SignupExample 2 | Sign up screen with validation and unit tests. 3 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "pins" : [ 3 | { 4 | "identity" : "swift-async-expectations", 5 | "kind" : "remoteSourceControl", 6 | "location" : "https://github.com/bangerang/swift-async-expectations.git", 7 | "state" : { 8 | "revision" : "1f65a7dcc7810eb4e5108e007dcfc03466aac0e8", 9 | "version" : "0.1.0" 10 | } 11 | }, 12 | { 13 | "identity" : "swift-custom-dump", 14 | "kind" : "remoteSourceControl", 15 | "location" : "https://github.com/pointfreeco/swift-custom-dump", 16 | "state" : { 17 | "revision" : "84b30e1af72e0ffe6dfbfe39d53b8173caacf224", 18 | "version" : "0.10.2" 19 | } 20 | }, 21 | { 22 | "identity" : "swift-docc-plugin", 23 | "kind" : "remoteSourceControl", 24 | "location" : "https://github.com/apple/swift-docc-plugin", 25 | "state" : { 26 | "revision" : "9b1258905c21fc1b97bf03d1b4ca12c4ec4e5fda", 27 | "version" : "1.2.0" 28 | } 29 | }, 30 | { 31 | "identity" : "swift-docc-symbolkit", 32 | "kind" : "remoteSourceControl", 33 | "location" : "https://github.com/apple/swift-docc-symbolkit", 34 | "state" : { 35 | "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34", 36 | "version" : "1.0.0" 37 | } 38 | }, 39 | { 40 | "identity" : "xctest-dynamic-overlay", 41 | "kind" : "remoteSourceControl", 42 | "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay", 43 | "state" : { 44 | "revision" : "ab8c9f45843694dd16be4297e6d44c0634fd9913", 45 | "version" : "0.8.4" 46 | } 47 | } 48 | ], 49 | "version" : 2 50 | } 51 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | } 8 | ], 9 | "info" : { 10 | "author" : "xcode", 11 | "version" : 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample/Atoms.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import Atoms 3 | 4 | let usernameAtom = Atom("") 5 | 6 | let passwordAtom = Atom("") 7 | 8 | let usernameIsValidAtom = DerivedAtom { 9 | @UseAtomValue(usernameAtom) var username; 10 | 11 | return username.count >= 5 12 | } 13 | 14 | let passwordIsValidAtom = DerivedAtom { 15 | @UseAtomValue(passwordAtom) var password; 16 | guard 17 | let regex = try? Regex(#"^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).{8,}$"#), 18 | let match = try? regex.firstMatch(in: password) 19 | else { 20 | return false 21 | } 22 | return !match.isEmpty 23 | } 24 | 25 | let signupIsValidAtom = DerivedAtom { 26 | @UseAtomValue(usernameIsValidAtom) var usernameValid 27 | @UseAtomValue(passwordIsValidAtom) var passwordValid 28 | return usernameValid && passwordValid 29 | } 30 | 31 | let signedInStateAtom = Atom?>(nil) 32 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample/SignupExampleApp.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | @main 4 | struct SignupExampleApp: App { 5 | var body: some Scene { 6 | WindowGroup { 7 | SignupView() 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExample/SignupView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import Atoms 3 | import RegexBuilder 4 | import Combine 5 | 6 | struct SignupView: View { 7 | @UseAtom(usernameAtom) var username 8 | @UseAtom(passwordAtom) var password 9 | @UseAtom(signedInStateAtom) var signupState 10 | @UseAtomValue(signupIsValidAtom) var signupIsValid 11 | 12 | var body: some View { 13 | NavigationStack { 14 | Group { 15 | if let signupState { 16 | switch signupState { 17 | case .loading: 18 | ProgressView() 19 | case .success: 20 | Text("Success") 21 | case .failure: 22 | Text("Failure") 23 | } 24 | } else { 25 | Form { 26 | Section { 27 | TextField("Username", text: $username) 28 | } footer: { 29 | Text("At least 5 characters.") 30 | } 31 | Section { 32 | SecureField("Password", text: $password) 33 | } footer: { 34 | Text("One uppercase letter, one lowercase letter, one number, and a minimum length of 8 characters.") 35 | } 36 | 37 | Section { 38 | Button("Sign up") { 39 | Task { 40 | try await performSignUp() 41 | } 42 | }.disabled(!signupIsValid) 43 | } 44 | } 45 | } 46 | } 47 | .navigationTitle("Sign up") 48 | } 49 | } 50 | 51 | func performSignUp() async throws { 52 | signupState = .loading 53 | try await Task.sleep(until: .now + .seconds(1), clock: .continuous) 54 | signupState = .success(()) 55 | } 56 | } 57 | 58 | struct SignupView_Previews: PreviewProvider { 59 | static var previews: some View { 60 | SignupView() 61 | .inject(usernameAtom) { 62 | "johndoe" 63 | } 64 | .inject(passwordAtom) { 65 | "passw0rD" 66 | } 67 | } 68 | } 69 | 70 | -------------------------------------------------------------------------------- /Examples/SignupExample/SignupExampleTests/SignupExampleTests.swift: -------------------------------------------------------------------------------- 1 | import XCTest 2 | @testable import SignupExample 3 | import Atoms 4 | 5 | final class SignupExampleTests: XCTestCase { 6 | @MainActor 7 | func testSignup() async throws { 8 | try await TestStore { store in 9 | @CaptureAtom(usernameAtom) var username: String 10 | @CaptureAtom(passwordAtom) var password: String 11 | @CaptureAtomValue(signupIsValidAtom) var signupIsValid: Bool 12 | XCTAssert(!signupIsValid) 13 | username = "johndoe" 14 | password = "passw0rD" 15 | try await expect(signupIsValid) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /Examples/TodoExample/README.md: -------------------------------------------------------------------------------- 1 | # TodoExample 2 | Todo list with unit tests. 3 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "pins" : [ 3 | { 4 | "identity" : "swift-async-expectations", 5 | "kind" : "remoteSourceControl", 6 | "location" : "https://github.com/bangerang/swift-async-expectations.git", 7 | "state" : { 8 | "revision" : "1f65a7dcc7810eb4e5108e007dcfc03466aac0e8", 9 | "version" : "0.1.0" 10 | } 11 | }, 12 | { 13 | "identity" : "swift-custom-dump", 14 | "kind" : "remoteSourceControl", 15 | "location" : "https://github.com/pointfreeco/swift-custom-dump", 16 | "state" : { 17 | "revision" : "84b30e1af72e0ffe6dfbfe39d53b8173caacf224", 18 | "version" : "0.10.2" 19 | } 20 | }, 21 | { 22 | "identity" : "swift-docc-plugin", 23 | "kind" : "remoteSourceControl", 24 | "location" : "https://github.com/apple/swift-docc-plugin", 25 | "state" : { 26 | "revision" : "9b1258905c21fc1b97bf03d1b4ca12c4ec4e5fda", 27 | "version" : "1.2.0" 28 | } 29 | }, 30 | { 31 | "identity" : "swift-docc-symbolkit", 32 | "kind" : "remoteSourceControl", 33 | "location" : "https://github.com/apple/swift-docc-symbolkit", 34 | "state" : { 35 | "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34", 36 | "version" : "1.0.0" 37 | } 38 | }, 39 | { 40 | "identity" : "xctest-dynamic-overlay", 41 | "kind" : "remoteSourceControl", 42 | "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay", 43 | "state" : { 44 | "revision" : "ab8c9f45843694dd16be4297e6d44c0634fd9913", 45 | "version" : "0.8.4" 46 | } 47 | } 48 | ], 49 | "version" : 2 50 | } 51 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "platform" : "ios", 6 | "size" : "1024x1024" 7 | } 8 | ], 9 | "info" : { 10 | "author" : "xcode", 11 | "version" : 1 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/Atoms.swift: -------------------------------------------------------------------------------- 1 | import Atoms 2 | 3 | let todosAtom = Atom<[Todo]>([]) 4 | 5 | let filterTodosOptionAtom = Atom(FilterOption.all) 6 | 7 | let searchTodosAtom = Atom("") 8 | 9 | let filteredTodosAtom = DerivedAtom { 10 | @UseAtomValue(searchTodosAtom) var searchText 11 | @UseAtomValue(todosAtom) var todos 12 | @UseAtomValue(filterTodosOptionAtom) var filterTodosOption; 13 | 14 | let searched = searchText.isEmpty ? todos : todos.filter { 15 | return $0.name.localizedCaseInsensitiveContains(searchText) 16 | } 17 | 18 | switch filterTodosOption { 19 | case .all: 20 | return searched 21 | case .notCompleted: 22 | return searched.filter { !$0.completed } 23 | case .completed: 24 | return searched.filter { $0.completed } 25 | } 26 | } 27 | 28 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/Model.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct Todo: Identifiable, Codable, Equatable { 4 | var id = UUID() 5 | var name: String 6 | var completed = false 7 | } 8 | 9 | extension Array where Element == Todo { 10 | static var mock: [Todo] { 11 | [ 12 | .init(name: "Todo1"), 13 | .init(name: "Todo2"), 14 | .init(name: "Todo3"), 15 | .init(name: "Todo4", completed: true) 16 | ] 17 | } 18 | } 19 | 20 | enum FilterOption: String, CaseIterable { 21 | case all = "Show all" 22 | case notCompleted = "Not completed" 23 | case completed = "Completed" 24 | } 25 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/NewTodoView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import Atoms 3 | 4 | struct NewTodoView: View { 5 | @UseAtom(todosAtom) var todos 6 | @State var newTodoName = "" 7 | var body: some View { 8 | TextField("Add new todo", text: $newTodoName) { 9 | if !newTodoName.isEmpty { 10 | todos.append(.init(name: newTodoName)) 11 | Task { @MainActor in 12 | newTodoName = "" 13 | } 14 | 15 | } 16 | } 17 | } 18 | } 19 | 20 | struct NewTodoView_Previews: PreviewProvider { 21 | static var previews: some View { 22 | NewTodoView() 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/TodoExampleApp.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TodoExampleApp.swift 3 | // TodoExample 4 | // 5 | // Created by Johan Thorell on 2023-04-17. 6 | // 7 | 8 | import SwiftUI 9 | 10 | @main 11 | struct TodoExampleApp: App { 12 | var body: some Scene { 13 | WindowGroup { 14 | TodoView() 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/TodoItemView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import Atoms 3 | 4 | struct TodoItemView: View { 5 | @UseAtom var todo: Todo 6 | 7 | init(todoAtom: Atom) { 8 | self._todo = UseAtom(todoAtom) 9 | } 10 | var body: some View { 11 | HStack { 12 | TextField("", text: $todo.name) 13 | .strikethrough(todo.completed) 14 | Toggle("", isOn: $todo.completed) 15 | 16 | } 17 | } 18 | } 19 | 20 | struct TodoItemView_Previews: PreviewProvider { 21 | static var previews: some View { 22 | TodoItemView(todoAtom: .init(.init(name: "Todo"))) 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExample/TodoView.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import Atoms 3 | 4 | struct TodoView: View { 5 | @UseAtomValue(filteredTodosAtom) var filteredTodos 6 | @UseAtom(filterTodosOptionAtom) var filterTodosOption 7 | @UseAtom(searchTodosAtom) var searchText 8 | @UseAtom(todosAtom) var todos 9 | 10 | var body: some View { 11 | NavigationStack { 12 | List { 13 | NewTodoView() 14 | ForEach(filteredTodos) { todo in 15 | TodoItemView(todoAtom: Atom(todo).onUpdate(skip: 1) { newValue in 16 | if let index = todos.firstIndex(of: todo) { 17 | todos[index] = newValue 18 | } 19 | }) 20 | }.onDelete { indexSet in 21 | todos.remove(atOffsets: indexSet) 22 | } 23 | } 24 | .animation(.easeInOut, value: filteredTodos) 25 | .searchable(text: $searchText) 26 | .toolbar { 27 | Picker("", selection: $filterTodosOption) { 28 | ForEach(FilterOption.allCases, id: \.self) { 29 | Text($0.rawValue) 30 | } 31 | } 32 | } 33 | .navigationTitle("Todos") 34 | } 35 | } 36 | } 37 | 38 | struct TodoView_Previews: PreviewProvider { 39 | static var previews: some View { 40 | TodoView() 41 | .inject(todosAtom) { 42 | .mock 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /Examples/TodoExample/TodoExampleTests/TodoExampleTests.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TodoExampleTests.swift 3 | // TodoExampleTests 4 | // 5 | // Created by Johan Thorell on 2023-04-17. 6 | // 7 | 8 | import XCTest 9 | @testable import TodoExample 10 | import Atoms 11 | 12 | final class TodoExampleTests: XCTestCase { 13 | @MainActor 14 | func testFilterCompletedTodos() async throws { 15 | try await TestStore { store in 16 | let firstMock = Todo(name: "Todo1") 17 | let secondMock = Todo(name: "Todo2", completed: true) 18 | let mock: [Todo] = [firstMock, secondMock] 19 | store.inject(todosAtom) { 20 | return mock 21 | } 22 | @CaptureAtom(filterTodosOptionAtom) var filterTodosOption: FilterOption 23 | @CaptureAtomValue(filteredTodosAtom) var filteredTodos: [Todo] 24 | filterTodosOption = .completed 25 | try await expectEqual(filteredTodos, [secondMock]) 26 | } 27 | } 28 | 29 | @MainActor 30 | func testFilterNotCompletedTodos() async throws { 31 | try await TestStore { store in 32 | let firstMock = Todo(name: "Todo1") 33 | let secondMock = Todo(name: "Todo2", completed: true) 34 | let mock: [Todo] = [firstMock, secondMock] 35 | store.inject(todosAtom) { 36 | return mock 37 | } 38 | @CaptureAtom(filterTodosOptionAtom) var filterTodosOption: FilterOption 39 | @CaptureAtomValue(filteredTodosAtom) var filteredTodos: [Todo] 40 | filterTodosOption = .notCompleted 41 | try await expectEqual(filteredTodos, [firstMock]) 42 | } 43 | } 44 | 45 | @MainActor 46 | func testSearchTodos() async throws { 47 | try await TestStore { store in 48 | let firstMock = Todo(name: "Todo1") 49 | let secondMock = Todo(name: "Todo2", completed: true) 50 | let mock: [Todo] = [firstMock, secondMock] 51 | store.inject(todosAtom) { 52 | return mock 53 | } 54 | @CaptureAtomValue(filteredTodosAtom) var filteredTodos: [Todo] 55 | @CaptureAtom(searchTodosAtom) var searchTodos: String 56 | searchTodos = "Todo2" 57 | try await expectEqual(filteredTodos, [secondMock]) 58 | } 59 | } 60 | 61 | @MainActor 62 | func testSetCompletedTodo() async throws { 63 | try await TestStore { store in 64 | let firstMock = Todo(name: "Todo1") 65 | let secondMock = Todo(name: "Todo2") 66 | let mock: [Todo] = [firstMock, secondMock] 67 | @UseAtom(todosAtom) var todos: [Todo] 68 | todos = mock 69 | try await expectEqual(todos, mock) 70 | $todos[0].wrappedValue.completed = true 71 | try await expectEqual(todos.first?.completed, true) 72 | } 73 | } 74 | 75 | } 76 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 Johan Thorell. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Package.resolved: -------------------------------------------------------------------------------- 1 | { 2 | "pins" : [ 3 | { 4 | "identity" : "swift-async-expectations", 5 | "kind" : "remoteSourceControl", 6 | "location" : "https://github.com/bangerang/swift-async-expectations.git", 7 | "state" : { 8 | "revision" : "1f65a7dcc7810eb4e5108e007dcfc03466aac0e8", 9 | "version" : "0.1.0" 10 | } 11 | }, 12 | { 13 | "identity" : "swift-custom-dump", 14 | "kind" : "remoteSourceControl", 15 | "location" : "https://github.com/pointfreeco/swift-custom-dump", 16 | "state" : { 17 | "revision" : "84b30e1af72e0ffe6dfbfe39d53b8173caacf224", 18 | "version" : "0.10.2" 19 | } 20 | }, 21 | { 22 | "identity" : "swift-docc-plugin", 23 | "kind" : "remoteSourceControl", 24 | "location" : "https://github.com/apple/swift-docc-plugin", 25 | "state" : { 26 | "revision" : "9b1258905c21fc1b97bf03d1b4ca12c4ec4e5fda", 27 | "version" : "1.2.0" 28 | } 29 | }, 30 | { 31 | "identity" : "swift-docc-symbolkit", 32 | "kind" : "remoteSourceControl", 33 | "location" : "https://github.com/apple/swift-docc-symbolkit", 34 | "state" : { 35 | "revision" : "b45d1f2ed151d057b54504d653e0da5552844e34", 36 | "version" : "1.0.0" 37 | } 38 | }, 39 | { 40 | "identity" : "xctest-dynamic-overlay", 41 | "kind" : "remoteSourceControl", 42 | "location" : "https://github.com/pointfreeco/xctest-dynamic-overlay", 43 | "state" : { 44 | "revision" : "ab8c9f45843694dd16be4297e6d44c0634fd9913", 45 | "version" : "0.8.4" 46 | } 47 | } 48 | ], 49 | "version" : 2 50 | } 51 | -------------------------------------------------------------------------------- /Package.swift: -------------------------------------------------------------------------------- 1 | // swift-tools-version: 5.7 2 | // The swift-tools-version declares the minimum version of Swift required to build this package. 3 | 4 | import PackageDescription 5 | 6 | let package = Package( 7 | name: "Atoms", 8 | platforms: [.iOS(.v13), .macOS(.v10_15)], 9 | products: [ 10 | .library( 11 | name: "Atoms", 12 | targets: ["Atoms"]), 13 | ], 14 | dependencies: [ 15 | .package(url: "https://github.com/bangerang/swift-async-expectations.git", from: "0.1.0"), 16 | .package(url: "https://github.com/pointfreeco/swift-custom-dump", from: "0.3.0"), 17 | .package(url: "https://github.com/apple/swift-docc-plugin", from: "1.1.0"), 18 | .package(url: "https://github.com/pointfreeco/xctest-dynamic-overlay", from: "0.2.0") 19 | ], 20 | targets: [ 21 | .target( 22 | name: "Atoms", 23 | dependencies: [ 24 | .product(name: "CustomDump", package: "swift-custom-dump"), 25 | .product(name: "AsyncExpectations", package: "swift-async-expectations") 26 | ] 27 | ), 28 | .testTarget( 29 | name: "AtomsTests", 30 | dependencies: ["Atoms", .product(name: "AsyncExpectations", package: "swift-async-expectations")]), 31 | ] 32 | ) 33 | -------------------------------------------------------------------------------- /Resources/TestScreenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/Resources/TestScreenshot.png -------------------------------------------------------------------------------- /Sources/Atoms/AsyncState.swift: -------------------------------------------------------------------------------- 1 | /// An enum representing the state of an asynchronous operation. 2 | public enum AsyncState: Equatable { 3 | 4 | public static func == (lhs: AsyncState, rhs: AsyncState) -> Bool { 5 | switch (lhs, rhs) { 6 | case (.loading, .loading): 7 | return true 8 | case (.success(let lhs), .success(let rhs)): 9 | return areEqual(first: lhs, second: rhs) 10 | default: 11 | return false 12 | } 13 | } 14 | 15 | /// Indicates that the asynchronous operation is in progress. 16 | case loading 17 | 18 | /// Indicates that the asynchronous operation has completed successfully with the provided `Root` value. 19 | case success(Root) 20 | 21 | /// Indicates that the asynchronous operation has failed with the provided `Error`. 22 | case failure(Error) 23 | 24 | /// The `Root` value associated with the `.success` case, if any. 25 | public var value: Root? { 26 | if case .success(let value) = self { 27 | return value 28 | } 29 | return nil 30 | } 31 | 32 | /// Returns `true` if the `AsyncState` is in the `.loading` case, `false` otherwise. 33 | public var loading: Bool { 34 | if case .loading = self { 35 | return true 36 | } 37 | return false 38 | } 39 | 40 | /// The `Error` value associated with the `.failure` case, if any. 41 | public var failure: Error? { 42 | if case .failure(let error) = self { 43 | return error 44 | } 45 | return nil 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /Sources/Atoms/AtomProvider.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | 3 | /// An extension to `View` that provides convenience methods for injecting mutation closures and enabling logging for `Atom` operations. 4 | extension View { 5 | 6 | /// Injects a mutation closure for a given `ReadableAtom` into the view hierarchy. 7 | /// 8 | /// - Parameters: 9 | /// - readableAtom: A `ReadableAtom` instance whose value will be mutated by the provided closure. 10 | /// - mutation: A closure that returns the new value for the `ReadableAtom`. 11 | /// 12 | /// - Returns: The modified view with the mutation closure injected into the view hierarchy. 13 | /// 14 | /// Usage: 15 | /// 16 | /// ```swift 17 | /// Text("Hello, World!") 18 | /// .inject(counterAtom, mutation: { newValue }) 19 | /// ``` 20 | @MainActor 21 | public func inject(_ readableAtom: R, mutation: @escaping () -> R.T) -> Self { 22 | StoreConfig.store.inject(readableAtom, mutation: mutation) 23 | return self 24 | } 25 | 26 | /// Enables or disables logging for `Atom` operations. 27 | /// 28 | /// - Parameters: 29 | /// - debugScope: An optional `AtomStore.DebugScope` value to specify the logging scope. Defaults to `nil`. 30 | /// - enabled: A Boolean value that indicates whether logging should be enabled (`true`) or disabled (`false`). Defaults to `true`. 31 | /// 32 | /// - Returns: The modified view with the logging setting applied. 33 | /// 34 | /// Usage: 35 | /// 36 | /// ```swift 37 | /// Text("Hello, World!") 38 | /// .enableAtomLogging(debugScope: .include([counterAtom])) 39 | /// ``` 40 | @MainActor 41 | public func enableAtomLogging(_ debugScope: AtomStore.DebugScope? = nil, enabled: Bool = true) -> Self { 42 | AtomStore.shared.debugScope = debugScope 43 | AtomStore.shared.loggingEnabled = enabled 44 | return self 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /Sources/Atoms/Atoms/Atom.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | /// A generic `Atom` represents a state for a given value of type `T`. 4 | /// 5 | /// `Atom` manages a mutable state for a value of type `T`. 6 | /// 7 | /// Example: 8 | /// 9 | /// ```swift 10 | /// let myAtom = Atom(0) 11 | /// 12 | /// struct ContentView: View { 13 | /// @UseAtom(myAtom) var count 14 | /// 15 | /// var body: some View { 16 | /// VStack { 17 | /// Text("Current count: \(count)") 18 | /// TextField("Update count", value: $count, formatter: NumberFormatter()) 19 | /// } 20 | /// } 21 | /// } 22 | /// ``` 23 | /// 24 | /// Conforms to the `WritableAtom` and `ResettableAtom` protocols. 25 | 26 | public struct Atom: WritableAtom, ResettableAtom { 27 | /// The type of the value managed by the atom. 28 | public let type: T.Type 29 | /// A unique identifier for the atom. 30 | public let id: UUID 31 | /// A boolean indicating whether the atom should be kept alive in memory. 32 | public let keepAlive: Bool 33 | 34 | private let defaultValue: T 35 | private let setup: @MainActor () -> Void 36 | 37 | /// Creates an `Atom` with a default value. 38 | /// 39 | /// - Parameters: 40 | /// - defaultValue: The default value for the atom. 41 | /// - keepAlive: A boolean indicating whether the atom should be kept alive in memory. 42 | /// - file: The file where the atom is declared. 43 | /// - function: The function where the atom is declared. 44 | /// - line: The line number where the atom is declared. 45 | public init(_ defaultValue: T, keepAlive: Bool = false, file: String = #file, function: String = #function, line: Int = #line) { 46 | self.keepAlive = keepAlive 47 | let id = UUID() 48 | self.type = T.self 49 | self.id = id 50 | self.defaultValue = defaultValue 51 | self.setup = { 52 | let atom = AtomValue(defaultValue, id: id) 53 | let store = StoreConfig.store 54 | store.addAtomValue(atom, for: id) 55 | setDebugInfoForCurrentStorage(id: id, file: file, function: function, line: line) 56 | } 57 | atomConfigurations[id] = setup 58 | } 59 | 60 | /// Resets the atom to its default value, optionally executing a callback. 61 | /// 62 | /// This method is useful for resetting the atom to its initial state. If a callback is registered, 63 | /// it will be executed before updating the atom's value. 64 | public func reset() { 65 | Task { @MainActor in 66 | let store = StoreConfig.store 67 | guard let atom: AtomValue = store.getAtomValue(for: id) else { 68 | return 69 | } 70 | 71 | var value = defaultValue 72 | 73 | if let onReset = store.resettableCallbacks[id] as? (inout T) -> Void { 74 | onReset(&value) 75 | } 76 | 77 | atom.value = value 78 | } 79 | 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /Sources/Atoms/Atoms/DerivedAtom.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | /// A generic `DerivedAtom` represents a derived state for a given value of type `T`. 4 | /// 5 | /// `DerivedAtom` manages a read-only state derived from other atom states. The derived state is automatically updated 6 | /// when any of its dependencies change. 7 | /// 8 | /// Example: 9 | /// 10 | /// ```swift 11 | /// let usernameAtom = Atom("John Doe") 12 | /// let greetingAtom = DerivedAtom { 13 | /// @UseAtomValue(usernameAtom) var username 14 | /// return "Hello, \(username)!" 15 | /// } 16 | /// 17 | /// struct ContentView: View { 18 | /// @UseAtom(usernameAtom) var username 19 | /// @UseAtomValue(greetingAtom) var greeting 20 | /// 21 | /// var body: some View { 22 | /// VStack { 23 | /// Text(greeting) 24 | /// TextField("Update user", text: $username) 25 | /// .padding() 26 | /// .textFieldStyle(.rounded) 27 | /// } 28 | /// } 29 | /// } 30 | /// ``` 31 | /// 32 | /// Conforms to the `ReadableAtom` protocol. 33 | public struct DerivedAtom: ReadableAtom { 34 | /// The type of the value managed by the derived atom. 35 | public let type: T.Type 36 | /// A unique identifier for the derived atom. 37 | public let id: UUID 38 | /// A boolean indicating whether the derived atom should be kept alive in memory. 39 | public let keepAlive: Bool 40 | 41 | private let setup: @MainActor () -> Void 42 | 43 | /// Creates a `DerivedAtom` with a closure that computes the derived value. 44 | /// 45 | /// - Parameters: 46 | /// - keepAlive: A boolean indicating whether the derived atom should be kept alive in memory. 47 | /// - file: The file where the derived atom is declared. 48 | /// - function: The function where the derived atom is declared. 49 | /// - line: The line number where the derived atom is declared. 50 | /// - get: A closure that computes the derived value based on other atom values. 51 | public init(keepAlive: Bool = false, file: String = #file, function: String = #function, line: Int = #line, get: @MainActor @escaping () -> T) { 52 | self.keepAlive = keepAlive 53 | let id = UUID() 54 | self.id = id 55 | self.type = T.self 56 | self.setup = { 57 | _ = findObservables(using: id) { 58 | let atom = AtomValue(get(), id: id) 59 | let store = StoreConfig.store 60 | store.addAtomValue(atom, for: id) 61 | setDebugInfoForCurrentStorage(id: id, file: file, function: function, line: line) 62 | return atom 63 | } observedChanged: { atom in 64 | atom.value = get() 65 | } 66 | } 67 | atomConfigurations[id] = setup 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /Sources/Atoms/Atoms/ObservableObjectAtom.swift: -------------------------------------------------------------------------------- 1 | import SwiftUI 2 | import CustomDump 3 | 4 | /// An `ObservableObjectAtom` represents a readable state for a given value of type `T` that conforms to `ObservableObject`. 5 | /// 6 | /// `ObservableObjectAtom` wraps a value of type `T` and updates the state when the wrapped object's `objectWillChange` 7 | /// publisher sends an event. 8 | /// 9 | /// This can be used for more advanced state management, as it allows you to handle state inside the `ObservableObject` 10 | /// 11 | /// Usage: 12 | /// 13 | /// ```swift 14 | /// class Counter: ObservableObject { 15 | /// @Published var value: Int = 0 16 | /// } 17 | /// 18 | /// let myCounter = Counter() 19 | /// let myCounterAtom = ObservableObjectAtom(myCounter) 20 | /// 21 | /// struct ContentView: View { 22 | /// @UseAtomValue(myCounterAtom) var counter 23 | /// 24 | /// var body: some View { 25 | /// VStack { 26 | /// Text("Counter: \(counter.value)") 27 | /// Button("Increment") { 28 | /// counter.value += 1 29 | /// } 30 | /// } 31 | /// } 32 | /// } 33 | /// ``` 34 | public struct ObservableObjectAtom: ReadableAtom { 35 | /// The type of the value managed by the atom. 36 | public let type = T.self 37 | /// A unique identifier for the atom. 38 | public let id: UUID 39 | /// A boolean indicating whether the atom should be kept alive in memory. 40 | public let keepAlive: Bool 41 | 42 | private let setup: @MainActor () -> Void 43 | 44 | /// Creates an `Atom` with a default value. 45 | /// 46 | /// - Parameters: 47 | /// - object: The observable object for the atom. 48 | /// - keepAlive: A boolean indicating whether the atom should be kept alive in memory. 49 | /// - file: The file where the atom is declared. 50 | /// - function: The function where the atom is declared. 51 | /// - line: The line number where the atom is declared. 52 | public init(_ object: T, keepAlive: Bool = false, file: String = #file, function: String = #function, line: Int = #line) { 53 | self.keepAlive = keepAlive 54 | let id = UUID() 55 | self.id = id 56 | self.setup = { 57 | let atom = AtomValue(object, id: id) 58 | let store = StoreConfig.store 59 | store.addAtomValue(atom, for: id) 60 | object.objectWillChange.sink { _ in 61 | } receiveValue: { _ in 62 | Task { @MainActor in 63 | if let atomValue: AtomValue = store.getAtomValue(for: id) { 64 | AtomStore.shared.logValue(for: id, value: object) 65 | atomValue.objectWillChange.send() 66 | } 67 | } 68 | }.store(in: &StoreConfig.store.cancellables[id, default: []]) 69 | } 70 | atomConfigurations[id] = setup 71 | setDebugInfoForCurrentStorage(id: id, file: file, function: function, line: line) 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/AtomValue.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import Combine 3 | import CustomDump 4 | 5 | @dynamicMemberLookup 6 | class AtomValue: ObservableObject, GetSetPublisher { 7 | 8 | var _value: Root 9 | private var getterSubject = PassthroughSubject() 10 | var getterPublisher: AnyPublisher { 11 | return getterSubject.eraseToAnyPublisher() 12 | } 13 | private var setterSubject = PassthroughSubject() 14 | var setterPublisher: AnyPublisher { 15 | return setterSubject.eraseToAnyPublisher() 16 | } 17 | 18 | var customGet: (() -> Root)? 19 | var customSet: ((Root) -> Void)? 20 | var overriden = false 21 | 22 | let id: UUID 23 | 24 | var value: Root { 25 | get { 26 | getterSubject.send(()) 27 | if let customGet { 28 | return customGet() 29 | } 30 | return _value 31 | } set { 32 | let valueToTest = self.customGet?() ?? self._value 33 | if !areEqual(first: valueToTest, second: newValue) { 34 | Task { @MainActor in 35 | AtomStore.shared.logValue(for: id, value: newValue) 36 | } 37 | self.objectWillChange.send() 38 | if let set = self.customSet { 39 | set(newValue) 40 | } else { 41 | self._value = newValue 42 | } 43 | self.setterSubject.send(()) 44 | } 45 | } 46 | } 47 | 48 | init(_ value: Root, id: UUID, dontCheckEqual: Bool = false) { 49 | self.id = id 50 | self._value = value 51 | } 52 | 53 | subscript(dynamicMember member: KeyPath) -> T { 54 | value[keyPath: member] 55 | } 56 | 57 | subscript(dynamicMember member: WritableKeyPath) -> T { 58 | get { 59 | value[keyPath: member] 60 | } set { 61 | value[keyPath: member] = newValue 62 | } 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/Atomic.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | final class Atomic { 4 | private let queue: DispatchQueue 5 | private var _value: A 6 | public init(_ value: A, label: String? = nil) { 7 | let queueLabel = label ?? "Atomic serial queue" 8 | self.queue = DispatchQueue(label: queueLabel) 9 | self._value = value 10 | } 11 | 12 | public var value: A { 13 | return queue.sync { self._value } 14 | } 15 | 16 | public func mutate(_ transform: (inout A) -> Void) { 17 | queue.sync { 18 | transform(&self._value) 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/DebugInfo.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct DebugInfo { 4 | let name: String 5 | } 6 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/ExportAsyncExpectations.swift: -------------------------------------------------------------------------------- 1 | #if DEBUG 2 | @_exported import AsyncExpectations 3 | #endif 4 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/GetSetPublisher.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import Combine 3 | 4 | protocol GetSetPublisher { 5 | var getterPublisher: AnyPublisher { get } 6 | var setterPublisher: AnyPublisher { get } 7 | } 8 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/RefCounter.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import Combine 3 | 4 | let refCounterDecreased = PassthroughSubject() 5 | 6 | class RefCounter { 7 | internal init(id: UUID) { 8 | self.id = id 9 | let store = StoreConfig.store 10 | store.viewRefs.mutate { value in 11 | value[id, default: 0] += 1 12 | } 13 | } 14 | 15 | let id: UUID 16 | 17 | deinit { 18 | let store = StoreConfig.store 19 | store.viewRefs.mutate { value in 20 | value[id, default: 0] -= 1 21 | } 22 | 23 | 24 | DispatchQueue.main.async { [id] in 25 | if let viewsRefs = store.viewRefs.value[id], viewsRefs <= 0 { 26 | if store.watchCount.value[id, default: 0] == 0 { 27 | store.removeAtomValue(for: id) 28 | store.cancellables[id]?.removeAll() 29 | store.configuredAtoms.remove(id) 30 | } else { 31 | refCounterDecreased.send(id) 32 | } 33 | 34 | if let depencies = store.atomDependencies[id] { 35 | for depency in depencies { 36 | store.watchCount.mutate { value in 37 | value[depency]? -= 1 38 | } 39 | 40 | if store.watchCount.value[depency, default: 0] == 0, let dependencyViewRefs = store.viewRefs.value[depency], dependencyViewRefs <= 0 { 41 | store.removeAtomValue(for: id) 42 | store.configuredAtoms.remove(depency) 43 | store.cancellables[depency]?.removeAll() 44 | } else { 45 | refCounterDecreased.send(depency) 46 | } 47 | } 48 | } 49 | } 50 | } 51 | 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/ResettableAtom.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | protocol ResettableAtom { 4 | func reset() 5 | } 6 | 7 | extension ResettableAtom where Self: ReadableAtom { 8 | func onReset(_ value: @escaping (inout Self.T) -> Void) -> Self { 9 | Task { @MainActor in 10 | StoreConfig.store.resettableCallbacks[id] = value 11 | } 12 | 13 | return self 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/Scope.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | let defaultScopeID = UUID() 4 | enum Scope { 5 | @TaskLocal static var id = defaultScopeID 6 | } 7 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/StoreConfig.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | let defaultStoreID = UUID() 4 | enum StoreConfig { 5 | @TaskLocal static var store = Store(id: defaultStoreID) 6 | } 7 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/UsedAtomInfo.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import Combine 3 | 4 | struct UsedAtomInfo: Hashable { 5 | let scope: UUID 6 | let atom: UUID 7 | let watching: Bool 8 | var debounced = 0.0 9 | var keepAlive: Bool 10 | } 11 | 12 | let usedAtomsSubject: PassthroughSubject = .init() 13 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/WeakRef.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | struct WeakRef { 4 | weak var ref: AnyObject? 5 | } 6 | -------------------------------------------------------------------------------- /Sources/Atoms/Internal/WritableAtom.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | /// A protocol that represents a writable Atom with a value of a certain type `T`. 4 | public protocol WritableAtom: ReadableAtom {} 5 | -------------------------------------------------------------------------------- /Sources/Atoms/PropertyWrappers/CaptureAtom.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import SwiftUI 3 | 4 | /// A property wrapper that captures the atom's value and provides read and write access without being reactive to changes. 5 | /// 6 | /// Usage: 7 | /// 8 | /// ```swift 9 | /// @MainActor 10 | /// func testSignup() async throws { 11 | /// try await TestStore { store in 12 | /// @CaptureAtom(usernameAtom) var username: String 13 | /// @CaptureAtom(passwordAtom) var password: String 14 | /// @CaptureAtomValue(signupIsValidAtom) var signupIsValid: Bool 15 | /// XCTAssert(!signupIsValid) 16 | /// username = "johndoe" 17 | /// password = "passw0rD" 18 | /// try await expect(signupIsValid) 19 | /// } 20 | /// } 21 | /// ``` 22 | /// 23 | 24 | 25 | @propertyWrapper @MainActor 26 | public struct CaptureAtom { 27 | /// The current value of the wrapped `ReadableAtom`. 28 | public var wrappedValue: T { 29 | get { 30 | return atom.value 31 | } nonmutating set { 32 | atom.value = newValue 33 | } 34 | } 35 | 36 | private let atom: AtomValue 37 | private var refCounter: RefCounter? = nil 38 | 39 | /// Initializes a new `CaptureAtom` instance for the given `WritableAtom`. 40 | /// 41 | /// - Parameter writableAtom: A `WritableAtom` instance whose value will be captured by the `CaptureAtom`. 42 | /// 43 | public init(_ writableAtom: W) where W.T == T { 44 | writableAtom.runSetupIfNeeded() 45 | let store = StoreConfig.store 46 | if !writableAtom.keepAlive { 47 | if Scope.id == defaultScopeID { 48 | refCounter = RefCounter(id: writableAtom.id) 49 | } else { 50 | store.watchCount.mutate { value in 51 | value[writableAtom.id, default: 0] += 1 52 | } 53 | } 54 | } 55 | atom = store.getAtomValue(for: writableAtom.id) 56 | store.usedAtoms[Scope.id, default: []].append(.init(scope: Scope.id, 57 | atom: writableAtom.id, 58 | watching: false, 59 | keepAlive: writableAtom.keepAlive)) 60 | usedAtomsSubject.send(.init(scope: Scope.id, 61 | atom: writableAtom.id, 62 | watching: false, 63 | keepAlive: writableAtom.keepAlive)) 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /Sources/Atoms/PropertyWrappers/CaptureAtomValue.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import SwiftUI 3 | 4 | /// A property wrapper that captures the atom's value and provides read-only access without being reactive to changes. 5 | /// 6 | /// Usage: 7 | /// 8 | /// ```swift 9 | /// let textAtom = Atom("") 10 | /// let derivedAtom = DerivedAtom { 11 | /// @UseAtomValue(textAtom) var text 12 | /// return text.count 13 | /// } 14 | /// let derivedAtom2 = DerivedAtom { 15 | /// @UseAtomValue(textAtom) var text 16 | /// @CaptureAtomValue(derivedAtom) var count 17 | /// return "\(text) is \(count) long" 18 | /// } 19 | /// 20 | /// struct ContentView: View { 21 | /// @UseAtom(textAtom) var text 22 | /// @UseAtomValue(derivedAtom2) var derived 23 | /// var body: some View { 24 | /// TextField("", text: $text) 25 | /// Text("\(derived)") 26 | /// } 27 | /// } 28 | /// ``` 29 | @propertyWrapper @MainActor 30 | public struct CaptureAtomValue { 31 | /// The current value of the wrapped `ReadableAtom`. 32 | public var wrappedValue: T { 33 | return readOnlyAtom.value 34 | } 35 | private var refCounter: RefCounter? = nil 36 | private let readOnlyAtom: AtomValue 37 | 38 | /// Initializes a new `CaptureAtomValue` instance for the given `ReadableAtom`. 39 | /// 40 | /// - Parameters: 41 | /// - readableAtom: A `ReadableAtom` instance whose value will be managed by the `CaptureAtomValue`. 42 | public init(_ readableAtom: R) where R.T == T { 43 | readableAtom.runSetupIfNeeded() 44 | let store = StoreConfig.store 45 | if !readableAtom.keepAlive { 46 | if Scope.id == defaultScopeID { 47 | refCounter = RefCounter(id: readableAtom.id) 48 | } else { 49 | store.watchCount.mutate { value in 50 | value[readableAtom.id, default: 0] += 1 51 | } 52 | } 53 | } 54 | readOnlyAtom = store.getAtomValue(for: readableAtom.id) 55 | store.usedAtoms[Scope.id, default: []].append(.init(scope: Scope.id, 56 | atom: readableAtom.id, 57 | watching: false, 58 | keepAlive: readableAtom.keepAlive)) 59 | usedAtomsSubject.send(.init(scope: Scope.id, 60 | atom: readableAtom.id, 61 | watching: false, 62 | keepAlive: readableAtom.keepAlive)) 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /Sources/Atoms/PropertyWrappers/UseAtom.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import SwiftUI 3 | 4 | /// A property wrapper that provides read and write access to the atom's value, and it's reactive to changes. 5 | /// 6 | /// Usage: 7 | /// 8 | /// Usage: 9 | /// 10 | /// ```swift 11 | /// let textAtom = Atom("Hello") 12 | /// 13 | /// struct ContentView: View { 14 | /// @UseAtom(textAtom) var text 15 | /// var body: some View { 16 | /// TextField("", text: $text) 17 | /// } 18 | /// } 19 | /// ``` 20 | /// 21 | @propertyWrapper 22 | public struct UseAtom: DynamicProperty { 23 | 24 | /// The current value of the wrapped `WritableAtom`. 25 | public var wrappedValue: T { 26 | get { 27 | return atom.value 28 | } nonmutating set { 29 | atom.value = newValue 30 | } 31 | } 32 | 33 | /// A `Binding` to the value of the wrapped `WritableAtom`. 34 | public var projectedValue: Binding { 35 | return $atom.value 36 | } 37 | 38 | @ObservedObject private var atom: AtomValue 39 | private var refCounter: RefCounter? = nil 40 | 41 | /// Initializes a new `UseAtom` instance for the given `WritableAtom`. 42 | /// 43 | /// - Parameters: 44 | /// - writableAtom: A `WritableAtom` instance whose value will be managed by the `UseAtom`. 45 | /// - debounce: An optional time interval for debouncing the value updates. Default is `0`. 46 | /// 47 | public init(_ writableAtom: W, debounce: TimeInterval = 0) where W.T == T { 48 | writableAtom.runSetupIfNeeded() 49 | let store = StoreConfig.store 50 | if !writableAtom.keepAlive { 51 | if Scope.id == defaultScopeID { 52 | refCounter = RefCounter(id: writableAtom.id) 53 | } else { 54 | store.watchCount.mutate { value in 55 | value[writableAtom.id, default: 0] += 1 56 | } 57 | } 58 | } 59 | let atom: AtomValue = store.getAtomValue(for: writableAtom.id) 60 | _atom = .init(wrappedValue: atom) 61 | store.usedAtoms[Scope.id, default: []].append(.init(scope: Scope.id, 62 | atom: writableAtom.id, 63 | watching: true, debounced: debounce, 64 | keepAlive: writableAtom.keepAlive)) 65 | usedAtomsSubject.send(.init(scope: Scope.id, 66 | atom: writableAtom.id, 67 | watching: true, 68 | debounced: debounce, 69 | keepAlive: writableAtom.keepAlive)) 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /Sources/Atoms/PropertyWrappers/UseAtomValue.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | import SwiftUI 3 | import Combine 4 | 5 | /// A property wrapper that provides read-only access to the atom's value, and it's reactive to changes. 6 | /// 7 | /// Usage: 8 | /// 9 | /// ```swift 10 | /// let textAtom = Atom("Hello") 11 | /// let derivedAtom = DerivedAtom { 12 | /// @UseAtomValue(textAtom) var text 13 | /// return text.count 14 | /// } 15 | /// 16 | /// struct ContentView: View { 17 | /// @UseAtom(textAtom) var text 18 | /// @UseAtomValue(derivedAtom) var derived 19 | /// var body: some View { 20 | /// TextField("", text: $text) 21 | /// Text("\(derived)") 22 | /// } 23 | /// } 24 | /// ``` 25 | /// 26 | @propertyWrapper 27 | public struct UseAtomValue: DynamicProperty { 28 | 29 | /// The current value of the wrapped `WritableAtom`. 30 | public var wrappedValue: T { 31 | return atom.value 32 | } 33 | 34 | @ObservedObject private var atom: AtomValue 35 | private var refCounter: RefCounter? = nil 36 | 37 | /// Initializes a new `UseAtomValue` instance for the given `ReadableAtom`. 38 | /// 39 | /// - Parameters: 40 | /// - readableAtom: A `ReadableAtom` instance whose value will be managed by the `UseAtomValue`. 41 | /// - debounce: An optional time interval for debouncing the value updates. Default is `0`. 42 | public init(_ readableAtom: R, debounce: TimeInterval = 0) where R.T == T { 43 | readableAtom.runSetupIfNeeded() 44 | let store = StoreConfig.store 45 | if !readableAtom.keepAlive { 46 | if Scope.id == defaultScopeID { 47 | refCounter = RefCounter(id: readableAtom.id) 48 | } else { 49 | store.watchCount.mutate { value in 50 | value[readableAtom.id, default: 0] += 1 51 | } 52 | } 53 | } 54 | let atom: AtomValue = store.getAtomValue(for: readableAtom.id) 55 | _atom = .init(wrappedValue: atom) 56 | store.usedAtoms[Scope.id, default: []].append(.init(scope: Scope.id, 57 | atom: readableAtom.id, 58 | watching: true, 59 | debounced: debounce, 60 | keepAlive: readableAtom.keepAlive)) 61 | usedAtomsSubject.send(.init(scope: Scope.id, 62 | atom: readableAtom.id, 63 | watching: true, 64 | debounced: debounce, 65 | keepAlive: readableAtom.keepAlive)) 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /Sources/Atoms/TestStore.swift: -------------------------------------------------------------------------------- 1 | import Foundation 2 | 3 | /// A test store for running isolated operations on a separate `Store` instance. 4 | @MainActor 5 | public struct TestStore { 6 | 7 | /// Initializes a new `TestStore` and runs the specified operation on a separate `Store` instance. 8 | /// 9 | /// - Parameter operation: An asynchronous closure that takes a `Store` instance and performs the desired operations. 10 | @discardableResult 11 | public init(operation: @escaping (Store) async throws -> Void) async rethrows { 12 | let newStore = Store() 13 | newStore.onUpdates = StoreConfig.store.onUpdates 14 | try await StoreConfig.$store.withValue(newStore) { 15 | try await operation(newStore) 16 | } 17 | } 18 | } 19 | 20 | -------------------------------------------------------------------------------- /docs/assets.json: -------------------------------------------------------------------------------- 1 | {"images":[],"downloads":[],"videos":[]} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncatom/cancel().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"cancel"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncatom\/cancel()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/cancel()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Cancel the current async operation."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"cancel"},{"kind":"text","text":"()"}],"title":"cancel()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms9AsyncAtomV6cancelyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncAtom/cancel()":{"role":"symbol","title":"cancel()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"cancel"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Cancel the current async operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/cancel()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncatom\/cancel()"},"doc://Atoms/documentation/Atoms/AsyncAtom":{"role":"symbol","title":"AsyncAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncAtom"}],"url":"\/documentation\/atoms\/asyncatom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncatom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The unique identifier for the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms9AsyncAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncAtom":{"role":"symbol","title":"AsyncAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncAtom"}],"url":"\/documentation\/atoms\/asyncatom"},"doc://Atoms/documentation/Atoms/AsyncAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"The unique identifier for the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncatom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean value indicating if the atom should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms9AsyncAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncAtom":{"role":"symbol","title":"AsyncAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncAtom"}],"url":"\/documentation\/atoms\/asyncatom"},"doc://Atoms/documentation/Atoms/AsyncAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean value indicating if the atom should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncatom\/keepalive"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncatom/reload().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reload"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncatom\/reload()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/reload()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Reloads the async operation, updating the atom’s state."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reload"},{"kind":"text","text":"()"}],"title":"reload()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms9AsyncAtomV6reloadyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncAtom":{"role":"symbol","title":"AsyncAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncAtom"}],"url":"\/documentation\/atoms\/asyncatom"},"doc://Atoms/documentation/Atoms/AsyncAtom/reload()":{"role":"symbol","title":"reload()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reload"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Reloads the async operation, updating the atom’s state."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncAtom\/reload()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncatom\/reload()"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncsequenceatom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncsequenceatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The unique identifier for the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms17AsyncSequenceAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncSequenceAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"The unique identifier for the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncsequenceatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncSequenceAtom":{"role":"symbol","title":"AsyncSequenceAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncSequenceAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncSequenceAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" while iterating through an "},{"type":"codeVoice","code":"AsyncSequence"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncSequenceAtom"}],"url":"\/documentation\/atoms\/asyncsequenceatom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncsequenceatom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncsequenceatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean value indicating if the atom should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms17AsyncSequenceAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncSequenceAtom":{"role":"symbol","title":"AsyncSequenceAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncSequenceAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"AsyncSequenceAtom"},{"type":"text","text":" represents an asynchronous state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" while iterating through an "},{"type":"codeVoice","code":"AsyncSequence"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncSequenceAtom"}],"url":"\/documentation\/atoms\/asyncsequenceatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncSequenceAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean value indicating if the atom should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncSequenceAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncsequenceatom\/keepalive"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncstate/equatable-implementations.json: -------------------------------------------------------------------------------- 1 | {"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/equatable-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/Equatable-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Operators","identifiers":["doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/!=(_:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"Atoms"}],"role":"collectionGroup","title":"Equatable Implementations"},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState/!=(_:_:)":{"role":"symbol","title":"!=(_:_:)","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"!="},{"kind":"text","text":" "},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":", "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/!=(_:_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/!=(_:_:)"},"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncstate/failure(_:).json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/failure(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/failure(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Indicates that the asynchronous operation has failed with the provided "},{"type":"codeVoice","code":"Error"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":")"}],"title":"AsyncState.failure(_:)","roleHeading":"Case","role":"symbol","symbolKind":"case","externalID":"s:5Atoms10AsyncStateO7failureyACyxGs5Error_pcAEmlF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncState/failure(_:)":{"role":"symbol","title":"AsyncState.failure(_:)","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Indicates that the asynchronous operation has failed with the provided "},{"type":"codeVoice","code":"Error"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/failure(_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/failure(_:)"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncstate/failure.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":"? { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/failure"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/failure","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Error"},{"type":"text","text":" value associated with the "},{"type":"codeVoice","code":".failure"},{"type":"text","text":" case, if any."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":"?"}],"title":"failure","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10AsyncStateO7failures5Error_pSgvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState/failure":{"role":"symbol","title":"failure","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"failure"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Error","preciseIdentifier":"s:s5ErrorP"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Error"},{"type":"text","text":" value associated with the "},{"type":"codeVoice","code":".failure"},{"type":"text","text":" case, if any."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/failure","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/failure"},"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncstate/loading-swift.enum.case.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"loading"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/loading-swift.enum.case"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/loading-swift.enum.case","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Indicates that the asynchronous operation is in progress."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"loading"}],"title":"AsyncState.loading","roleHeading":"Case","role":"symbol","symbolKind":"case","externalID":"s:5Atoms10AsyncStateO7loadingyACyxGAEmlF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncState/loading-swift.enum.case":{"role":"symbol","title":"AsyncState.loading","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"loading"}],"abstract":[{"type":"text","text":"Indicates that the asynchronous operation is in progress."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/loading-swift.enum.case","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/loading-swift.enum.case"},"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncstate/success(_:).json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"success"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":")"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/success(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/success(_:)","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Indicates that the asynchronous operation has completed successfully with the provided "},{"type":"codeVoice","code":"Root"},{"type":"text","text":" value."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"success"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":")"}],"title":"AsyncState.success(_:)","roleHeading":"Case","role":"symbol","symbolKind":"case","externalID":"s:5Atoms10AsyncStateO7successyACyxGxcAEmlF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncState/success(_:)":{"role":"symbol","title":"AsyncState.success(_:)","fragments":[{"kind":"keyword","text":"case"},{"kind":"text","text":" "},{"kind":"identifier","text":"success"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":")"}],"abstract":[{"type":"text","text":"Indicates that the asynchronous operation has completed successfully with the provided "},{"type":"codeVoice","code":"Root"},{"type":"text","text":" value."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/success(_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/success(_:)"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/asyncstate/value.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":"? { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/asyncstate\/value"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/value","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Root"},{"type":"text","text":" value associated with the "},{"type":"codeVoice","code":".success"},{"type":"text","text":" case, if any."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":"?"}],"title":"value","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10AsyncStateO5valuexSgvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AsyncState"]]},"references":{"doc://Atoms/documentation/Atoms/AsyncState/value":{"role":"symbol","title":"value","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"value"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Root"},{"kind":"text","text":"?"}],"abstract":[{"type":"text","text":"The "},{"type":"codeVoice","code":"Root"},{"type":"text","text":" value associated with the "},{"type":"codeVoice","code":".success"},{"type":"text","text":" case, if any."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState\/value","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/asyncstate\/value"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AsyncState":{"role":"symbol","title":"AsyncState","fragments":[{"kind":"keyword","text":"enum"},{"kind":"text","text":" "},{"kind":"identifier","text":"AsyncState"}],"abstract":[{"type":"text","text":"An enum representing the state of an asynchronous operation."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AsyncState","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AsyncState"}],"url":"\/documentation\/atoms\/asyncstate"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/atom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms4AtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms/Atom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/id"},"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/atom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean indicating whether the atom should be kept alive in memory."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms4AtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms/Atom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean indicating whether the atom should be kept alive in memory."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/keepalive"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/atom/readableatom-implementations.json: -------------------------------------------------------------------------------- 1 | {"variants":[{"paths":["\/documentation\/atoms\/atom\/readableatom-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/ReadableAtom-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Methods","identifiers":["doc:\/\/Atoms\/documentation\/Atoms\/Atom\/debugLabel(_:)","doc:\/\/Atoms\/documentation\/Atoms\/Atom\/onUpdate(skip:_:)"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"Atoms"}],"role":"collectionGroup","title":"ReadableAtom Implementations"},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/Atom/onUpdate(skip:_:)":{"role":"symbol","title":"onUpdate(skip:_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"onUpdate"},{"kind":"text","text":"("},{"kind":"externalParam","text":"skip"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Int","preciseIdentifier":"s:Si"},{"kind":"text","text":", ("},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Void","preciseIdentifier":"s:s4Voida"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"abstract":[{"type":"text","text":"Registers a callback to be called when the Atom’s value updates."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/onUpdate(skip:_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/onupdate(skip:_:)"},"doc://Atoms/documentation/Atoms/Atom/debugLabel(_:)":{"role":"symbol","title":"debugLabel(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugLabel"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/debugLabel(_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/debuglabel(_:)"},"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/atom/reset().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]},{"kind":"content","content":[{"anchor":"discussion","level":2,"type":"heading","text":"Discussion"},{"type":"paragraph","inlineContent":[{"type":"text","text":"This method is useful for resetting the atom to its initial state. If a callback is registered,"},{"type":"text","text":" "},{"type":"text","text":"it will be executed before updating the atom’s value."}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atom\/reset()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/reset()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Resets the atom to its default value, optionally executing a callback."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"title":"reset()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms4AtomV5resetyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"},"doc://Atoms/documentation/Atoms/Atom/reset()":{"role":"symbol","title":"reset()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Resets the atom to its default value, optionally executing a callback."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/reset()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/reset()"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/atom/type.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms4AtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/Atom"]]},"references":{"doc://Atoms/documentation/Atoms/Atom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atom\/type"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/Atom":{"role":"symbol","title":"Atom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"Atom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" represents a state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/Atom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"Atom"}],"url":"\/documentation\/atoms\/atom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/atomstore/loggingenabled.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"loggingEnabled"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atomstore\/loggingenabled"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore\/loggingEnabled","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A Boolean value that indicates whether logging is enabled for "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" operations. Defaults to "},{"type":"codeVoice","code":"false"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"loggingEnabled"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"loggingEnabled","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms9AtomStoreV14loggingEnabledSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AtomStore"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AtomStore/loggingEnabled":{"role":"symbol","title":"loggingEnabled","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"loggingEnabled"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A Boolean value that indicates whether logging is enabled for "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" operations. Defaults to "},{"type":"codeVoice","code":"false"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore\/loggingEnabled","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atomstore\/loggingenabled"},"doc://Atoms/documentation/Atoms/AtomStore":{"role":"symbol","title":"AtomStore","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AtomStore"}],"abstract":[{"type":"codeVoice","code":"AtomStore"},{"type":"text","text":" is responsible for injecting mutation closures into the store and enabling logging for "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" operations. It provides a shared singleton instance for convenient access throughout your application."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AtomStore"}],"url":"\/documentation\/atoms\/atomstore"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/atomstore/shared.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"shared"},{"kind":"text","text":": "},{"kind":"typeIdentifier","identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore","preciseIdentifier":"s:5Atoms9AtomStoreV","text":"AtomStore"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/atomstore\/shared"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore\/shared","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The shared singleton instance of "},{"type":"codeVoice","code":"AtomStore"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"shared"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"AtomStore","preciseIdentifier":"s:5Atoms9AtomStoreV"}],"title":"shared","roleHeading":"Type Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms9AtomStoreV6sharedACvpZ","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/AtomStore"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/AtomStore/shared":{"role":"symbol","title":"shared","fragments":[{"kind":"keyword","text":"static"},{"kind":"text","text":" "},{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"shared"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"AtomStore","preciseIdentifier":"s:5Atoms9AtomStoreV"}],"abstract":[{"type":"text","text":"The shared singleton instance of "},{"type":"codeVoice","code":"AtomStore"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore\/shared","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/atomstore\/shared"},"doc://Atoms/documentation/Atoms/AtomStore":{"role":"symbol","title":"AtomStore","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"AtomStore"}],"abstract":[{"type":"codeVoice","code":"AtomStore"},{"type":"text","text":" is responsible for injecting mutation closures into the store and enabling logging for "},{"type":"codeVoice","code":"Atom"},{"type":"text","text":" operations. It provides a shared singleton instance for convenient access throughout your application."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/AtomStore","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"AtomStore"}],"url":"\/documentation\/atoms\/atomstore"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/captureatom/wrappedvalue.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"nonmutating"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/captureatom\/wrappedvalue"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtom\/wrappedValue","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"ReadableAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"title":"wrappedValue","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11CaptureAtomV12wrappedValuexvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtom"]]},"references":{"doc://Atoms/documentation/Atoms/CaptureAtom/wrappedValue":{"role":"symbol","title":"wrappedValue","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"ReadableAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtom\/wrappedValue","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/captureatom\/wrappedvalue"},"doc://Atoms/documentation/Atoms/CaptureAtom":{"role":"symbol","title":"CaptureAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"CaptureAtom"}],"abstract":[{"type":"text","text":"A property wrapper that captures the atom’s value and provides read and write access without being reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"CaptureAtom"}],"url":"\/documentation\/atoms\/captureatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/captureatomvalue/wrappedvalue.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/captureatomvalue\/wrappedvalue"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtomValue\/wrappedValue","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"ReadableAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"title":"wrappedValue","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms16CaptureAtomValueV07wrappedD0xvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtomValue"]]},"references":{"doc://Atoms/documentation/Atoms/CaptureAtomValue":{"role":"symbol","title":"CaptureAtomValue","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"CaptureAtomValue"}],"abstract":[{"type":"text","text":"A property wrapper that captures the atom’s value and provides read-only access without being reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtomValue","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"CaptureAtomValue"}],"url":"\/documentation\/atoms\/captureatomvalue"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/CaptureAtomValue/wrappedValue":{"role":"symbol","title":"wrappedValue","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"ReadableAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/CaptureAtomValue\/wrappedValue","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/captureatomvalue\/wrappedvalue"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/derivedatom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/derivedatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the derived atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11DerivedAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/DerivedAtom":{"role":"symbol","title":"DerivedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"DerivedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"DerivedAtom"},{"type":"text","text":" represents a derived state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"DerivedAtom"}],"url":"\/documentation\/atoms\/derivedatom"},"doc://Atoms/documentation/Atoms/DerivedAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the derived atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/derivedatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/derivedatom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/derivedatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean indicating whether the derived atom should be kept alive in memory."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11DerivedAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/DerivedAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean indicating whether the derived atom should be kept alive in memory."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/derivedatom\/keepalive"},"doc://Atoms/documentation/Atoms/DerivedAtom":{"role":"symbol","title":"DerivedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"DerivedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"DerivedAtom"},{"type":"text","text":" represents a derived state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"DerivedAtom"}],"url":"\/documentation\/atoms\/derivedatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/derivedatom/type.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/derivedatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by the derived atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11DerivedAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/DerivedAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by the derived atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/derivedatom\/type"},"doc://Atoms/documentation/Atoms/DerivedAtom":{"role":"symbol","title":"DerivedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"DerivedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"DerivedAtom"},{"type":"text","text":" represents a derived state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/DerivedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"DerivedAtom"}],"url":"\/documentation\/atoms\/derivedatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/getsetatom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/getsetatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for this "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10GetSetAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/GetSetAtom":{"role":"symbol","title":"GetSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"GetSetAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" represents a readable and writable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GetSetAtom"}],"url":"\/documentation\/atoms\/getsetatom"},"doc://Atoms/documentation/Atoms/GetSetAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for this "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/getsetatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/getsetatom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/getsetatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean flag indicating whether the "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10GetSetAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/GetSetAtom":{"role":"symbol","title":"GetSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"GetSetAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" represents a readable and writable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GetSetAtom"}],"url":"\/documentation\/atoms\/getsetatom"},"doc://Atoms/documentation/Atoms/GetSetAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean flag indicating whether the "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/getsetatom\/keepalive"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/getsetatom/reset().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/getsetatom\/reset()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/reset()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Resets the value of the "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" to the initial state as defined by the custom getter."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"title":"reset()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms10GetSetAtomV5resetyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/GetSetAtom/reset()":{"role":"symbol","title":"reset()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Resets the value of the "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" to the initial state as defined by the custom getter."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/reset()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/getsetatom\/reset()"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/GetSetAtom":{"role":"symbol","title":"GetSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"GetSetAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" represents a readable and writable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GetSetAtom"}],"url":"\/documentation\/atoms\/getsetatom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/getsetatom/type.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/getsetatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by this "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms10GetSetAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/GetSetAtom":{"role":"symbol","title":"GetSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"GetSetAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":" represents a readable and writable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"GetSetAtom"}],"url":"\/documentation\/atoms\/getsetatom"},"doc://Atoms/documentation/Atoms/GetSetAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by this "},{"type":"codeVoice","code":"GetSetAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/GetSetAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/getsetatom\/type"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/observableobjectatom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/observableobjectatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms20ObservableObjectAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ObservableObjectAtom":{"role":"symbol","title":"ObservableObjectAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ObservableObjectAtom"}],"abstract":[{"type":"text","text":"An "},{"type":"codeVoice","code":"ObservableObjectAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that conforms to "},{"type":"codeVoice","code":"ObservableObject"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ObservableObjectAtom"}],"url":"\/documentation\/atoms\/observableobjectatom"},"doc://Atoms/documentation/Atoms/ObservableObjectAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/observableobjectatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/observableobjectatom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/observableobjectatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean indicating whether the atom should be kept alive in memory."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms20ObservableObjectAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ObservableObjectAtom":{"role":"symbol","title":"ObservableObjectAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ObservableObjectAtom"}],"abstract":[{"type":"text","text":"An "},{"type":"codeVoice","code":"ObservableObjectAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that conforms to "},{"type":"codeVoice","code":"ObservableObject"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ObservableObjectAtom"}],"url":"\/documentation\/atoms\/observableobjectatom"},"doc://Atoms/documentation/Atoms/ObservableObjectAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean indicating whether the atom should be kept alive in memory."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/observableobjectatom\/keepalive"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/observableobjectatom/type.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/observableobjectatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by the atom."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms20ObservableObjectAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ObservableObjectAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by the atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/observableobjectatom\/type"},"doc://Atoms/documentation/Atoms/ObservableObjectAtom":{"role":"symbol","title":"ObservableObjectAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"ObservableObjectAtom"}],"abstract":[{"type":"text","text":"An "},{"type":"codeVoice","code":"ObservableObjectAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that conforms to "},{"type":"codeVoice","code":"ObservableObject"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ObservableObjectAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ObservableObjectAtom"}],"url":"\/documentation\/atoms\/observableobjectatom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/publishedatom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publishedatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for this "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublishedAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/PublishedAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for this "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publishedatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/PublishedAtom":{"role":"symbol","title":"PublishedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublishedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Published"},{"type":"text","text":" property wrapper."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublishedAtom"}],"url":"\/documentation\/atoms\/publishedatom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/publishedatom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publishedatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A boolean flag indicating whether the "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublishedAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/PublishedAtom":{"role":"symbol","title":"PublishedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublishedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Published"},{"type":"text","text":" property wrapper."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublishedAtom"}],"url":"\/documentation\/atoms\/publishedatom"},"doc://Atoms/documentation/Atoms/PublishedAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A boolean flag indicating whether the "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publishedatom\/keepalive"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/publishedatom/type.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publishedatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value managed by this "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublishedAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom"]]},"references":{"doc://Atoms/documentation/Atoms/PublishedAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value managed by this "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publishedatom\/type"},"doc://Atoms/documentation/Atoms/PublishedAtom":{"role":"symbol","title":"PublishedAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublishedAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublishedAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Published"},{"type":"text","text":" property wrapper."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublishedAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublishedAtom"}],"url":"\/documentation\/atoms\/publishedatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/publisheratom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publisheratom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublisherAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom"]]},"references":{"doc://Atoms/documentation/Atoms/PublisherAtom":{"role":"symbol","title":"PublisherAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublisherAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Publisher"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublisherAtom"}],"url":"\/documentation\/atoms\/publisheratom"},"doc://Atoms/documentation/Atoms/PublisherAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publisheratom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/publisheratom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/publisheratom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A flag indicating if the "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":" should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms13PublisherAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/PublisherAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A flag indicating if the "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":" should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/publisheratom\/keepalive"},"doc://Atoms/documentation/Atoms/PublisherAtom":{"role":"symbol","title":"PublisherAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"PublisherAtom"}],"abstract":[{"type":"text","text":"A generic "},{"type":"codeVoice","code":"PublisherAtom"},{"type":"text","text":" represents a readable state for a given value of type "},{"type":"codeVoice","code":"T"},{"type":"text","text":" that comes from a "},{"type":"codeVoice","code":"Publisher"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/PublisherAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"PublisherAtom"}],"url":"\/documentation\/atoms\/publisheratom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/readableatom/debuglabel(_:).json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugLabel"},{"kind":"text","text":"("},{"kind":"externalParam","text":"_"},{"kind":"text","text":" "},{"kind":"internalParam","text":"label"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/debuglabel(_:)"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/debugLabel(_:)","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"role":"symbol","title":"debugLabel(_:)","roleHeading":"Instance Method","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugLabel"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"symbolKind":"method","externalID":"s:5Atoms12ReadableAtomPAAE10debugLabelyxSSF","extendedModule":"Atoms","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ReadableAtom/debugLabel(_:)":{"role":"symbol","title":"debugLabel(_:)","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"debugLabel"},{"kind":"text","text":"("},{"kind":"typeIdentifier","text":"String","preciseIdentifier":"s:SS"},{"kind":"text","text":") -> "},{"kind":"typeIdentifier","text":"Self"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/debugLabel(_:)","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/readableatom\/debuglabel(_:)"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/readableatom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the Atom."}],"kind":"symbol","metadata":{"role":"symbol","title":"id","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"symbolKind":"property","externalID":"s:5Atoms12ReadableAtomP2id10Foundation4UUIDVvp","required":true,"modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ReadableAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the Atom."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/id","kind":"symbol","required":true,"type":"topic","url":"\/documentation\/atoms\/readableatom\/id"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/readableatom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A Boolean value indicating whether the Atom should be kept alive."}],"kind":"symbol","metadata":{"role":"symbol","title":"keepAlive","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"symbolKind":"property","externalID":"s:5Atoms12ReadableAtomP9keepAliveSbvp","required":true,"modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ReadableAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A Boolean value indicating whether the Atom should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/keepAlive","kind":"symbol","required":true,"type":"topic","url":"\/documentation\/atoms\/readableatom\/keepalive"},"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/readableatom/t.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"associatedtype"},{"kind":"text","text":" "},{"kind":"identifier","text":"T"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/t"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/T","interfaceLanguage":"swift"},"kind":"symbol","metadata":{"role":"symbol","title":"T","roleHeading":"Associated Type","fragments":[{"kind":"keyword","text":"associatedtype"},{"kind":"text","text":" "},{"kind":"identifier","text":"T"}],"symbolKind":"associatedtype","externalID":"s:5Atoms12ReadableAtomP1TQa","required":true,"modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"},"doc://Atoms/documentation/Atoms/ReadableAtom/T":{"role":"symbol","title":"T","fragments":[{"kind":"keyword","text":"associatedtype"},{"kind":"text","text":" "},{"kind":"identifier","text":"T"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/T","kind":"symbol","required":true,"type":"topic","url":"\/documentation\/atoms\/readableatom\/t"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/readableatom/type.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/readableatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the Atom’s value."}],"kind":"symbol","metadata":{"role":"symbol","title":"type","roleHeading":"Instance Property","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"symbolKind":"property","externalID":"s:5Atoms12ReadableAtomP4type1TQzmvp","required":true,"modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom"]]},"references":{"doc://Atoms/documentation/Atoms/ReadableAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Self"},{"kind":"text","text":"."},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the Atom’s value."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom\/type","kind":"symbol","required":true,"type":"topic","url":"\/documentation\/atoms\/readableatom\/type"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/ReadableAtom":{"role":"symbol","title":"ReadableAtom","fragments":[{"kind":"keyword","text":"protocol"},{"kind":"text","text":" "},{"kind":"identifier","text":"ReadableAtom"}],"abstract":[{"type":"text","text":"A protocol that represents a readable Atom with a value of a certain type "},{"type":"codeVoice","code":"T"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/ReadableAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"ReadableAtom"}],"url":"\/documentation\/atoms\/readableatom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/useatom/dynamicproperty-implementations.json: -------------------------------------------------------------------------------- 1 | {"variants":[{"paths":["\/documentation\/atoms\/useatom\/dynamicproperty-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/DynamicProperty-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Methods","identifiers":["doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/update()"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"Atoms"}],"role":"collectionGroup","title":"DynamicProperty Implementations"},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/UseAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/UseAtom":{"role":"symbol","title":"UseAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UseAtom"}],"abstract":[{"type":"text","text":"A property wrapper that provides read and write access to the atom’s value, and it’s reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UseAtom"}],"url":"\/documentation\/atoms\/useatom"},"doc://Atoms/documentation/Atoms/UseAtom/update()":{"role":"symbol","title":"update()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"update"},{"kind":"text","text":"()"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/update()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/useatom\/update()"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/useatom/wrappedvalue.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" "},{"kind":"keyword","text":"nonmutating"},{"kind":"text","text":" "},{"kind":"keyword","text":"set"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/useatom\/wrappedvalue"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/wrappedValue","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"title":"wrappedValue","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms7UseAtomV12wrappedValuexvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/UseAtom"]]},"references":{"doc://Atoms/documentation/Atoms/UseAtom":{"role":"symbol","title":"UseAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UseAtom"}],"abstract":[{"type":"text","text":"A property wrapper that provides read and write access to the atom’s value, and it’s reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UseAtom"}],"url":"\/documentation\/atoms\/useatom"},"doc://Atoms/documentation/Atoms/UseAtom/wrappedValue":{"role":"symbol","title":"wrappedValue","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtom\/wrappedValue","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/useatom\/wrappedvalue"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/useatomvalue/dynamicproperty-implementations.json: -------------------------------------------------------------------------------- 1 | {"variants":[{"paths":["\/documentation\/atoms\/useatomvalue\/dynamicproperty-implementations"],"traits":[{"interfaceLanguage":"swift"}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/DynamicProperty-Implementations","interfaceLanguage":"swift"},"topicSections":[{"title":"Instance Methods","identifiers":["doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/update()"],"generated":true}],"kind":"article","metadata":{"modules":[{"name":"Atoms"}],"role":"collectionGroup","title":"DynamicProperty Implementations"},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue"]]},"references":{"doc://Atoms/documentation/Atoms/UseAtomValue/update()":{"role":"symbol","title":"update()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"update"},{"kind":"text","text":"()"}],"abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/update()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/useatomvalue\/update()"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/UseAtomValue":{"role":"symbol","title":"UseAtomValue","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UseAtomValue"}],"abstract":[{"type":"text","text":"A property wrapper that provides read-only access to the atom’s value, and it’s reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UseAtomValue"}],"url":"\/documentation\/atoms\/useatomvalue"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/useatomvalue/wrappedvalue.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":" { "},{"kind":"keyword","text":"get"},{"kind":"text","text":" }"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/useatomvalue\/wrappedvalue"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/wrappedValue","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"title":"wrappedValue","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms12UseAtomValueV07wrappedD0xvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue"]]},"references":{"doc://Atoms/documentation/Atoms/UseAtomValue/wrappedValue":{"role":"symbol","title":"wrappedValue","fragments":[{"kind":"keyword","text":"var"},{"kind":"text","text":" "},{"kind":"identifier","text":"wrappedValue"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"}],"abstract":[{"type":"text","text":"The current value of the wrapped "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue\/wrappedValue","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/useatomvalue\/wrappedvalue"},"doc://Atoms/documentation/Atoms/UseAtomValue":{"role":"symbol","title":"UseAtomValue","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"UseAtomValue"}],"abstract":[{"type":"text","text":"A property wrapper that provides read-only access to the atom’s value, and it’s reactive to changes."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/UseAtomValue","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"UseAtomValue"}],"url":"\/documentation\/atoms\/useatomvalue"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/willsetatom/id.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/willsetatom\/id"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/id","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A unique identifier for the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"title":"id","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11WillSetAtomV2id10Foundation4UUIDVvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/WillSetAtom/id":{"role":"symbol","title":"id","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"id"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"UUID","preciseIdentifier":"s:10Foundation4UUIDV"}],"abstract":[{"type":"text","text":"A unique identifier for the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/id","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/willsetatom\/id"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/WillSetAtom":{"role":"symbol","title":"WillSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WillSetAtom"}],"abstract":[{"type":"text","text":"A generic structure that conforms to the "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":" and "},{"type":"codeVoice","code":"ResettableAtom"},{"type":"text","text":" protocols."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WillSetAtom"}],"url":"\/documentation\/atoms\/willsetatom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/willsetatom/keepalive.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/willsetatom\/keepalive"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/keepAlive","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"A flag indicating if the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" should be kept alive."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"title":"keepAlive","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11WillSetAtomV9keepAliveSbvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/WillSetAtom/keepAlive":{"role":"symbol","title":"keepAlive","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"keepAlive"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"Bool","preciseIdentifier":"s:Sb"}],"abstract":[{"type":"text","text":"A flag indicating if the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" should be kept alive."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/keepAlive","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/willsetatom\/keepalive"},"doc://Atoms/documentation/Atoms/WillSetAtom":{"role":"symbol","title":"WillSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WillSetAtom"}],"abstract":[{"type":"text","text":"A generic structure that conforms to the "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":" and "},{"type":"codeVoice","code":"ResettableAtom"},{"type":"text","text":" protocols."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WillSetAtom"}],"url":"\/documentation\/atoms\/willsetatom"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/willsetatom/reset().json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"languages":["swift"],"platforms":["macOS"]}]},{"kind":"content","content":[{"anchor":"discussion","level":2,"type":"heading","text":"Discussion"},{"type":"paragraph","inlineContent":[{"type":"text","text":"Use this method to reset the value of the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" to its initial value, optionally running a custom reset closure."}]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/willsetatom\/reset()"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/reset()","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"Resets the value of the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" to its initial value, optionally running a custom reset closure."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"title":"reset()","roleHeading":"Instance Method","role":"symbol","symbolKind":"method","externalID":"s:5Atoms11WillSetAtomV5resetyyF","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms/WillSetAtom/reset()":{"role":"symbol","title":"reset()","fragments":[{"kind":"keyword","text":"func"},{"kind":"text","text":" "},{"kind":"identifier","text":"reset"},{"kind":"text","text":"()"}],"abstract":[{"type":"text","text":"Resets the value of the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":" to its initial value, optionally running a custom reset closure."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/reset()","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/willsetatom\/reset()"},"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/WillSetAtom":{"role":"symbol","title":"WillSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WillSetAtom"}],"abstract":[{"type":"text","text":"A generic structure that conforms to the "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":" and "},{"type":"codeVoice","code":"ResettableAtom"},{"type":"text","text":" protocols."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WillSetAtom"}],"url":"\/documentation\/atoms\/willsetatom"}}} -------------------------------------------------------------------------------- /docs/data/documentation/atoms/willsetatom/type.json: -------------------------------------------------------------------------------- 1 | {"primaryContentSections":[{"kind":"declarations","declarations":[{"tokens":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"languages":["swift"],"platforms":["macOS"]}]}],"schemaVersion":{"major":0,"minor":3,"patch":0},"sections":[],"variants":[{"paths":["\/documentation\/atoms\/willsetatom\/type"],"traits":[{"interfaceLanguage":"swift"}]}],"identifier":{"url":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/type","interfaceLanguage":"swift"},"abstract":[{"type":"text","text":"The type of the value wrapped in the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":"."}],"kind":"symbol","metadata":{"fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"title":"type","roleHeading":"Instance Property","role":"symbol","symbolKind":"property","externalID":"s:5Atoms11WillSetAtomV4typexmvp","modules":[{"name":"Atoms"}]},"hierarchy":{"paths":[["doc:\/\/Atoms\/documentation\/Atoms","doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom"]]},"references":{"doc://Atoms/documentation/Atoms":{"role":"collection","title":"Atoms","abstract":[],"identifier":"doc:\/\/Atoms\/documentation\/Atoms","kind":"symbol","type":"topic","url":"\/documentation\/atoms"},"doc://Atoms/documentation/Atoms/WillSetAtom":{"role":"symbol","title":"WillSetAtom","fragments":[{"kind":"keyword","text":"struct"},{"kind":"text","text":" "},{"kind":"identifier","text":"WillSetAtom"}],"abstract":[{"type":"text","text":"A generic structure that conforms to the "},{"type":"codeVoice","code":"WritableAtom"},{"type":"text","text":" and "},{"type":"codeVoice","code":"ResettableAtom"},{"type":"text","text":" protocols."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom","kind":"symbol","type":"topic","navigatorTitle":[{"kind":"identifier","text":"WillSetAtom"}],"url":"\/documentation\/atoms\/willsetatom"},"doc://Atoms/documentation/Atoms/WillSetAtom/type":{"role":"symbol","title":"type","fragments":[{"kind":"keyword","text":"let"},{"kind":"text","text":" "},{"kind":"identifier","text":"type"},{"kind":"text","text":": "},{"kind":"typeIdentifier","text":"T"},{"kind":"text","text":".Type"}],"abstract":[{"type":"text","text":"The type of the value wrapped in the "},{"type":"codeVoice","code":"WillSetAtom"},{"type":"text","text":"."}],"identifier":"doc:\/\/Atoms\/documentation\/Atoms\/WillSetAtom\/type","kind":"symbol","type":"topic","url":"\/documentation\/atoms\/willsetatom\/type"}}} -------------------------------------------------------------------------------- /docs/developer-og-twitter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/docs/developer-og-twitter.jpg -------------------------------------------------------------------------------- /docs/developer-og.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/docs/developer-og.jpg -------------------------------------------------------------------------------- /docs/diagnostics.json: -------------------------------------------------------------------------------- 1 | [] -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/docs/favicon.ico -------------------------------------------------------------------------------- /docs/favicon.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/added-icon.d6f7e47d.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/deprecated-icon.015b4f17.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/modified-icon.f496e73d.svg: -------------------------------------------------------------------------------- 1 | 10 | 11 | -------------------------------------------------------------------------------- /docs/img/no-image@2x.df2a0a50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bangerang/swift-atoms/d19c9a66c5803f60ca7ed08e6f32eab047f6234a/docs/img/no-image@2x.df2a0a50.png -------------------------------------------------------------------------------- /docs/js/highlight-js-diff.62d66733.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-diff"],{"48b8":function(e,n){function a(e){const n=e.regex;return{name:"Diff",aliases:["patch"],contains:[{className:"meta",relevance:10,match:n.either(/^@@ +-\d+,\d+ +\+\d+,\d+ +@@/,/^\*\*\* +\d+,\d+ +\*\*\*\*$/,/^--- +\d+,\d+ +----$/)},{className:"comment",variants:[{begin:n.either(/Index: /,/^index/,/={3,}/,/^-{3}/,/^\*{3} /,/^\+{3}/,/^diff --git/),end:/$/},{match:/^\*{15}$/}]},{className:"addition",begin:/^\+/,end:/$/},{className:"deletion",begin:/^-/,end:/$/},{className:"addition",begin:/^!/,end:/$/}]}}e.exports=a}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-http.163e45b6.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-http"],{c01d:function(e,n){function a(e){const n=e.regex,a="HTTP/(2|1\\.[01])",s=/[A-Za-z][A-Za-z0-9-]*/,t={className:"attribute",begin:n.concat("^",s,"(?=\\:\\s)"),starts:{contains:[{className:"punctuation",begin:/: /,relevance:0,starts:{end:"$",relevance:0}}]}},i=[t,{begin:"\\n\\n",starts:{subLanguage:[],endsWithParent:!0}}];return{name:"HTTP",aliases:["https"],illegal:/\S/,contains:[{begin:"^(?="+a+" \\d{3})",end:/$/,contains:[{className:"meta",begin:a},{className:"number",begin:"\\b\\d{3}\\b"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},{begin:"(?=^[A-Z]+ (.*?) "+a+"$)",end:/$/,contains:[{className:"string",begin:" ",end:" ",excludeBegin:!0,excludeEnd:!0},{className:"meta",begin:a},{className:"keyword",begin:"[A-Z]+"}],starts:{end:/\b\B/,illegal:/\S/,contains:i}},e.inherit(t,{relevance:0})]}}e.exports=a}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-java.8326d9d8.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-java"],{"332f":function(e,a){var n="[0-9](_*[0-9])*",s=`\\.(${n})`,i="[0-9a-fA-F](_*[0-9a-fA-F])*",t={className:"number",variants:[{begin:`(\\b(${n})((${s})|\\.)?|(${s}))[eE][+-]?(${n})[fFdD]?\\b`},{begin:`\\b(${n})((${s})[fFdD]?\\b|\\.([fFdD]\\b)?)`},{begin:`(${s})[fFdD]?\\b`},{begin:`\\b(${n})[fFdD]\\b`},{begin:`\\b0[xX]((${i})\\.?|(${i})?\\.(${i}))[pP][+-]?(${n})[fFdD]?\\b`},{begin:"\\b(0|[1-9](_*[0-9])*)[lL]?\\b"},{begin:`\\b0[xX](${i})[lL]?\\b`},{begin:"\\b0(_*[0-7])*[lL]?\\b"},{begin:"\\b0[bB][01](_*[01])*[lL]?\\b"}],relevance:0};function r(e,a,n){return-1===n?"":e.replace(a,s=>r(e,a,n-1))}function c(e){e.regex;const a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",n=a+r("(?:<"+a+"~~~(?:\\s*,\\s*"+a+"~~~)*>)?",/~~~/g,2),s=["synchronized","abstract","private","var","static","if","const ","for","while","strictfp","finally","protected","import","native","final","void","enum","else","break","transient","catch","instanceof","volatile","case","assert","package","default","public","try","switch","continue","throws","protected","public","private","module","requires","exports","do"],i=["super","this"],c=["false","true","null"],l=["char","boolean","long","float","int","byte","short","double"],o={keyword:s,literal:c,type:l,built_in:i},b={className:"meta",begin:"@"+a,contains:[{begin:/\(/,end:/\)/,contains:["self"]}]},_={className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[e.C_BLOCK_COMMENT_MODE],endsParent:!0};return{name:"Java",aliases:["jsp"],keywords:o,illegal:/<\/|#/,contains:[e.COMMENT("/\\*\\*","\\*/",{relevance:0,contains:[{begin:/\w+@/,relevance:0},{className:"doctag",begin:"@[A-Za-z]+"}]}),{begin:/import java\.[a-z]+\./,keywords:"import",relevance:2},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{begin:/"""/,end:/"""/,className:"string",contains:[e.BACKSLASH_ESCAPE]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{match:[/\b(?:class|interface|enum|extends|implements|new)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{begin:[a,/\s+/,a,/\s+/,/=/],className:{1:"type",3:"variable",5:"operator"}},{begin:[/record/,/\s+/,a],className:{1:"keyword",3:"title.class"},contains:[_,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},{beginKeywords:"new throw return else",relevance:0},{begin:["(?:"+n+"\\s+)",e.UNDERSCORE_IDENT_RE,/\s*(?=\()/],className:{2:"title.function"},keywords:o,contains:[{className:"params",begin:/\(/,end:/\)/,keywords:o,relevance:0,contains:[b,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,t,e.C_BLOCK_COMMENT_MODE]},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]},t,b]}}e.exports=c}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-json.471128d2.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-json"],{"5ad2":function(n,e){function a(n){const e={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01},a={match:/[{}[\],:]/,className:"punctuation",relevance:0},s={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[e,a,n.QUOTE_STRING_MODE,s,n.C_NUMBER_MODE,n.C_LINE_COMMENT_MODE,n.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}n.exports=a}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-llvm.6100b125.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-llvm"],{"7c30":function(e,n){function a(e){const n=e.regex,a=/([-a-zA-Z$._][\w$.-]*)/,t={className:"type",begin:/\bi\d+(?=\s|\b)/},i={className:"operator",relevance:0,begin:/=/},c={className:"punctuation",relevance:0,begin:/,/},l={className:"number",variants:[{begin:/0[xX][a-fA-F0-9]+/},{begin:/-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?/}],relevance:0},r={className:"symbol",variants:[{begin:/^\s*[a-z]+:/}],relevance:0},s={className:"variable",variants:[{begin:n.concat(/%/,a)},{begin:/%\d+/},{begin:/#\d+/}]},o={className:"title",variants:[{begin:n.concat(/@/,a)},{begin:/@\d+/},{begin:n.concat(/!/,a)},{begin:n.concat(/!\d+/,a)},{begin:/!\d+/}]};return{name:"LLVM IR",keywords:"begin end true false declare define global constant private linker_private internal available_externally linkonce linkonce_odr weak weak_odr appending dllimport dllexport common default hidden protected extern_weak external thread_local zeroinitializer undef null to tail target triple datalayout volatile nuw nsw nnan ninf nsz arcp fast exact inbounds align addrspace section alias module asm sideeffect gc dbg linker_private_weak attributes blockaddress initialexec localdynamic localexec prefix unnamed_addr ccc fastcc coldcc x86_stdcallcc x86_fastcallcc arm_apcscc arm_aapcscc arm_aapcs_vfpcc ptx_device ptx_kernel intel_ocl_bicc msp430_intrcc spir_func spir_kernel x86_64_sysvcc x86_64_win64cc x86_thiscallcc cc c signext zeroext inreg sret nounwind noreturn noalias nocapture byval nest readnone readonly inlinehint noinline alwaysinline optsize ssp sspreq noredzone noimplicitfloat naked builtin cold nobuiltin noduplicate nonlazybind optnone returns_twice sanitize_address sanitize_memory sanitize_thread sspstrong uwtable returned type opaque eq ne slt sgt sle sge ult ugt ule uge oeq one olt ogt ole oge ord uno ueq une x acq_rel acquire alignstack atomic catch cleanup filter inteldialect max min monotonic nand personality release seq_cst singlethread umax umin unordered xchg add fadd sub fsub mul fmul udiv sdiv fdiv urem srem frem shl lshr ashr and or xor icmp fcmp phi call trunc zext sext fptrunc fpext uitofp sitofp fptoui fptosi inttoptr ptrtoint bitcast addrspacecast select va_arg ret br switch invoke unwind unreachable indirectbr landingpad resume malloc alloca free load store getelementptr extractelement insertelement shufflevector getresult extractvalue insertvalue atomicrmw cmpxchg fence argmemonly double",contains:[t,e.COMMENT(/;\s*$/,null,{relevance:0}),e.COMMENT(/;/,/$/),e.QUOTE_STRING_MODE,{className:"string",variants:[{begin:/"/,end:/[^\\]"/}]},o,c,i,s,r,l]}}e.exports=a}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-markdown.90077643.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-markdown"],{"04b0":function(n,e){function a(n){const e=n.regex,a={begin:/<\/?[A-Za-z_]/,end:">",subLanguage:"xml",relevance:0},i={begin:"^[-\\*]{3,}",end:"$"},s={className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},c={className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",end:"\\s+",excludeEnd:!0},t={begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},g=/[A-Za-z][A-Za-z0-9+.-]*/,d={variants:[{begin:/\[.+?\]\[.*?\]/,relevance:0},{begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,relevance:2},{begin:e.concat(/\[.+?\]\(/,g,/:\/\/.*?\)/),relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",end:"\\]",excludeBegin:!0,excludeEnd:!0}]},l={className:"strong",contains:[],variants:[{begin:/_{2}/,end:/_{2}/},{begin:/\*{2}/,end:/\*{2}/}]},o={className:"emphasis",contains:[],variants:[{begin:/\*(?!\*)/,end:/\*/},{begin:/_(?!_)/,end:/_/,relevance:0}]};l.contains.push(o),o.contains.push(l);let b=[a,d];l.contains=l.contains.concat(b),o.contains=o.contains.concat(b),b=b.concat(l,o);const r={className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:b},{begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",contains:b}]}]},m={className:"quote",begin:"^>\\s+",contains:b,end:"$"};return{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[r,a,c,l,o,m,s,i,d,t]}}n.exports=a}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-shell.dd7f411f.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-shell"],{b65b:function(s,n){function e(s){return{name:"Shell Session",aliases:["console","shellsession"],contains:[{className:"meta",begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/,subLanguage:"bash"}}]}}s.exports=e}}]); -------------------------------------------------------------------------------- /docs/js/highlight-js-xml.9c3688c7.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * This source file is part of the Swift.org open source project 3 | * 4 | * Copyright (c) 2021 Apple Inc. and the Swift project authors 5 | * Licensed under Apache License v2.0 with Runtime Library Exception 6 | * 7 | * See https://swift.org/LICENSE.txt for license information 8 | * See https://swift.org/CONTRIBUTORS.txt for Swift project authors 9 | */ 10 | (window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["highlight-js-xml"],{"8dcb":function(e,n){function a(e){const n=e.regex,a=n.concat(/[A-Z_]/,n.optional(/[A-Z0-9_.-]*:/),/[A-Z0-9_.-]*/),s=/[A-Za-z0-9._:-]+/,t={className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},i={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},c=e.inherit(i,{begin:/\(/,end:/\)/}),l=e.inherit(e.APOS_STRING_MODE,{className:"string"}),r=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),g={endsWithParent:!0,illegal:/`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,contains:[{className:"meta",begin://,relevance:10,contains:[i,r,l,c,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[i,c,r,l]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},t,{className:"meta",begin:/<\?xml/,end:/\?>/,relevance:10},{className:"tag",begin:/)/,end:/>/,keywords:{name:"style"},contains:[g],starts:{end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",begin:/)/,end:/>/,keywords:{name:"script"},contains:[g],starts:{end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{className:"tag",begin:/<>|<\/>/},{className:"tag",begin:n.concat(//,/>/,/\s/)))),end:/\/?>/,contains:[{className:"name",begin:a,relevance:0,starts:g}]},{className:"tag",begin:n.concat(/<\//,n.lookahead(n.concat(a,/>/))),contains:[{className:"name",begin:a,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}}e.exports=a}}]); -------------------------------------------------------------------------------- /docs/metadata.json: -------------------------------------------------------------------------------- 1 | {"bundleDisplayName":"Atoms","bundleIdentifier":"Atoms","schemaVersion":{"major":0,"minor":1,"patch":0}} -------------------------------------------------------------------------------- /docs/theme-settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "meta": {}, 3 | "theme": { 4 | "code": { 5 | "indentationWidth": 4 6 | }, 7 | "colors": { 8 | "text": "", 9 | "text-background": "", 10 | "grid": "", 11 | "article-background": "", 12 | "generic-modal-background": "", 13 | "secondary-label": "", 14 | "header-text": "", 15 | "not-found": { 16 | "input-border": "" 17 | }, 18 | "runtime-preview": { 19 | "text": "" 20 | }, 21 | "tabnav-item": { 22 | "border-color": "" 23 | }, 24 | "svg-icon": { 25 | "fill-light": "", 26 | "fill-dark": "" 27 | }, 28 | "loading-placeholder": { 29 | "background": "" 30 | }, 31 | "button": { 32 | "text": "", 33 | "light": { 34 | "background": "", 35 | "backgroundHover": "", 36 | "backgroundActive": "" 37 | }, 38 | "dark": { 39 | "background": "", 40 | "backgroundHover": "", 41 | "backgroundActive": "" 42 | } 43 | }, 44 | "link": null 45 | }, 46 | "style": { 47 | "button": { 48 | "borderRadius": null 49 | } 50 | }, 51 | "typography": { 52 | "html-font": "" 53 | } 54 | }, 55 | "features": { 56 | "docs": { 57 | } 58 | } 59 | } 60 | --------------------------------------------------------------------------------