Skip to content

Commit d44cd17

Browse files
authored
Merge pull request #23 from SwiftedMind/develop
Merge 2.0.0
2 parents 0b5d6f6 + b1335ae commit d44cd17

File tree

18 files changed

+136
-434
lines changed

18 files changed

+136
-434
lines changed

Changelog.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## 2.0.0
4+
5+
This release mainly removes the dependency to `Queryable` because that should be treated as a fully separate package. Check it out at [https://github.com/SwiftedMind/Queryable](https://github.com/SwiftedMind/Queryable).
6+
7+
Removing this should make it less likely to force major releases on Puddles.
8+
9+
### Changed
10+
11+
- Renamed the concept of adapters to containers since now they are simple `DynamicProperty` structs with a lot more power and generalized use! A detailed explanation will be provided on swiftedmind.com.
12+
13+
### Removed
14+
15+
- Removed `Signal`. This will be coming as a separate Swift package.
16+
- Removed the dependency to `Queryable`, since that is fully separate and makes breaking changes harder to control. Simply add `Queryable` to your project, to keep using it.
17+
318
## 1.0.0
419

520
### Added

Examples/PuddlesExamples/PuddlesExamples.xcodeproj/project.pbxproj

Lines changed: 37 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,15 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10-
9539F6DA2A5AF417009D3679 /* ExampleAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9539F6D92A5AF417009D3679 /* ExampleAdapter.swift */; };
1110
9539F6DC2A5AF7A3009D3679 /* NumberFactView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9539F6DB2A5AF7A3009D3679 /* NumberFactView.swift */; };
1211
9539F6DE2A5B1538009D3679 /* NumberFactStackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9539F6DD2A5B1538009D3679 /* NumberFactStackView.swift */; };
1312
953D02B02A5993D900D1A377 /* Core in Frameworks */ = {isa = PBXBuildFile; productRef = 953D02AF2A5993D900D1A377 /* Core */; };
1413
953D02B32A5A719300D1A377 /* Router.swift in Sources */ = {isa = PBXBuildFile; fileRef = 953D02B22A5A719300D1A377 /* Router.swift */; };
1514
953D02B52A5A71F800D1A377 /* RootRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 953D02B42A5A71F800D1A377 /* RootRouter.swift */; };
1615
953D02B72A5A732400D1A377 /* View+mockProviders.swift in Sources */ = {isa = PBXBuildFile; fileRef = 953D02B62A5A732400D1A377 /* View+mockProviders.swift */; };
1716
953D02B92A5A81F200D1A377 /* ExampleSections.swift in Sources */ = {isa = PBXBuildFile; fileRef = 953D02B82A5A81F200D1A377 /* ExampleSections.swift */; };
17+
954E6CAA2A6966C000083ABA /* QueryableExampleRouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 954E6CA92A6966C000083ABA /* QueryableExampleRouter.swift */; };
18+
955335572A9798D600D8E23A /* SortableNumberFacts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955335562A9798D600D8E23A /* SortableNumberFacts.swift */; };
1819
955E513329CB1B1E00202BBA /* ding.wav in Resources */ = {isa = PBXBuildFile; fileRef = 955E513229CB1B1E00202BBA /* ding.wav */; };
1920
955E513729CB416700202BBA /* Strings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 955E513629CB416700202BBA /* Strings.swift */; };
2021
95602F1729C8DDDC008EB800 /* Home.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95602F1629C8DDDC008EB800 /* Home.swift */; };
@@ -30,15 +31,15 @@
3031
95868CA029C85268001F8629 /* swiftgen-localization-template.stencil in Resources */ = {isa = PBXBuildFile; fileRef = 95868C9A29C85268001F8629 /* swiftgen-localization-template.stencil */; };
3132
95868CB129C857A9001F8629 /* Assets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95868CAF29C857A9001F8629 /* Assets.swift */; };
3233
95868CC729C863A5001F8629 /* TrailingIconLabelStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95868CC629C863A5001F8629 /* TrailingIconLabelStyle.swift */; };
34+
9594A3EE2A9796A900F82FF7 /* Queryable in Frameworks */ = {isa = PBXBuildFile; productRef = 9594A3ED2A9796A900F82FF7 /* Queryable */; };
3335
95B746DE2A5F0CBB00615C9A /* ExperimentProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95B746DD2A5F0CBB00615C9A /* ExperimentProvider.swift */; };
3436
95C154B229C86A4700224B4B /* DisclosureItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C154B129C86A4700224B4B /* DisclosureItem.swift */; };
3537
95C154B729C86C7300224B4B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 95C154B629C86C7300224B4B /* Assets.xcassets */; };
3638
95CCB9242A21E8B500E94681 /* Root.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95CCB9232A21E8B500E94681 /* Root.swift */; };
3739
95E9CFA82A5A982100315BFA /* StaticExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFA72A5A982100315BFA /* StaticExample.swift */; };
3840
95E9CFAA2A5A985400315BFA /* BasicProviderExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFA92A5A985400315BFA /* BasicProviderExample.swift */; };
39-
95E9CFAE2A5A986A00315BFA /* AdapterExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFAD2A5A986A00315BFA /* AdapterExample.swift */; };
41+
95E9CFAE2A5A986A00315BFA /* ContainerExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFAD2A5A986A00315BFA /* ContainerExample.swift */; };
4042
95E9CFB02A5A987300315BFA /* QueryableExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFAF2A5A987300315BFA /* QueryableExample.swift */; };
41-
95E9CFB22A5A987A00315BFA /* SignalExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFB12A5A987A00315BFA /* SignalExample.swift */; };
4243
95E9CFB52A5A9BF400315BFA /* FavoriteNumbersSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFB42A5A9BF400315BFA /* FavoriteNumbersSection.swift */; };
4344
95E9CFB72A5ADD4500315BFA /* CultureMindsProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFB62A5ADD4500315BFA /* CultureMindsProvider.swift */; };
4445
95E9CFB92A5AE07C00315BFA /* NumberFactProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95E9CFB82A5AE07C00315BFA /* NumberFactProvider.swift */; };
@@ -47,14 +48,15 @@
4748

