Skip to content

Commit 2e0314f

Browse files
lks574interactord
authored andcommitted
feat: Singlenavigator03 - init page
1 parent 022bc0a commit 2e0314f

13 files changed

Lines changed: 242 additions & 1 deletion

File tree

Examples/SingleNavigator/SingleTicTacToe/03-SingleTicTacToe.xcodeproj/project.pbxproj

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,17 @@
1313
93782DD32B4B98FA00D16F44 /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 93782DD22B4B98FA00D16F44 /* Preview Assets.xcassets */; };
1414
93782DDB2B4B994700D16F44 /* LinkNavigator in Frameworks */ = {isa = PBXBuildFile; productRef = 93782DDA2B4B994700D16F44 /* LinkNavigator */; };
1515
93782DDE2B4B995400D16F44 /* PageTemplate in Frameworks */ = {isa = PBXBuildFile; productRef = 93782DDD2B4B995400D16F44 /* PageTemplate */; };
16+
93782DE02B4B9C0100D16F44 /* AppDependency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DDF2B4B9C0100D16F44 /* AppDependency.swift */; };
17+
93782DE22B4B9C0D00D16F44 /* AppRouterGroup.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DE12B4B9C0D00D16F44 /* AppRouterGroup.swift */; };
18+
93782DE62B4B9CCC00D16F44 /* HomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DE52B4B9CCC00D16F44 /* HomeView.swift */; };
19+
93782DE82B4B9CDE00D16F44 /* HomeRouteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DE72B4B9CDE00D16F44 /* HomeRouteBuilder.swift */; };
20+
93782DEB2B4B9D0200D16F44 /* PathIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DEA2B4B9D0200D16F44 /* PathIndicator.swift */; };
21+
93782DEE2B4BA31500D16F44 /* LoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DED2B4BA31500D16F44 /* LoginView.swift */; };
22+
93782DF02B4BA32100D16F44 /* LoginRouteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DEF2B4BA32100D16F44 /* LoginRouteBuilder.swift */; };
23+
93782DF32B4BA3C300D16F44 /* NewGameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DF22B4BA3C300D16F44 /* NewGameView.swift */; };
24+
93782DF52B4BA3C800D16F44 /* NewGameRouteBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DF42B4BA3C800D16F44 /* NewGameRouteBuilder.swift */; };
25+
93782DF82B4BA40300D16F44 /* GameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DF72B4BA40300D16F44 /* GameView.swift */; };
26+
93782DFA2B4BA40B00D16F44 /* GameRoutebuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93782DF92B4BA40B00D16F44 /* GameRoutebuilder.swift */; };
1627
/* End PBXBuildFile section */
1728

1829
/* Begin PBXFileReference section */
@@ -21,6 +32,17 @@
2132
93782DCD2B4B98F900D16F44 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
2233
93782DCF2B4B98FA00D16F44 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
2334
93782DD22B4B98FA00D16F44 /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
35+
93782DDF2B4B9C0100D16F44 /* AppDependency.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDependency.swift; sourceTree = "<group>"; };
36+
93782DE12B4B9C0D00D16F44 /* AppRouterGroup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppRouterGroup.swift; sourceTree = "<group>"; };
37+
93782DE52B4B9CCC00D16F44 /* HomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeView.swift; sourceTree = "<group>"; };
38+
93782DE72B4B9CDE00D16F44 /* HomeRouteBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HomeRouteBuilder.swift; sourceTree = "<group>"; };
39+
93782DEA2B4B9D0200D16F44 /* PathIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PathIndicator.swift; sourceTree = "<group>"; };
40+
93782DED2B4BA31500D16F44 /* LoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginView.swift; sourceTree = "<group>"; };
41+
93782DEF2B4BA32100D16F44 /* LoginRouteBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LoginRouteBuilder.swift; sourceTree = "<group>"; };
42+
93782DF22B4BA3C300D16F44 /* NewGameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewGameView.swift; sourceTree = "<group>"; };
43+
93782DF42B4BA3C800D16F44 /* NewGameRouteBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewGameRouteBuilder.swift; sourceTree = "<group>"; };
44+
93782DF72B4BA40300D16F44 /* GameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameView.swift; sourceTree = "<group>"; };
45+
93782DF92B4BA40B00D16F44 /* GameRoutebuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameRoutebuilder.swift; sourceTree = "<group>"; };
2446
/* End PBXFileReference section */
2547

