turbo-native-initializer 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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