4849
/* Begin PBXFileReference section */
4950
952B2B3329CBF9E0004A73F7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50-
9539F6D92A5AF417009D3679 /* ExampleAdapter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleAdapter.swift; sourceTree = "<group>"; };
5151
9539F6DB2A5AF7A3009D3679 /* NumberFactView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberFactView.swift; sourceTree = "<group>"; };
5252
9539F6DD2A5B1538009D3679 /* NumberFactStackView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberFactStackView.swift; sourceTree = "<group>"; };
5353
953D02AE2A5993C200D1A377 /* Core */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = Core; sourceTree = "<group>"; };
5454
953D02B22A5A719300D1A377 /* Router.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Router.swift; sourceTree = "<group>"; };
5555
953D02B42A5A71F800D1A377 /* RootRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootRouter.swift; sourceTree = "<group>"; };
5656
953D02B62A5A732400D1A377 /* View+mockProviders.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "View+mockProviders.swift"; sourceTree = "<group>"; };
5757
953D02B82A5A81F200D1A377 /* ExampleSections.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExampleSections.swift; sourceTree = "<group>"; };
58+
954E6CA92A6966C000083ABA /* QueryableExampleRouter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryableExampleRouter.swift; sourceTree = "<group>"; };
59+
955335562A9798D600D8E23A /* SortableNumberFacts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SortableNumberFacts.swift; sourceTree = "<group>"; };
5860
955E513229CB1B1E00202BBA /* ding.wav */ = {isa = PBXFileReference; lastKnownFileType = audio.wav; path = ding.wav; sourceTree = "<group>"; };
5961
955E513629CB416700202BBA /* Strings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Strings.swift; sourceTree = "<group>"; };
6062
95602F1629C8DDDC008EB800 /* Home.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Home.swift; sourceTree = "<group>"; };
@@ -76,9 +78,8 @@
7678
95E9CFA62A5A97F300315BFA /* Puddles */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = Puddles; path = ../..; sourceTree = "<group>"; };
7779
95E9CFA72A5A982100315BFA /* StaticExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StaticExample.swift; sourceTree = "<group>"; };
7880
95E9CFA92A5A985400315BFA /* BasicProviderExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BasicProviderExample.swift; sourceTree = "<group>"; };
79-
95E9CFAD2A5A986A00315BFA /* AdapterExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdapterExample.swift; sourceTree = "<group>"; };
81+
95E9CFAD2A5A986A00315BFA /* ContainerExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContainerExample.swift; sourceTree = "<group>"; };
8082
95E9CFAF2A5A987300315BFA /* QueryableExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QueryableExample.swift; sourceTree = "<group>"; };
81-
95E9CFB12A5A987A00315BFA /* SignalExample.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SignalExample.swift; sourceTree = "<group>"; };
8283
95E9CFB42A5A9BF400315BFA /* FavoriteNumbersSection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FavoriteNumbersSection.swift; sourceTree = SOURCE_ROOT; };
8384
95E9CFB62A5ADD4500315BFA /* CultureMindsProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CultureMindsProvider.swift; sourceTree = "<group>"; };
8485
95E9CFB82A5AE07C00315BFA /* NumberFactProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NumberFactProvider.swift; sourceTree = "<group>"; };
@@ -93,6 +94,7 @@
9394
95868C8929C851F2001F8629 /* IdentifiedCollections in Frameworks */,
9495
95868C8629C851E8001F8629 /* Puddles in Frameworks */,
9596
953D02B02A5993D900D1A377 /* Core in Frameworks */,
97+
9594A3EE2A9796A900F82FF7 /* Queryable in Frameworks */,
9698
);
9799
runOnlyForDeploymentPostprocessing = 0;
98100
};
@@ -104,13 +106,15 @@
104106
children = (
105107
953D02B22A5A719300D1A377 /* Router.swift */,
106108
953D02B42A5A71F800D1A377 /* RootRouter.swift */,
109+
954E6CA92A6966C000083ABA /* QueryableExampleRouter.swift */,
107110
);
108111
path = Router;
109112
sourceTree = "<group>";
110113
};
111114
954FA2642A17F5B4006F26FC /* Providers */ = {
112115
isa = PBXGroup;
113116
children = (
117+
955335552A9798C200D8E23A /* Container */,
114118
95E9CFB62A5ADD4500315BFA /* CultureMindsProvider.swift */,
115119
95E9CFB82A5AE07C00315BFA /* NumberFactProvider.swift */,
116120
95B746DD2A5F0CBB00615C9A /* ExperimentProvider.swift */,
@@ -125,6 +129,14 @@
125129
name = Frameworks;
126130
sourceTree = "<group>";
127131
};
132+
955335552A9798C200D8E23A /* Container */ = {
133+
isa = PBXGroup;
134+
children = (
135+
955335562A9798D600D8E23A /* SortableNumberFacts.swift */,
136+
);
137+
path = Container;
138+
sourceTree = "<group>";
139+
};
128140
95868C6829C851C6001F8629 = {
129141
isa = PBXGroup;
130142
children = (
@@ -216,15 +228,6 @@
216228
path = Localizables;
217229
sourceTree = "<group>";
218230
};
219-
95E9CFB32A5A98AE00315BFA /* AdapterExample */ = {
220-
isa = PBXGroup;
221-
children = (
222-
95E9CFAD2A5A986A00315BFA /* AdapterExample.swift */,
223-
9539F6D92A5AF417009D3679 /* ExampleAdapter.swift */,
224-
);
225-
path = AdapterExample;
226-
sourceTree = "<group>";
227-
};
228231
95EC65842A180717005BDDC0 /* Components */ = {
229232
isa = PBXGroup;
230233
children = (
@@ -247,9 +250,8 @@
247250
95602F1629C8DDDC008EB800 /* Home.swift */,
248251
95E9CFA72A5A982100315BFA /* StaticExample.swift */,
249252
95E9CFA92A5A985400315BFA /* BasicProviderExample.swift */,
250-
95E9CFB32A5A98AE00315BFA /* AdapterExample */,
253+
95E9CFAD2A5A986A00315BFA /* ContainerExample.swift */,
251254
95E9CFAF2A5A987300315BFA /* QueryableExample.swift */,
252-
95E9CFB12A5A987A00315BFA /* SignalExample.swift */,
253255
);
254256
path = Modules;
255257
sourceTree = "<group>";
@@ -275,6 +277,7 @@
275277
95868C8529C851E8001F8629 /* Puddles */,
276278
95868C8829C851F2001F8629 /* IdentifiedCollections */,
277279
953D02AF2A5993D900D1A377 /* Core */,
280+
9594A3ED2A9796A900F82FF7 /* Queryable */,
278281
);
279282
productName = PuddlesExamples;
280283
productReference = 95868C7129C851C6001F8629 /* PuddlesExamples.app */;
@@ -307,6 +310,7 @@
307310
packageReferences = (
308311
95868C8229C851E8001F8629 /* XCRemoteSwiftPackageReference "Puddles" */,
309312
95868C8729C851F2001F8629 /* XCRemoteSwiftPackageReference "swift-identified-collections" */,
313+
9594A3EC2A9796A900F82FF7 /* XCRemoteSwiftPackageReference "Queryable" */,
310314
);
311315
productRefGroup = 95868C7229C851C6001F8629 /* Products */;
312316
projectDirPath = "";
@@ -366,26 +370,26 @@
366370
9539F6DE2A5B1538009D3679 /* NumberFactStackView.swift in Sources */,
367371
95E9CFB52A5A9BF400315BFA /* FavoriteNumbersSection.swift in Sources */,
368372
953D02B32A5A719300D1A377 /* Router.swift in Sources */,
369-
95E9CFB22A5A987A00315BFA /* SignalExample.swift in Sources */,
370373
95B746DE2A5F0CBB00615C9A /* ExperimentProvider.swift in Sources */,
371374
95E9CFA82A5A982100315BFA /* StaticExample.swift in Sources */,
372375
953D02B72A5A732400D1A377 /* View+mockProviders.swift in Sources */,
373376
95C154B229C86A4700224B4B /* DisclosureItem.swift in Sources */,
374377
95E9CFBB2A5AED0D00315BFA /* CultureMindNameStackView.swift in Sources */,
375-
9539F6DA2A5AF417009D3679 /* ExampleAdapter.swift in Sources */,
376378
955E513729CB416700202BBA /* Strings.swift in Sources */,
377379
953D02B92A5A81F200D1A377 /* ExampleSections.swift in Sources */,
378380
95E9CFB02A5A987300315BFA /* QueryableExample.swift in Sources */,
379-
95E9CFAE2A5A986A00315BFA /* AdapterExample.swift in Sources */,
381+
95E9CFAE2A5A986A00315BFA /* ContainerExample.swift in Sources */,
380382
953D02B52A5A71F800D1A377 /* RootRouter.swift in Sources */,
381383
95868C7529C851C6001F8629 /* App.swift in Sources */,
382384
95E9CFB72A5ADD4500315BFA /* CultureMindsProvider.swift in Sources */,
385+
954E6CAA2A6966C000083ABA /* QueryableExampleRouter.swift in Sources */,
383386
95868CC729C863A5001F8629 /* TrailingIconLabelStyle.swift in Sources */,
384387
95868CB129C857A9001F8629 /* Assets.swift in Sources */,
385388
95E9CFB92A5AE07C00315BFA /* NumberFactProvider.swift in Sources */,
386389
957850AE2A5F1469002C3EDC /* ExperimentListSection.swift in Sources */,
387390
95E9CFAA2A5A985400315BFA /* BasicProviderExample.swift in Sources */,
388391
9539F6DC2A5AF7A3009D3679 /* NumberFactView.swift in Sources */,
392+
955335572A9798D600D8E23A /* SortableNumberFacts.swift in Sources */,
389393
95602F1729C8DDDC008EB800 /* Home.swift in Sources */,
390394
);
391395
runOnlyForDeploymentPostprocessing = 0;
@@ -613,6 +617,14 @@
613617
minimumVersion = 0.7.0;
614618
};
615619
};
620+
9594A3EC2A9796A900F82FF7 /* XCRemoteSwiftPackageReference "Queryable" */ = {
621+
isa = XCRemoteSwiftPackageReference;
622+
repositoryURL = "https://github.com/SwiftedMind/Queryable";
623+
requirement = {
624+
kind = upToNextMajorVersion;
625+
minimumVersion = 2.0.1;
626+
};
627+
};
616628
/* End XCRemoteSwiftPackageReference section */
617629