2648
/* Begin PBXFrameworksBuildPhase section */
@@ -55,7 +77,11 @@
5577
93782DCA2B4B98F900D16F44 /* SingleTicTacToe */ = {
5678
isa = PBXGroup;
5779
children = (
80+
93782DE92B4B9CF300D16F44 /* Component */,
81+
93782DE32B4B9CB500D16F44 /* Page */,
5882
93782DCB2B4B98F900D16F44 /* SingleTicTacToeApp.swift */,
83+
93782DDF2B4B9C0100D16F44 /* AppDependency.swift */,
84+
93782DE12B4B9C0D00D16F44 /* AppRouterGroup.swift */,
5985
93782DCD2B4B98F900D16F44 /* ContentView.swift */,
6086
93782DCF2B4B98FA00D16F44 /* Assets.xcassets */,
6187
93782DD12B4B98FA00D16F44 /* Preview Content */,
@@ -71,6 +97,61 @@
7197
path = "Preview Content";
7298
sourceTree = "<group>";
7399
};
100+
93782DE32B4B9CB500D16F44 /* Page */ = {
101+
isa = PBXGroup;
102+
children = (
103+
93782DE42B4B9CC000D16F44 /* Home */,
104+
93782DEC2B4BA30C00D16F44 /* Login */,
105+
93782DF12B4BA3BA00D16F44 /* NewGame */,
106+
93782DF62B4BA3FE00D16F44 /* Game */,
107+
);
108+
path = Page;
109+
sourceTree = "<group>";
110+
};
111+
93782DE42B4B9CC000D16F44 /* Home */ = {
112+
isa = PBXGroup;
113+
children = (
114+
93782DE52B4B9CCC00D16F44 /* HomeView.swift */,
115+
93782DE72B4B9CDE00D16F44 /* HomeRouteBuilder.swift */,
116+
);
117+
path = Home;
118+
sourceTree = "<group>";
119+
};
120+
93782DE92B4B9CF300D16F44 /* Component */ = {
121+
isa = PBXGroup;
122+
children = (
123+
93782DEA2B4B9D0200D16F44 /* PathIndicator.swift */,
124+
);
125+
path = Component;
126+
sourceTree = "<group>";
127+
};
128+
93782DEC2B4BA30C00D16F44 /* Login */ = {
129+
isa = PBXGroup;
130+
children = (
131+
93782DED2B4BA31500D16F44 /* LoginView.swift */,
132+
93782DEF2B4BA32100D16F44 /* LoginRouteBuilder.swift */,
133+
);
134+
path = Login;
135+
sourceTree = "<group>";
136+
};
137+
93782DF12B4BA3BA00D16F44 /* NewGame */ = {
138+
isa = PBXGroup;
139+
children = (
140+
93782DF22B4BA3C300D16F44 /* NewGameView.swift */,
141+
93782DF42B4BA3C800D16F44 /* NewGameRouteBuilder.swift */,
142+
);
143+
path = NewGame;
144+
sourceTree = "<group>";
145+
};
146+
93782DF62B4BA3FE00D16F44 /* Game */ = {
147+
isa = PBXGroup;
148+
children = (
149+
93782DF72B4BA40300D16F44 /* GameView.swift */,
150+
93782DF92B4BA40B00D16F44 /* GameRoutebuilder.swift */,
151+
);
152+
path = Game;
153+
sourceTree = "<group>";
154+
};
74155
/* End PBXGroup section */
75156

76157
/* Begin PBXNativeTarget section */
@@ -149,7 +230,18 @@
149230
isa = PBXSourcesBuildPhase;
150231
buildActionMask = 2147483647;
151232
files = (
233+
93782DE02B4B9C0100D16F44 /* AppDependency.swift in Sources */,
234+
93782DFA2B4BA40B00D16F44 /* GameRoutebuilder.swift in Sources */,
152235
93782DCE2B4B98F900D16F44 /* ContentView.swift in Sources */,
236+
93782DF02B4BA32100D16F44 /* LoginRouteBuilder.swift in Sources */,
237+
93782DF52B4BA3C800D16F44 /* NewGameRouteBuilder.swift in Sources */,
238+
93782DE22B4B9C0D00D16F44 /* AppRouterGroup.swift in Sources */,
239+
93782DE62B4B9CCC00D16F44 /* HomeView.swift in Sources */,
240+
93782DEB2B4B9D0200D16F44 /* PathIndicator.swift in Sources */,
241+
93782DE82B4B9CDE00D16F44 /* HomeRouteBuilder.swift in Sources */,
242+
93782DF32B4BA3C300D16F44 /* NewGameView.swift in Sources */,
243+
93782DEE2B4BA31500D16F44 /* LoginView.swift in Sources */,
244+
93782DF82B4BA40300D16F44 /* GameView.swift in Sources */,
153245
93782DCC2B4B98F900D16F44 /* SingleTicTacToeApp.swift in Sources */,
154246
);
155247
runOnlyForDeploymentPostprocessing = 0;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import LinkNavigator
2+
3+
struct AppDependency: DependencyType { }
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import LinkNavigator
2+
3+
public typealias RootNavigatorType = LinkNavigatorProtocol & LinkNavigatorFindLocationUsable
4+
5+
struct AppRouterGroup<RootNavigator: RootNavigatorType> {
6+
init() { }
7+
8+
var routers: [RouteBuilderOf<RootNavigator>] {
9+
[
10+
HomeRouteBuilder.generate(),
11+
LoginRouteBuilder.generate(),
12+
NewGameRouteBuilder.generate(),
13+
GameRouteBuilder.generate(),
14+
]
15+
}
16+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import SwiftUI
2+
3+
public struct PathIndicator: View {
4+
let currentPath: String
5+
6+
public var body: some View {
7+
VStack(spacing: 16) {
8+
Text("currentPath")
9+
.font(.headline)
10+
11+
Text(currentPath)
12+
.font(.subheadline)
13+
}
14+
.padding()
15+
.frame(maxWidth: .infinity)
16+
.background(
17+
RoundedRectangle(cornerRadius: 12).fill(.green.opacity(0.3)))
18+
.padding(.horizontal)
19+
}
20+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import LinkNavigator
2+
import SwiftUI
3+
4+
struct GameRouteBuilder<RootNavigator: RootNavigatorType> {
5+
6+
static func generate() -> RouteBuilderOf<RootNavigator> {
7+
var matchPath: String { "game" }
8+
return .init(matchPath: matchPath) { navigator, items, diContainer -> RouteViewController? in
9+
return WrappingController(matchPath: matchPath) {
10+
GameView(navigator: navigator)
11+
}
12+
}
13+
}
14+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import SwiftUI
2+
import LinkNavigator
3+
4+
struct GameView: View {
5+
6+
let navigator: RootNavigatorType
7+
8+
var body: some View {
9+
Text("GameView")
10+
}
11+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import LinkNavigator
2+
import SwiftUI
3+
4+
struct HomeRouteBuilder<RootNavigator: RootNavigatorType> {
5+
6+
static func generate() -> RouteBuilderOf<RootNavigator> {
7+
var matchPath: String { "home" }
8+
return .init(matchPath: matchPath) { navigator, items, diContainer -> RouteViewController? in
9+
return WrappingController(matchPath: matchPath) {
10+
HomeView(navigator: navigator)
11+
}
12+
}
13+
}
14+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import SwiftUI
2+
import LinkNavigator
3+
4+
struct HomeView: View {
5+
6+
let navigator: RootNavigatorType
7+
8+
var body: some View {
9+
Text("HomeView")
10+
}
11+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import LinkNavigator
2+
import SwiftUI
3+
4+
struct LoginRouteBuilder<RootNavigator: RootNavigatorType> {
5+
6+
static func generate() -> RouteBuilderOf<RootNavigator> {
7+
var matchPath: String { "login" }
8+
return .init(matchPath: matchPath) { navigator, items, diContainer -> RouteViewController? in
9+
return WrappingController(matchPath: matchPath) {
10+
LoginView(navigator: navigator)
11+
}
12+
}
13+
}
14+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import SwiftUI
2+
import LinkNavigator
3+
4+
struct LoginView: View {
5+
6+
let navigator: RootNavigatorType
7+
8+
var body: some View {
9+
Text("LoginView")
10+
}
11+
}

0 commit comments

Comments
 (0)