turbo-native-initializer 0.0.16 → 0.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/lib/turbo_native_initializer/generator.rb +2 -1
  3. data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebBottomSheetFragment.kt.tt +8 -0
  4. data/lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/main/MainSessionNavHostFragment.kt.tt +8 -1
  5. data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebBottomSheetFragment.kt.tt +8 -0
  6. data/lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/main/BaseSessionNavHostFragment.kt.tt +8 -1
  7. data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/TurboNavigationController.swift +3 -1
  8. data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/TurboWebViewController.swift +1 -2
  9. data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Delegates/AppDelegate.swift +20 -1
  10. data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Delegates/{SceneDelegate.swift.tt → SceneDelegate.swift} +5 -5
  11. data/lib/turbo_native_initializer/templates/{ios_tabs/TurboNativeProject/Controllers → ios_stack/TurboNativeProject/Extensions}/UIViewController+Toast.swift +9 -18
  12. data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/{TurboNativeProject.swift.tt → TurboNativeProject.swift} +1 -1
  13. data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject.xcodeproj/project.pbxproj.tt +26 -16
  14. data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/TurboNavigationController.swift +3 -1
  15. data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/TurboWebViewController.swift +1 -2
  16. data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Delegates/AppDelegate.swift +20 -1
  17. data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Delegates/{SceneDelegate.swift.tt → SceneDelegate.swift} +7 -6
  18. data/lib/turbo_native_initializer/templates/{ios_stack/TurboNativeProject/Controllers → ios_tabs/TurboNativeProject/Extensions}/UIViewController+Toast.swift +9 -18
  19. data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/{TurboNativeProject.swift.tt → TurboNativeProject.swift} +1 -1
  20. data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.pbxproj.tt +29 -21
  21. data/lib/turbo_native_initializer/version.rb +1 -1
  22. metadata +21 -19
  23. /data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/{Controllers → Extensions}/WKWebViewConfiguration+App.swift +0 -0
  24. /data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/{Configuration → Resources}/Info.plist +0 -0
  25. /data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/{Configuration → Resources}/path-configuration.json +0 -0
  26. /data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/{Resources → Views}/Base.lproj/LaunchScreen.storyboard +0 -0
  27. /data/lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/{Resources → Views}/Base.lproj/Main.storyboard +0 -0
  28. /data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/{Controllers → Extensions}/WKWebViewConfiguration+App.swift +0 -0
  29. /data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/{Configuration → Resources}/Info.plist +0 -0
  30. /data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/{Configuration → Resources}/path-configuration.json +0 -0
  31. /data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/{Resources → Views}/Base.lproj/LaunchScreen.storyboard +0 -0
  32. /data/lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/{Resources → Views}/Base.lproj/Main.storyboard +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a6841be700aef23b3f08578ca5600a2b04f749b0759b78524b9eeee25b401761
4
- data.tar.gz: 150fcb0fdb292a111db55d614684162201e46fef74df2dd0d5e3bb07d1e631eb
3
+ metadata.gz: 46eebca0f11beac2c27299db10976cf4b04357f916ebf9c37937b3e507e71bf3
4
+ data.tar.gz: 44102e1778c14329bb09a79049896af94ef1004f42ec8c4a9b226a65d713f790
5
5
  SHA512:
6
- metadata.gz: 94495c27a497d66a322a394b5d0892d38ffd4b6db121dff707598864283efe3afd48ed50ab4f31ff08e60f64171ec2e7c2803131939e4aea202a1499e9d3bf31
7
- data.tar.gz: dc44d0613e6e02f30de088a3f329297c8fd38e310e56c921a55d913c199862f6d44dfe468ff206bd0381dfedde8daf1def0acb41eef353b1dd93643421850b01
6
+ metadata.gz: 6f3989992aa8b01214daf9843df3a850af00b534e38e499acd01492ecbb5af7dabdba75e683af38e4cfddcd911696f96677879b887290110d1b57e9acca56cef
7
+ data.tar.gz: 4c0323cb1d7b990fdcbe3ca6baf9230363f9310b11c0a652fc482b9eef32e2699c1a9f80591cc3db3c512284c551a45d7e70f8f7b592843c883f7d8e00efff62
@@ -19,11 +19,12 @@ module TurboNativeInitializer
19
19
  def copy_template_files
20
20
  case options.platform
21
21
  when "ios"
22
- directory "#{project}/TurboNativeProject/Configuration", "#{name}/#{name}/Configuration"
23
22
  directory "#{project}/TurboNativeProject/Controllers", "#{name}/#{name}/Controllers"
24
23
  directory "#{project}/TurboNativeProject/Delegates", "#{name}/#{name}/Delegates"
24
+ directory "#{project}/TurboNativeProject/Extensions", "#{name}/#{name}/Extensions"
25
25
  directory "#{project}/TurboNativeProject/Resources", "#{name}/#{name}/Resources"
26
26
  directory "#{project}/TurboNativeProject/Strada", "#{name}/#{name}/Strada"
27
+ directory "#{project}/TurboNativeProject/Views", "#{name}/#{name}/Views"
27
28
  directory "#{project}/TurboNativeProject.xcodeproj", "#{name}/#{name}.xcodeproj"
28
29
  template "#{project}/TurboNativeProject/TurboNativeProject.swift", "#{name}/#{name}/#{name}.swift"
