Skip to content

Commit

Permalink
Merge pull request #9 from johnpatrickmorgan/feature/new-features
Browse files Browse the repository at this point in the history
Add new 0.1 features
  • Loading branch information
johnpatrickmorgan authored Dec 30, 2021
2 parents e30add3 + 4a82041 commit e71582d
Show file tree
Hide file tree
Showing 31 changed files with 1,981 additions and 773 deletions.
54 changes: 54 additions & 0 deletions .swift-format.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{
"fileScopedDeclarationPrivacy" : {
"accessLevel" : "private"
},
"indentation" : {
"spaces" : 2
},
"indentConditionalCompilationBlocks" : true,
"indentSwitchCaseLabels" : false,
"lineBreakAroundMultilineExpressionChainComponents" : false,
"lineBreakBeforeControlFlowKeywords" : false,
"lineBreakBeforeEachArgument" : false,
"lineBreakBeforeEachGenericRequirement" : false,
"lineLength" : 100,
"maximumBlankLines" : 1,
"prioritizeKeepingFunctionOutputTogether" : false,
"respectsExistingLineBreaks" : true,
"rules" : {
"AllPublicDeclarationsHaveDocumentation" : false,
"AlwaysUseLowerCamelCase" : true,
"AmbiguousTrailingClosureOverload" : true,
"BeginDocumentationCommentWithOneLineSummary" : false,
"DoNotUseSemicolons" : true,
"DontRepeatTypeInStaticProperties" : true,
"FileScopedDeclarationPrivacy" : true,
"FullyIndirectEnum" : true,
"GroupNumericLiterals" : true,
"IdentifiersMustBeASCII" : true,
"NeverForceUnwrap" : false,
"NeverUseForceTry" : false,
"NeverUseImplicitlyUnwrappedOptionals" : false,
"NoAccessLevelOnExtensionDeclaration" : false,
"NoBlockComments" : true,
"NoCasesWithOnlyFallthrough" : true,
"NoEmptyTrailingClosureParentheses" : true,
"NoLabelsInCasePatterns" : true,
"NoLeadingUnderscores" : false,
"NoParensAroundConditions" : true,
"NoVoidReturnOnFunctionSignature" : true,
"OneCasePerLine" : true,
"OneVariableDeclarationPerLine" : true,
"OnlyOneTrailingClosureArgument" : true,
"OrderedImports" : false,
"ReturnVoidInsteadOfEmptyTuple" : true,
"UseLetInEveryBoundCaseVariable" : true,
"UseShorthandTypeNames" : true,
"UseSingleLinePropertyGetter" : true,
"UseSynthesizedInitializer" : true,
"UseTripleSlashForDocumentationComments" : true,
"ValidateDocumentationComments" : false
},
"tabWidth" : 8,
"version" : 1
}
84 changes: 54 additions & 30 deletions FlowStacksApp.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,18 @@
/* Begin PBXBuildFile section */
5241BF6F26AA1E8A002D6892 /* FlowStacks in Frameworks */ = {isa = PBXBuildFile; productRef = 5241BF6E26AA1E8A002D6892 /* FlowStacks */; };
5241BF7126AA1E8F002D6892 /* FlowStacks in Frameworks */ = {isa = PBXBuildFile; productRef = 5241BF7026AA1E8F002D6892 /* FlowStacks */; };
525C733527729300009CBD67 /* SwiftUINavigation in Frameworks */ = {isa = PBXBuildFile; productRef = 525C733427729300009CBD67 /* SwiftUINavigation */; };
525C73372774BA6B009CBD67 /* NumberCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525C73362774BA6B009CBD67 /* NumberCoordinator.swift */; };
525C73382774BA6B009CBD67 /* NumberCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525C73362774BA6B009CBD67 /* NumberCoordinator.swift */; };
525C733A2774BDB7009CBD67 /* BindingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525C73392774BDB7009CBD67 /* BindingCoordinator.swift */; };
525C733B2774BDB7009CBD67 /* BindingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525C73392774BDB7009CBD67 /* BindingCoordinator.swift */; };
525C7341277BC788009CBD67 /* ShowingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525C7340277BC788009CBD67 /* ShowingCoordinator.swift */; };
525C7342277BC788009CBD67 /* ShowingCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 525C7340277BC788009CBD67 /* ShowingCoordinator.swift */; };
525C7344277BCDDA009CBD67 /* SwiftUINavigation in Frameworks */ = {isa = PBXBuildFile; productRef = 525C7343277BCDDA009CBD67 /* SwiftUINavigation */; };
526D9F2426AF661F00B6B882 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 526D9F1C26AF661F00B6B882 /* Assets.xcassets */; };
526D9F2526AF661F00B6B882 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 526D9F1C26AF661F00B6B882 /* Assets.xcassets */; };
526D9F2626AF661F00B6B882 /* VMNCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F1E26AF661F00B6B882 /* VMNCoordinator.swift */; };
526D9F2726AF661F00B6B882 /* VMNCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F1E26AF661F00B6B882 /* VMNCoordinator.swift */; };
526D9F2A26AF661F00B6B882 /* NumberNCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2026AF661F00B6B882 /* NumberNCoordinator.swift */; };
526D9F2B26AF661F00B6B882 /* NumberNCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2026AF661F00B6B882 /* NumberNCoordinator.swift */; };
526D9F2C26AF661F00B6B882 /* NumberPCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2126AF661F00B6B882 /* NumberPCoordinator.swift */; };
526D9F2D26AF661F00B6B882 /* NumberPCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2126AF661F00B6B882 /* NumberPCoordinator.swift */; };
526D9F2E26AF661F00B6B882 /* VMPCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2226AF661F00B6B882 /* VMPCoordinator.swift */; };
526D9F2F26AF661F00B6B882 /* VMPCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2226AF661F00B6B882 /* VMPCoordinator.swift */; };
526D9F3026AF661F00B6B882 /* MixedCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2326AF661F00B6B882 /* MixedCoordinator.swift */; };
526D9F3126AF661F00B6B882 /* MixedCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2326AF661F00B6B882 /* MixedCoordinator.swift */; };
526D9F2E26AF661F00B6B882 /* VMCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2226AF661F00B6B882 /* VMCoordinator.swift */; };
526D9F2F26AF661F00B6B882 /* VMCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F2226AF661F00B6B882 /* VMCoordinator.swift */; };
526D9F3326AF667000B6B882 /* FlowStacksApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F3226AF667000B6B882 /* FlowStacksApp.swift */; };
526D9F3426AF667000B6B882 /* FlowStacksApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 526D9F3226AF667000B6B882 /* FlowStacksApp.swift */; };
526D9F7B26AF6C1700B6B882 /* in Resources */ = {isa = PBXBuildFile; fileRef = 526D9F7A26AF6BE900B6B882 /* */; };
Expand All @@ -30,12 +30,11 @@
/* Begin PBXFileReference section */
5241BF3326AA1D3B002D6892 /* FlowStacksApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlowStacksApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
5241BF3926AA1D3B002D6892 /* FlowStacksApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FlowStacksApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
525C73362774BA6B009CBD67 /* NumberCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberCoordinator.swift; sourceTree = "<group>"; };
525C73392774BDB7009CBD67 /* BindingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BindingCoordinator.swift; sourceTree = "<group>"; };
525C7340277BC788009CBD67 /* ShowingCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShowingCoordinator.swift; sourceTree = "<group>"; };
526D9F1C26AF661F00B6B882 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
526D9F1E26AF661F00B6B882 /* VMNCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VMNCoordinator.swift; sourceTree = "<group>"; };
526D9F2026AF661F00B6B882 /* NumberNCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberNCoordinator.swift; sourceTree = "<group>"; };
526D9F2126AF661F00B6B882 /* NumberPCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NumberPCoordinator.swift; sourceTree = "<group>"; };
526D9F2226AF661F00B6B882 /* VMPCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VMPCoordinator.swift; sourceTree = "<group>"; };
526D9F2326AF661F00B6B882 /* MixedCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MixedCoordinator.swift; sourceTree = "<group>"; };
526D9F2226AF661F00B6B882 /* VMCoordinator.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VMCoordinator.swift; sourceTree = "<group>"; };
526D9F3226AF667000B6B882 /* FlowStacksApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlowStacksApp.swift; sourceTree = "<group>"; };
526D9F7A26AF6BE900B6B882 /* */ = {isa = PBXFileReference; lastKnownFileType = folder; name = ""; sourceTree = "<group>"; };
/* End PBXFileReference section */
Expand All @@ -45,6 +44,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
525C733527729300009CBD67 /* SwiftUINavigation in Frameworks */,
5241BF7126AA1E8F002D6892 /* FlowStacks in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand All @@ -53,6 +53,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
525C7344277BCDDA009CBD67 /* SwiftUINavigation in Frameworks */,
5241BF6F26AA1E8A002D6892 /* FlowStacks in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -99,11 +100,10 @@
isa = PBXGroup;
children = (
526D9F3226AF667000B6B882 /* FlowStacksApp.swift */,
526D9F1E26AF661F00B6B882 /* VMNCoordinator.swift */,
526D9F2026AF661F00B6B882 /* NumberNCoordinator.swift */,
526D9F2126AF661F00B6B882 /* NumberPCoordinator.swift */,
526D9F2226AF661F00B6B882 /* VMPCoordinator.swift */,
526D9F2326AF661F00B6B882 /* MixedCoordinator.swift */,
525C73362774BA6B009CBD67 /* NumberCoordinator.swift */,
526D9F2226AF661F00B6B882 /* VMCoordinator.swift */,
525C7340277BC788009CBD67 /* ShowingCoordinator.swift */,
525C73392774BDB7009CBD67 /* BindingCoordinator.swift */,
);
path = Shared;
sourceTree = "<group>";
Expand All @@ -126,6 +126,7 @@
name = "FlowStacksApp (iOS)";
packageProductDependencies = (
5241BF7026AA1E8F002D6892 /* FlowStacks */,
525C733427729300009CBD67 /* SwiftUINavigation */,
);
productName = "FlowStacksApp (iOS)";
productReference = 5241BF3326AA1D3B002D6892 /* FlowStacksApp.app */;
Expand All @@ -146,6 +147,7 @@
name = "FlowStacksApp (macOS)";
packageProductDependencies = (
5241BF6E26AA1E8A002D6892 /* FlowStacks */,
525C7343277BCDDA009CBD67 /* SwiftUINavigation */,
);
productName = "FlowStacksApp (macOS)";
productReference = 5241BF3926AA1D3B002D6892 /* FlowStacksApp.app */;
Expand Down Expand Up @@ -178,6 +180,9 @@
Base,
);
mainGroup = 5241BF2626AA1D3A002D6892;
packageReferences = (
525C733327729300009CBD67 /* XCRemoteSwiftPackageReference "swiftui-navigation" */,
);
productRefGroup = 5241BF3426AA1D3B002D6892 /* Products */;
projectDirPath = "";
projectRoot = "";
Expand Down Expand Up @@ -215,11 +220,10 @@
buildActionMask = 2147483647;
files = (
526D9F3326AF667000B6B882 /* FlowStacksApp.swift in Sources */,
526D9F2E26AF661F00B6B882 /* VMPCoordinator.swift in Sources */,
526D9F2C26AF661F00B6B882 /* NumberPCoordinator.swift in Sources */,
526D9F3026AF661F00B6B882 /* MixedCoordinator.swift in Sources */,
526D9F2A26AF661F00B6B882 /* NumberNCoordinator.swift in Sources */,
526D9F2626AF661F00B6B882 /* VMNCoordinator.swift in Sources */,
526D9F2E26AF661F00B6B882 /* VMCoordinator.swift in Sources */,
525C733A2774BDB7009CBD67 /* BindingCoordinator.swift in Sources */,
525C73372774BA6B009CBD67 /* NumberCoordinator.swift in Sources */,
525C7341277BC788009CBD67 /* ShowingCoordinator.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -228,11 +232,10 @@
buildActionMask = 2147483647;
files = (
526D9F3426AF667000B6B882 /* FlowStacksApp.swift in Sources */,
526D9F2F26AF661F00B6B882 /* VMPCoordinator.swift in Sources */,
526D9F2D26AF661F00B6B882 /* NumberPCoordinator.swift in Sources */,
526D9F3126AF661F00B6B882 /* MixedCoordinator.swift in Sources */,
526D9F2B26AF661F00B6B882 /* NumberNCoordinator.swift in Sources */,
526D9F2726AF661F00B6B882 /* VMNCoordinator.swift in Sources */,
526D9F2F26AF661F00B6B882 /* VMCoordinator.swift in Sources */,
525C733B2774BDB7009CBD67 /* BindingCoordinator.swift in Sources */,
525C73382774BA6B009CBD67 /* NumberCoordinator.swift in Sources */,
525C7342277BC788009CBD67 /* ShowingCoordinator.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -501,6 +504,17 @@
};
/* End XCConfigurationList section */

/* Begin XCRemoteSwiftPackageReference section */
525C733327729300009CBD67 /* XCRemoteSwiftPackageReference "swiftui-navigation" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/pointfreeco/swiftui-navigation";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 0.1.0;
};
};
/* End XCRemoteSwiftPackageReference section */

/* Begin XCSwiftPackageProductDependency section */
5241BF6E26AA1E8A002D6892 /* FlowStacks */ = {
isa = XCSwiftPackageProductDependency;
Expand All @@ -510,6 +524,16 @@
isa = XCSwiftPackageProductDependency;
productName = FlowStacks;
};
525C733427729300009CBD67 /* SwiftUINavigation */ = {
isa = XCSwiftPackageProductDependency;
package = 525C733327729300009CBD67 /* XCRemoteSwiftPackageReference "swiftui-navigation" */;
productName = SwiftUINavigation;
};
525C7343277BCDDA009CBD67 /* SwiftUINavigation */ = {
isa = XCSwiftPackageProductDependency;
package = 525C733327729300009CBD67 /* XCRemoteSwiftPackageReference "swiftui-navigation" */;
productName = SwiftUINavigation;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = 5241BF2726AA1D3A002D6892 /* Project object */;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,16 @@
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FlowStacksTests"
BuildableName = "FlowStacksTests"
BlueprintName = "FlowStacksTests"
ReferencedContainer = "container:">
</BuildableReference>
</TestableReference>
</Testables>
</TestAction>
<LaunchAction
Expand Down
53 changes: 53 additions & 0 deletions FlowStacksApp/Shared/BindingCoordinator.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import Foundation
import SwiftUI
import FlowStacks
import SwiftUINavigation

struct BindingCoordinator: View {
enum Screen {
case start
case number(Int)
}

@State var routes: Routes<Screen> = [.root(.start, embedInNavigationView: true)]

var body: some View {
Router($routes) { $screen, _ in
if let number = Binding(unwrapping: $screen, case: /Screen.number) {
// Here number is a Binding<Int>, so NumberView can change its
// value in the routes array.
EditableNumberView(number: number)
} else {
StartView(goTapped: goTapped)
}
}
}

func goTapped() {
routes.push(.number(42))
}
}

struct StartView: View {

let goTapped: () -> Void

var body: some View {
VStack(alignment: .center, spacing: 8) {
Button("Go", action: goTapped)
}.navigationTitle("Home")
}
}

struct EditableNumberView: View {

@Binding var number: Int

var body: some View {
VStack(alignment: .center, spacing: 8) {
Stepper("\(number)", onIncrement: { number += 1 }, onDecrement: { number -= 1 })
}
.padding()
.navigationTitle("\(number)")
}
}
23 changes: 13 additions & 10 deletions FlowStacksApp/Shared/FlowStacksApp.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,18 @@ import SwiftUI

@main
struct FlowStacksApp: App {
var body: some Scene {
WindowGroup {
// NumberPCoordinator()
// MixedCoordinator()
// VMCoordinator(viewModel: .init())
// VMPCoordinator(viewModel: .init())
NavigationView {
NumberNCoordinator()
}
}
var body: some Scene {
WindowGroup {
TabView {
NumberCoordinator()
.tabItem { Text("Numbers") }
VMCoordinator()
.tabItem { Text("VMs") }
BindingCoordinator()
.tabItem { Text("Binding") }
ShowingCoordinator()
.tabItem { Text("Showing") }
}
}
}
}
26 changes: 0 additions & 26 deletions FlowStacksApp/Shared/MixedCoordinator.swift

This file was deleted.

Loading

0 comments on commit e71582d

Please sign in to comment.