618630
/* Begin XCSwiftPackageProductDependency section */
@@ -630,6 +642,11 @@
630642
package = 95868C8729C851F2001F8629 /* XCRemoteSwiftPackageReference "swift-identified-collections" */;
631643
productName = IdentifiedCollections;
632644
};
645+
9594A3ED2A9796A900F82FF7 /* Queryable */ = {
646+
isa = XCSwiftPackageProductDependency;
647+
package = 9594A3EC2A9796A900F82FF7 /* XCRemoteSwiftPackageReference "Queryable" */;
648+
productName = Queryable;
649+
};
633650
/* End XCSwiftPackageProductDependency section */
634651
};
635652
rootObject = 95868C6929C851C6001F8629 /* Project object */;

Examples/PuddlesExamples/PuddlesExamples.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Examples/PuddlesExamples/PuddlesExamples/Components/ExampleSections.swift

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,12 @@ struct AdvancedExamplesSection: View {
5757

5858
var body: some View {
5959
Section {
60-
Button("Adapters") {
61-
interface.send(.openAdapterExample)
60+
Button("Containers") {
61+
interface.send(.openContainerExample)
6262
}
6363
Button("Queryables") {
6464
interface.send(.openQueryableExample)
6565
}
66-
Button("Signals") {
67-
interface.send(.openSignalExample)
68-
}
6966
} header: {
7067
Text("Basic")
7168
}
@@ -74,9 +71,8 @@ struct AdvancedExamplesSection: View {
7471

7572
extension AdvancedExamplesSection {
7673
enum Action: Hashable {
77-
case openAdapterExample
74+
case openContainerExample
7875
case openQueryableExample
79-
case openSignalExample
8076
}
8177
}
8278

Examples/PuddlesExamples/PuddlesExamples/Modules/AdapterExample/AdapterExample.swift renamed to Examples/PuddlesExamples/PuddlesExamples/Modules/ContainerExample.swift

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,27 +22,36 @@
2222

2323
import Puddles
2424
import SwiftUI
25+
import Models
2526

26-
struct AdapterExample: View {
27-
@ObservedObject var adapter: ExampleAdapter
27+
@MainActor
28+
struct ContainerExample: View {
2829
@Environment(\.dismiss) private var dismiss
30+
31+
/// A "container" that accesses the NumberFactProvider from the current
32+
/// environment and provides additional states and methods to store and
33+
/// sort number facts.
34+
///
35+
/// This logic could be place inside this view, but extracting it makes it reusable, while still staying fully mockable (since it can access
36+
/// the environment itself. We don't have to pass it in.)
37+
var numberFacts = SortableNumberFacts()
2938

3039
var body: some View {
3140
NavigationStack {
3241
List {
3342
Button("Add Random Number Fact") {
34-
adapter.fetchRandomFact()
43+
numberFacts.fetchRandomFact()
3544
}
3645
Section {
3746
Button("Sort") {
38-
adapter.sort()
47+
numberFacts.sort()
3948
}
40-
NumberFactStackView(numberFacts: adapter.facts, interface: .consume(handleViewInterface))
49+
NumberFactStackView(numberFacts: numberFacts.facts, interface: .consume(handleViewInterface))
4150
} footer: {
4251
Text("Data provided by [NumbersAPI.com](https://numbersapi.com)")
4352
}
4453
}
45-
.animation(.default, value: adapter.facts)
54+
.animation(.default, value: numberFacts.facts)
4655
.navigationTitle("Random Facts")
4756
.toolbar {
4857
ToolbarItem(placement: .navigationBarLeading) {
@@ -52,7 +61,7 @@ struct AdapterExample: View {
5261
}
5362
ToolbarItem {
5463
Button("Remove All", role: .destructive) {
55-
adapter.reset()
64+
numberFacts.reset()
5665
}
5766
}
5867
}
@@ -63,14 +72,14 @@ struct AdapterExample: View {
6372
private func handleViewInterface(_ action: NumberFactStackView.Action) {
6473
switch action {
6574
case .deleteFacts(let indexSet):
66-
adapter.facts.remove(atOffsets: indexSet)
75+
numberFacts.facts.remove(atOffsets: indexSet)
6776
}
6877
}
6978
}
7079

71-
struct AdapterExample_Previews: PreviewProvider {
80+
struct ContainerExample_Previews: PreviewProvider {
7281
static var previews: some View {
73-
AdapterExample(adapter: .init(numberFactProvider: .mock))
82+
ContainerExample()
7483
.withMockProviders()
7584
}
7685
}

0 commit comments

Comments
 (0)