29
30
  when "android"
@@ -0,0 +1,8 @@
1
+ package <%= package_name %>.features.web
2
+
3
+ import <%= package_name %>.base.NavDestination
4
+ import dev.hotwire.turbo.fragments.TurboWebBottomSheetDialogFragment
5
+ import dev.hotwire.turbo.nav.TurboNavGraphDestination
6
+
7
+ @TurboNavGraphDestination(uri = "turbo://fragment/web/modal/sheet")
8
+ class WebBottomSheetFragment : TurboWebBottomSheetDialogFragment(), NavDestination
@@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
5
5
  import dev.hotwire.strada.Bridge
6
6
  import dev.hotwire.turbo.config.TurboPathConfiguration
7
7
  import <%= package_name %>.features.native.NumbersFragment
8
+ import <%= package_name %>.features.web.WebBottomSheetFragment
8
9
  import <%= package_name %>.features.web.WebFragment
9
10
  import <%= package_name %>.features.web.WebHomeFragment
10
11
  import <%= package_name %>.features.web.WebModalFragment
@@ -23,7 +24,13 @@ class MainSessionNavHostFragment : TurboSessionNavHostFragment() {
23
24
  get() = listOf()
24
25
 
25
26
  override val registeredFragments: List<KClass<out Fragment>>
26
- get() = listOf(WebFragment::class, WebHomeFragment::class, WebModalFragment::class, NumbersFragment::class)
27
+ get() = listOf(
28
+ WebFragment::class,
29
+ WebHomeFragment::class,
30
+ WebModalFragment::class,
31
+ WebBottomSheetFragment::class,
32
+ NumbersFragment::class
33
+ )
27
34
 
28
35
  override val pathConfigurationLocation: TurboPathConfiguration.Location
29
36
  get() = TurboPathConfiguration.Location(assetFilePath = "json/configuration.json")
@@ -0,0 +1,8 @@
1
+ package <%= package_name %>.features.web
2
+
3
+ import <%= package_name %>.base.NavDestination
4
+ import dev.hotwire.turbo.fragments.TurboWebBottomSheetDialogFragment
5
+ import dev.hotwire.turbo.nav.TurboNavGraphDestination
6
+
7
+ @TurboNavGraphDestination(uri = "turbo://fragment/web/modal/sheet")
8
+ class WebBottomSheetFragment : TurboWebBottomSheetDialogFragment(), NavDestination
@@ -5,6 +5,7 @@ import androidx.fragment.app.Fragment
5
5
  import dev.hotwire.strada.Bridge
6
6
  import dev.hotwire.turbo.config.TurboPathConfiguration
7
7
  import <%= package_name %>.features.native.NumbersFragment
8
+ import <%= package_name %>.features.web.WebBottomSheetFragment
8
9
  import <%= package_name %>.features.web.WebFragment
9
10
  import <%= package_name %>.features.web.WebHomeFragment
10
11
  import <%= package_name %>.features.web.WebModalFragment
@@ -17,7 +18,13 @@ abstract class BaseSessionNavHostFragment : TurboSessionNavHostFragment() {
17
18
  get() = listOf()
18
19
 
19
20
  override val registeredFragments: List<KClass<out Fragment>>
20
- get() = listOf(WebFragment::class, WebHomeFragment::class, WebModalFragment::class, NumbersFragment::class)
21
+ get() = listOf(
22
+ WebFragment::class,
23
+ WebHomeFragment::class,
24
+ WebModalFragment::class,
25
+ WebBottomSheetFragment::class,
26
+ NumbersFragment::class
27
+ )
21
28
 
22
29
  override val pathConfigurationLocation: TurboPathConfiguration.Location
23
30
  get() = TurboPathConfiguration.Location(assetFilePath = "json/configuration.json")
@@ -122,7 +122,9 @@ extension TurboNavigationController {
122
122
  popToRootViewController(animated: true)
123
123
  } else if isReplaceAll(properties) {
124
124
  setViewControllers([viewController], animated: false)
125
- } else if isReplace(properties) || action == .replace {
125
+ } else if isReplace(properties) {
126
+ setViewControllers(Array(viewControllers.dropLast()) + [viewController], animated: false)
127
+ } else if action == .replace {
126
128
  setViewControllers(Array(viewControllers.dropLast()) + [viewController], animated: false)
127
129
  } else {
128
130
  pushViewController(viewController, animated: true)
@@ -19,6 +19,7 @@ final class TurboWebViewController: VisitableViewController, ErrorPresenter, Bri
19
19
 
20
20
  override func viewDidLoad() {
21
21
  super.viewDidLoad()
22
+ bridgeDelegate.onViewDidLoad()
22
23
 
23
24
  navigationItem.backButtonTitle = "Back"
24
25
 
@@ -27,8 +28,6 @@ final class TurboWebViewController: VisitableViewController, ErrorPresenter, Bri
27
28
  if presentingViewController != nil {
28
29
  navigationItem.leftBarButtonItem = dismissModalButton
29
30
  }
30
-
31
- bridgeDelegate.onViewDidLoad()
32
31
  }
33
32
 
34
33
  override func viewWillAppear(_ animated: Bool) {
@@ -1,4 +1,23 @@
1
1
  import UIKit
2
2
 
3
3
  @main
4
- class AppDelegate: UIResponder, UIApplicationDelegate {}
4
+ class AppDelegate: UIResponder, UIApplicationDelegate {
5
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
6
+ // Override point for customization after application launch.
7
+ return true
8
+ }
9
+
10
+ // MARK: UISceneSession Lifecycle
11
+
12
+ func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
13
+ // Called when a new scene session is being created.
14
+ // Use this method to select a configuration to create the new scene with.
15
+ return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
16
+ }
17
+
18
+ func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
19
+ // Called when the user discards a scene session.
20
+ // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
21
+ // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
22
+ }
23
+ }
@@ -5,16 +5,16 @@ import Turbo
5
5
  import Strada
6
6
 
7
7
  final class SceneDelegate: UIResponder {
8
- private static var sharedProcessPool = WKProcessPool()
9
8
 
10
9
  var window: UIWindow?
11
- private let rootURL = <%= name %>.homeURL
10
+ private let rootURL = TurboNativeProject.homeURL
12
11
  private var navigationController: TurboNavigationController!
13
12
 
14
13
  // MARK: - Setup
15
14
 
16
15
  private func configureRootViewController() {
17
16
  navigationController = window!.rootViewController as? TurboNavigationController
17
+ navigationController.navigationBar.scrollEdgeAppearance = .init()
18
18
  navigationController.session = session
19
19
  navigationController.modalSession = modalSession
20
20
  }
@@ -22,7 +22,7 @@ final class SceneDelegate: UIResponder {
22
22
  // MARK: - Authentication
23
23
 
24
24
  private func promptForAuthentication() {
25
- let authURL = <%= name %>.signInURL
25
+ let authURL = TurboNativeProject.signInURL
26
26
  let properties = pathConfiguration.properties(for: authURL)
27
27
  navigationController.route(url: authURL, options: VisitOptions(), properties: properties)
28
28
  }
@@ -42,6 +42,7 @@ final class SceneDelegate: UIResponder {
42
42
  let session = Session(webView: webView)
43
43
  session.delegate = self
44
44
  session.pathConfiguration = pathConfiguration
45
+
45
46
  return session
46
47
  }
47
48
 
@@ -54,8 +55,7 @@ final class SceneDelegate: UIResponder {
54
55
 
55
56
  extension SceneDelegate: UIWindowSceneDelegate {
56
57
  func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
57
- guard let _ = scene as? UIWindowScene else { return }
58
-
58
+ guard let _ = (scene as? UIWindowScene) else { return }
59
59
  configureRootViewController()
60
60
  navigationController.route(url: rootURL, options: VisitOptions(action: .replace), properties: [:])
61
61
  }
@@ -2,33 +2,24 @@ import SwiftUI
2
2
 
3
3
  public extension UIViewController {
4
4
  func presentToast(_ message: String) {
5
- guard let root = view.window?.rootViewController else { return }
5
+ guard let window = view.window else { return }
6
6
 
7
- removeToastViews(from: root)
7
+ removeToastViews(from: window)
8
8
 
9
9
  let toastView = ToastView(message: message)
10
10
  toastView.translatesAutoresizingMaskIntoConstraints = false
11
11
 
12
- root.view.addSubview(toastView)
12
+ window.addSubview(toastView)
13
13
 
14
14
  NSLayoutConstraint.activate([
15
- toastView.topAnchor.constraint(equalTo: root.view.safeAreaLayoutGuide.topAnchor),
16
- toastView.centerXAnchor.constraint(equalTo: root.view.centerXAnchor)
17
- ])
18
-
19
- let widthConstraint = toastView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -10)
20
- widthConstraint.priority = .defaultHigh
21
-
22
- let maxWidthConstraint = toastView.widthAnchor.constraint(lessThanOrEqualToConstant: 600)
23
- maxWidthConstraint.priority = .required
24
-
25
- NSLayoutConstraint.activate([
26
- widthConstraint, maxWidthConstraint
15
+ toastView.centerXAnchor.constraint(equalTo: window.centerXAnchor),
16
+ toastView.topAnchor.constraint(equalTo: window.safeAreaLayoutGuide.topAnchor, constant: 2),
17
+ toastView.widthAnchor.constraint(equalTo: window.safeAreaLayoutGuide.widthAnchor, constant: -10)
27
18
  ])
28
19
  }
29
20
 
30
- fileprivate func removeToastViews(from root: UIViewController) {
31
- root.view.subviews.filter({ $0 is ToastView }).forEach({ toast in
21
+ fileprivate func removeToastViews(from window: UIWindow) {
22
+ window.subviews.filter({ $0 is ToastView }).forEach({ toast in
32
23
  toast.removeFromSuperview()
33
24
  })
34
25
  }
@@ -36,7 +27,7 @@ public extension UIViewController {
36
27
 
37
28
  public class ToastView: UIView {
38
29
 
39
- private var duration = 2.5
30
+ private var duration = 2.0
40
31
 
41
32
  convenience init(message: String) {
42
33
  self.init(frame: .zero)
@@ -1,6 +1,6 @@
1
1
  import Foundation
2
2
 
3
- struct <%= name %> {
3
+ struct TurboNativeProject {
4
4
  private static let developmentURL = URL(string: "http://localhost:3000")!
5
5
  private static let productionURL = URL(string: "https://turbo-native-demo.glitch.me")!
6
6
 
@@ -69,21 +69,21 @@
69
69
  isa = PBXGroup;
70
70
  children = (
71
71
  5D281BB32ABC0CB0001CE599 /* BridgeComponent+App.swift */,
72
- 5D281BB52ABC0CB9001CE599 /* FormComponent.swift */,
73
- 5D1F2EC02ABEB12300B2819A /* NavButtonComponent.swift */,
74
72
  5D91C53F2AC538960046D872 /* FlashMessageComponent.swift */,
73
+ 5D281BB52ABC0CB9001CE599 /* FormComponent.swift */,
75
74
  5DA9C92E2AC7E38100FEA7E6 /* MenuComponent.swift */,
75
+ 5D1F2EC02ABEB12300B2819A /* NavButtonComponent.swift */,
76
76
  );
77
77
  path = Strada;
78
78
  sourceTree = "<group>";
79
79
  };
80
- 5D2FA5CD2A9DB1AB001AF2F1 /* Configuration */ = {
80
+ 5DAD248F2AD6533E0082D23D /* Extensions */ = {
81
81
  isa = PBXGroup;
82
82
  children = (
83
- 5DCC50E12A959DFA00B529A0 /* Info.plist */,
84
- 5DCC50E92A95A19600B529A0 /* path-configuration.json */,
83
+ 5DAF71B62AC3FB53002D04FE /* UIViewController+Toast.swift */,
84
+ 5D281BB02ABC0C3D001CE599 /* WKWebViewConfiguration+App.swift */,
85
85
  );
86
- path = Configuration;
86
+ path = Extensions;
87
87
  sourceTree = "<group>";
88
88
  };
89
89
  5DCC50C72A959DF800B529A0 = {
@@ -105,11 +105,12 @@
105
105
  5DCC50D22A959DF900B529A0 /* <%= name %> */ = {
106
106
  isa = PBXGroup;
107
107
  children = (
108
- 5D281BB22ABC0C8F001CE599 /* Strada */,
109
- 5D2FA5CD2A9DB1AB001AF2F1 /* Configuration */,
110
108
  5DCC50F42A95AC4E00B529A0 /* Controllers */,
111
109
  5DCC50FB2A95B55200B529A0 /* Delegates */,
110
+ 5DAD248F2AD6533E0082D23D /* Extensions */,
112
111
  5DCC51072A95CCEE00B529A0 /* Resources */,
112
+ 5D281BB22ABC0C8F001CE599 /* Strada */,
113
+ 5DF25B382ADA0DF40046C704 /* Views */,
113
114
  5DCC50F22A95A7E600B529A0 /* <%= name %>.swift */,
114
115
  );
115
116
  path = <%= name %>;
@@ -119,11 +120,9 @@
119
120
  isa = PBXGroup;
120
121
  children = (
121
122
  5DCC50ED2A95A27600B529A0 /* ErrorPresenter.swift */,
122
- 5DAF71B62AC3FB53002D04FE /* UIViewController+Toast.swift */,
123
- 5D281BB02ABC0C3D001CE599 /* WKWebViewConfiguration+App.swift */,
123
+ 5DDD58802AA9A8BE00FAC961 /* NumbersViewController.swift */,
124
124
  5DCC50E72A95A0D900B529A0 /* TurboNavigationController.swift */,
125
125
  5DCC50D72A959DF900B529A0 /* TurboWebViewController.swift */,
126
- 5DDD58802AA9A8BE00FAC961 /* NumbersViewController.swift */,
127
126
  );
128
127
  path = Controllers;
129
128
  sourceTree = "<group>";
@@ -141,10 +140,19 @@
141
140
  isa = PBXGroup;
142
141
  children = (
143
142
  5DCC50DC2A959DFA00B529A0 /* Assets.xcassets */,
143
+ 5DCC50E12A959DFA00B529A0 /* Info.plist */,
144
+ 5DCC50E92A95A19600B529A0 /* path-configuration.json */,
145
+ );
146
+ path = Resources;
147
+ sourceTree = "<group>";
148
+ };
149
+ 5DF25B382ADA0DF40046C704 /* Views */ = {
150
+ isa = PBXGroup;
151
+ children = (
144
152
  5DCC50DE2A959DFA00B529A0 /* LaunchScreen.storyboard */,
145
153
  5D0D86212A9AA70500A525E9 /* Main.storyboard */,
146
154
  );
147
- path = Resources;
155
+ path = Views;
148
156
  sourceTree = "<group>";
149
157
  };
150
158
  /* End PBXGroup section */
@@ -179,7 +187,7 @@
179
187
  attributes = {
180
188
  BuildIndependentTargetsInParallel = 1;
181
189
  LastSwiftUpdateCheck = 1430;
182
- LastUpgradeCheck = 1430;
190
+ LastUpgradeCheck = 1500;
183
191
  TargetAttributes = {
184
192
  5DCC50CF2A959DF900B529A0 = {
185
193
  CreatedOnToolsVersion = 14.3.1;
@@ -302,6 +310,7 @@
302
310
  DEBUG_INFORMATION_FORMAT = dwarf;
303
311
  ENABLE_STRICT_OBJC_MSGSEND = YES;
304
312
  ENABLE_TESTABILITY = YES;
313
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
305
314
  GCC_C_LANGUAGE_STANDARD = gnu11;
306
315
  GCC_DYNAMIC_NO_PIC = NO;
307
316
  GCC_NO_COMMON_BLOCKS = YES;
@@ -362,6 +371,7 @@
362
371
  DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
363
372
  ENABLE_NS_ASSERTIONS = NO;
364
373
  ENABLE_STRICT_OBJC_MSGSEND = YES;
374
+ ENABLE_USER_SCRIPT_SANDBOXING = YES;
365
375
  GCC_C_LANGUAGE_STANDARD = gnu11;
366
376
  GCC_NO_COMMON_BLOCKS = YES;
367
377
  GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@@ -388,7 +398,7 @@
388
398
  CODE_SIGN_STYLE = Automatic;
389
399
  CURRENT_PROJECT_VERSION = 1;
390
400
  GENERATE_INFOPLIST_FILE = YES;
391
- INFOPLIST_FILE = <%= name %>/Configuration/Info.plist;
401
+ INFOPLIST_FILE = <%= name %>/Resources/Info.plist;
392
402
  INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
393
403
  INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
394
404
  INFOPLIST_KEY_UIMainStoryboardFile = Main;
@@ -415,7 +425,7 @@
415
425
  CODE_SIGN_STYLE = Automatic;
416
426
  CURRENT_PROJECT_VERSION = 1;
417
427
  GENERATE_INFOPLIST_FILE = YES;
418
- INFOPLIST_FILE = <%= name %>/Configuration/Info.plist;
428
+ INFOPLIST_FILE = <%= name %>/Resources/Info.plist;
419
429
  INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
420
430
  INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
421
431
  INFOPLIST_KEY_UIMainStoryboardFile = Main;
@@ -471,7 +481,7 @@
471
481
  repositoryURL = "https://github.com/hotwired/turbo-ios";
472
482
  requirement = {
473
483
  kind = exactVersion;
474
- version = 7.0.0;
484
+ version = 7.0.1;
475
485
  };
476
486
  };
477
487
  /* End XCRemoteSwiftPackageReference section */
@@ -122,7 +122,9 @@ extension TurboNavigationController {
122
122
  popToRootViewController(animated: true)
123
123
  } else if isReplaceAll(properties) {
124
124
  setViewControllers([viewController], animated: false)
125
- } else if isReplace(properties) || action == .replace {
125
+ } else if isReplace(properties) {
126
+ setViewControllers(Array(viewControllers.dropLast()) + [viewController], animated: false)
127
+ } else if action == .replace {
126
128
  setViewControllers(Array(viewControllers.dropLast()) + [viewController], animated: false)
127
129
  } else {
128
130
  pushViewController(viewController, animated: true)
@@ -19,6 +19,7 @@ final class TurboWebViewController: VisitableViewController, ErrorPresenter, Bri
19
19
 
20
20
  override func viewDidLoad() {
21
21
  super.viewDidLoad()
22
+ bridgeDelegate.onViewDidLoad()
22
23
 
23
24
  navigationItem.backButtonTitle = "Back"
24
25
 
@@ -27,8 +28,6 @@ final class TurboWebViewController: VisitableViewController, ErrorPresenter, Bri
27
28
  if presentingViewController != nil {
28
29
  navigationItem.leftBarButtonItem = dismissModalButton
29
30
  }
30
-
31
- bridgeDelegate.onViewDidLoad()
32
31
  }
33
32
 
34
33
  override func viewWillAppear(_ animated: Bool) {
@@ -1,4 +1,23 @@
1
1
  import UIKit
2
2
 
3
3
  @main
4
- class AppDelegate: UIResponder, UIApplicationDelegate {}
4
+ class AppDelegate: UIResponder, UIApplicationDelegate {
5
+ func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
6
+ // Override point for customization after application launch.
7
+ return true
8
+ }
9
+
10
+ // MARK: UISceneSession Lifecycle
11
+
12
+ func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
13
+ // Called when a new scene session is being created.
14
+ // Use this method to select a configuration to create the new scene with.
15
+ return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
16
+ }
17
+
18
+ func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
19
+ // Called when the user discards a scene session.
20
+ // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
21
+ // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
22
+ }
23
+ }
@@ -5,13 +5,11 @@ import Turbo
5
5
  import Strada
6
6
 
7
7
  final class SceneDelegate: UIResponder {
8
- private static var sharedProcessPool = WKProcessPool()
9
-
10
8
  var window: UIWindow?
11
9
 
12
- private let baseURL = <%= name %>.baseURL
13
- private let rootURL1 = <%= name %>.homeURL1
14
- private let rootURL2 = <%= name %>.homeURL2
10
+ private let baseURL = TurboNativeProject.baseURL
11
+ private let rootURL1 = TurboNativeProject.homeURL1
12
+ private let rootURL2 = TurboNativeProject.homeURL2
15
13
 
16
14
  private var tabBarController: UITabBarController!
17
15
  private var navigationController1: TurboNavigationController!
@@ -25,12 +23,15 @@ final class SceneDelegate: UIResponder {
25
23
 
26
24
  private func configureRootViewController() {
27
25
  tabBarController = window!.rootViewController as? UITabBarController
26
+ tabBarController.tabBar.scrollEdgeAppearance = .init()
28
27
 
29
28
  navigationController1 = tabBarController.viewControllers![0] as? TurboNavigationController
29
+ navigationController1.navigationBar.scrollEdgeAppearance = .init()
30
30
  navigationController1.session = session1
31
31
  navigationController1.modalSession = modalSession
32
32
 
33
33
  navigationController2 = tabBarController.viewControllers![1] as? TurboNavigationController
34
+ navigationController2.navigationBar.scrollEdgeAppearance = .init()
34
35
  navigationController2.session = session2
35
36
  navigationController2.modalSession = modalSession
36
37
  }
@@ -113,7 +114,7 @@ extension SceneDelegate: WKUIDelegate {
113
114
  func webView(_ webView: WKWebView, runJavaScriptConfirmPanelWithMessage message: String, initiatedByFrame frame: WKFrameInfo, completionHandler: @escaping (Bool) -> Void) {
114
115
  let confirm = UIAlertController(title: nil, message: message, preferredStyle: .alert)
115
116
  confirm.addAction(UIAlertAction(title: "Cancel", style: .cancel) { _ in completionHandler(false) })
116
- confirm.addAction(UIAlertAction(title: "OK", style: .default) { _ in completionHandler(true) })
117
+ confirm.addAction(UIAlertAction(title: "OK", style: .default) { _ in completionHandler(true) })
117
118
  navigationController().present(confirm, animated: true)
118
119
  }
119
120
  }
@@ -2,33 +2,24 @@ import SwiftUI
2
2
 
3
3
  public extension UIViewController {
4
4
  func presentToast(_ message: String) {
5
- guard let root = view.window?.rootViewController else { return }
5
+ guard let window = view.window else { return }
6
6
 
7
- removeToastViews(from: root)
7
+ removeToastViews(from: window)
8
8
 
9
9
  let toastView = ToastView(message: message)
10
10
  toastView.translatesAutoresizingMaskIntoConstraints = false
11
11
 
12
- root.view.addSubview(toastView)
12
+ window.addSubview(toastView)
13
13
 
14
14
  NSLayoutConstraint.activate([
15
- toastView.topAnchor.constraint(equalTo: root.view.safeAreaLayoutGuide.topAnchor),
16
- toastView.centerXAnchor.constraint(equalTo: root.view.centerXAnchor)
17
- ])
18
-
19
- let widthConstraint = toastView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -10)
20
- widthConstraint.priority = .defaultHigh
21
-
22
- let maxWidthConstraint = toastView.widthAnchor.constraint(lessThanOrEqualToConstant: 600)
23
- maxWidthConstraint.priority = .required
24
-
25
- NSLayoutConstraint.activate([
26
- widthConstraint, maxWidthConstraint
15
+ toastView.centerXAnchor.constraint(equalTo: window.centerXAnchor),
16
+ toastView.topAnchor.constraint(equalTo: window.safeAreaLayoutGuide.topAnchor, constant: 2),
17
+ toastView.widthAnchor.constraint(equalTo: window.safeAreaLayoutGuide.widthAnchor, constant: -10)
27
18
  ])
28
19
  }
29
20
 
30
- fileprivate func removeToastViews(from root: UIViewController) {
31
- root.view.subviews.filter({ $0 is ToastView }).forEach({ toast in
21
+ fileprivate func removeToastViews(from window: UIWindow) {
22
+ window.subviews.filter({ $0 is ToastView }).forEach({ toast in
32
23
  toast.removeFromSuperview()
33
24
  })
34
25
  }
@@ -36,7 +27,7 @@ public extension UIViewController {
36
27
 
37
28
  public class ToastView: UIView {
38
29
 
39
- private var duration = 2.5
30
+ private var duration = 2.0
40
31
 
41
32
  convenience init(message: String) {
42
33
  self.init(frame: .zero)
@@ -1,6 +1,6 @@
1
1
  import Foundation
2
2
 
3
- struct <%= name %> {
3
+ struct TurboNativeProject {
4
4
  private static let developmentURL = URL(string: "http://localhost:3000")!
5
5
  private static let productionURL = URL(string: "https://turbo-native-demo.glitch.me")!
6
6
 
@@ -65,27 +65,27 @@
65
65
  /* End PBXFrameworksBuildPhase section */
66
66
 
67
67
  /* Begin PBXGroup section */
68
- 5D2FA5CD2A9DB1AB001AF2F1 /* Configuration */ = {
69
- isa = PBXGroup;
70
- children = (
71
- 5DCC50E12A959DFA00B529A0 /* Info.plist */,
72
- 5DCC50E92A95A19600B529A0 /* path-configuration.json */,
73
- );
74
- path = Configuration;
75
- sourceTree = "<group>";
76
- };
77
68
  5D8AB2F82ABC117400C6A82F /* Strada */ = {
78
69
  isa = PBXGroup;
79
70
  children = (
80
71
  5D8AB2FA2ABC117F00C6A82F /* BridgeComponent+App.swift */,
81
- 5D8AB2F92ABC117F00C6A82F /* FormComponent.swift */,
82
- 5D1F2EC02ABEB12300B2819A /* NavButtonComponent.swift */,
83
72
  5D2381402AC53D8900FABA1F /* FlashMessageComponent.swift */,
73
+ 5D8AB2F92ABC117F00C6A82F /* FormComponent.swift */,
84
74
  5DA9C9342AC874D200FEA7E6 /* MenuComponent.swift */,
75
+ 5D1F2EC02ABEB12300B2819A /* NavButtonComponent.swift */,
85
76
  );
86
77
  path = Strada;
87
78
  sourceTree = "<group>";
88
79
  };
80
+ 5DB1DBA12ADA1BF1008B0141 /* Views */ = {
81
+ isa = PBXGroup;
82
+ children = (
83
+ 5DCC50DE2A959DFA00B529A0 /* LaunchScreen.storyboard */,
84
+ 5D0D86212A9AA70500A525E9 /* Main.storyboard */,
85
+ );
86
+ path = Views;
87
+ sourceTree = "<group>";
88
+ };
89
89
  5DCC50C72A959DF800B529A0 = {
90
90
  isa = PBXGroup;
91
91
  children = (
@@ -105,11 +105,12 @@
105
105
  5DCC50D22A959DF900B529A0 /* <%= name %> */ = {
106
106
  isa = PBXGroup;
107
107
  children = (
108
- 5D8AB2F82ABC117400C6A82F /* Strada */,
109
- 5D2FA5CD2A9DB1AB001AF2F1 /* Configuration */,
110
108
  5DCC50F42A95AC4E00B529A0 /* Controllers */,
111
109
  5DCC50FB2A95B55200B529A0 /* Delegates */,
110
+ 5DD38FFC2AD659BC00EA0059 /* Extensions */,
112
111
  5DCC51072A95CCEE00B529A0 /* Resources */,
112
+ 5D8AB2F82ABC117400C6A82F /* Strada */,
113
+ 5DB1DBA12ADA1BF1008B0141 /* Views */,
113
114
  5DCC50F22A95A7E600B529A0 /* <%= name %>.swift */,
114
115
  );
115
116
  path = <%= name %>;
@@ -118,12 +119,10 @@
118
119
  5DCC50F42A95AC4E00B529A0 /* Controllers */ = {
119
120
  isa = PBXGroup;
120
121
  children = (
121
- 5D8AB2FD2ABC119900C6A82F /* WKWebViewConfiguration+App.swift */,
122
- 5D0735D32AC514F800AC547A /* UIViewController+Toast.swift */,
123
122
  5DCC50ED2A95A27600B529A0 /* ErrorPresenter.swift */,
123
+ 5DDD58802AA9A8BE00FAC961 /* NumbersViewController.swift */,
124
124
  5DCC50E72A95A0D900B529A0 /* TurboNavigationController.swift */,
125
125
  5DCC50D72A959DF900B529A0 /* TurboWebViewController.swift */,
126
- 5DDD58802AA9A8BE00FAC961 /* NumbersViewController.swift */,
127
126
  );
128
127
  path = Controllers;
129
128
  sourceTree = "<group>";
@@ -141,12 +140,21 @@
141
140
  isa = PBXGroup;
142
141
  children = (
143
142
  5DCC50DC2A959DFA00B529A0 /* Assets.xcassets */,
144
- 5DCC50DE2A959DFA00B529A0 /* LaunchScreen.storyboard */,
145
- 5D0D86212A9AA70500A525E9 /* Main.storyboard */,
143
+ 5DCC50E12A959DFA00B529A0 /* Info.plist */,
144
+ 5DCC50E92A95A19600B529A0 /* path-configuration.json */,
146
145
  );
147
146
  path = Resources;
148
147
  sourceTree = "<group>";
149
148
  };
149
+ 5DD38FFC2AD659BC00EA0059 /* Extensions */ = {
150
+ isa = PBXGroup;
151
+ children = (
152
+ 5D0735D32AC514F800AC547A /* UIViewController+Toast.swift */,
153
+ 5D8AB2FD2ABC119900C6A82F /* WKWebViewConfiguration+App.swift */,
154
+ );
155
+ path = Extensions;
156
+ sourceTree = "<group>";
157
+ };
150
158
  /* End PBXGroup section */
151
159
 
152
160
  /* Begin PBXNativeTarget section */
@@ -388,7 +396,7 @@
388
396
  CODE_SIGN_STYLE = Automatic;
389
397
  CURRENT_PROJECT_VERSION = 1;
390
398
  GENERATE_INFOPLIST_FILE = YES;
391
- INFOPLIST_FILE = <%= name %>/Configuration/Info.plist;
399
+ INFOPLIST_FILE = <%= name %>/Resources/Info.plist;
392
400
  INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
393
401
  INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
394
402
  INFOPLIST_KEY_UIMainStoryboardFile = Main;
@@ -415,7 +423,7 @@
415
423
  CODE_SIGN_STYLE = Automatic;
416
424
  CURRENT_PROJECT_VERSION = 1;
417
425
  GENERATE_INFOPLIST_FILE = YES;
418
- INFOPLIST_FILE = <%= name %>/Configuration/Info.plist;
426
+ INFOPLIST_FILE = <%= name %>/Resources/Info.plist;
419
427
  INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
420
428
  INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
421
429
  INFOPLIST_KEY_UIMainStoryboardFile = Main;
@@ -471,7 +479,7 @@
471
479
  repositoryURL = "https://github.com/hotwired/turbo-ios";
472
480
  requirement = {
473
481
  kind = exactVersion;
474
- version = 7.0.0;
482
+ version = 7.0.1;
475
483
  };
476
484
  };
477
485
  /* End XCRemoteSwiftPackageReference section */
@@ -1,3 +1,3 @@
1
1
  module TurboNativeInitializer
2
- VERSION = "0.0.16"
2
+ VERSION = "0.0.18"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: turbo-native-initializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.16
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nixon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-08 00:00:00.000000000 Z
11
+ date: 2023-10-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -44,6 +44,7 @@ files:
44
44
  - lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/base/NavDestination.kt.tt
45
45
  - lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/native/NativeFragment.kt.tt
46
46
  - lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/native/NumbersFragment.kt.tt
47
+ - lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebBottomSheetFragment.kt.tt
47
48
  - lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebFragment.kt.tt
48
49
  - lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebHomeFragment.kt.tt
49
50
  - lib/turbo_native_initializer/templates/android_stack/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebModalFragment.kt.tt
@@ -99,6 +100,7 @@ files:
99
100
  - lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/base/NavDestination.kt.tt
100
101
  - lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/native/NativeFragment.kt.tt
101
102
  - lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/native/NumbersFragment.kt.tt
103
+ - lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebBottomSheetFragment.kt.tt
102
104
  - lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebFragment.kt.tt
103
105
  - lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebHomeFragment.kt.tt
104
106
  - lib/turbo_native_initializer/templates/android_tabs/app/src/main/java/dev/hotwire/turbo/turbonativeproject/features/web/WebModalFragment.kt.tt
@@ -160,58 +162,58 @@ files:
160
162
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata
161
163
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
162
164
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
163
- - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Configuration/Info.plist
164
- - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Configuration/path-configuration.json
165
165
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/ErrorPresenter.swift
166
166
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/NumbersViewController.swift
167
167
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/TurboNavigationController.swift
168
168
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/TurboWebViewController.swift
169
- - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/UIViewController+Toast.swift
170
- - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Controllers/WKWebViewConfiguration+App.swift
171
169
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Delegates/AppDelegate.swift
172
- - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Delegates/SceneDelegate.swift.tt
170
+ - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Delegates/SceneDelegate.swift
171
+ - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Extensions/UIViewController+Toast.swift
172
+ - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Extensions/WKWebViewConfiguration+App.swift
173
173
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/AccentColor.colorset/Contents.json
174
174
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
175
175
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/AppIcon.appiconset/turbo.png
176
176
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/Contents.json
177
177
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/SplashIcon.imageset/Contents.json
178
178
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Assets.xcassets/SplashIcon.imageset/turbo.png
179
- - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Base.lproj/LaunchScreen.storyboard
180
- - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Base.lproj/Main.storyboard
179
+ - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/Info.plist
180
+ - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Resources/path-configuration.json
181
181
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Strada/BridgeComponent+App.swift
182
182
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Strada/FlashMessageComponent.swift
183
183
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Strada/FormComponent.swift
184
184
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Strada/MenuComponent.swift
185
185
  - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Strada/NavButtonComponent.swift
186
- - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/TurboNativeProject.swift.tt
186
+ - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/TurboNativeProject.swift
187
+ - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Views/Base.lproj/LaunchScreen.storyboard
188
+ - lib/turbo_native_initializer/templates/ios_stack/TurboNativeProject/Views/Base.lproj/Main.storyboard
187
189
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.pbxproj.tt
188
190
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata
189
191
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
190
192
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
191
- - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Configuration/Info.plist
192
- - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Configuration/path-configuration.json
193
193
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/ErrorPresenter.swift
194
194
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/NumbersViewController.swift
195
195
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/TurboNavigationController.swift
196
196
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/TurboWebViewController.swift
197
- - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/UIViewController+Toast.swift
198
- - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Controllers/WKWebViewConfiguration+App.swift
199
197
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Delegates/AppDelegate.swift
200
- - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Delegates/SceneDelegate.swift.tt
198
+ - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Delegates/SceneDelegate.swift
199
+ - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Extensions/UIViewController+Toast.swift
200
+ - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Extensions/WKWebViewConfiguration+App.swift
201
201
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/AccentColor.colorset/Contents.json
202
202
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json
203
203
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/AppIcon.appiconset/turbo.png
204
204
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/Contents.json
205
205
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/SplashIcon.imageset/Contents.json
206
206
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Assets.xcassets/SplashIcon.imageset/turbo.png
207
- - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Base.lproj/LaunchScreen.storyboard
208
- - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Base.lproj/Main.storyboard
207
+ - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/Info.plist
208
+ - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Resources/path-configuration.json
209
209
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Strada/BridgeComponent+App.swift
210
210
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Strada/FlashMessageComponent.swift
211
211
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Strada/FormComponent.swift
212
212
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Strada/MenuComponent.swift
213
213
  - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Strada/NavButtonComponent.swift
214
- - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/TurboNativeProject.swift.tt
214
+ - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/TurboNativeProject.swift
215
+ - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Views/Base.lproj/LaunchScreen.storyboard
216
+ - lib/turbo_native_initializer/templates/ios_tabs/TurboNativeProject/Views/Base.lproj/Main.storyboard
215
217
  - lib/turbo_native_initializer/version.rb
216
218
  homepage: https://github.com/lazaronixon/turbo-native-initializer
217
219
  licenses:
@@ -235,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
235
237
  - !ruby/object:Gem::Version
236
238
  version: '0'
237
239
  requirements: []
238
- rubygems_version: 3.4.19
240
+ rubygems_version: 3.4.20
239
241
  signing_key:
240
242
  specification_version: 4
241
243
  summary: A turbo native project generator