├── SidebarToolbar
├── Assets.xcassets
│ ├── Contents.json
│ ├── AccentColor.colorset
│ │ └── Contents.json
│ └── AppIcon.appiconset
│ │ └── Contents.json
├── SidebarToolbar.entitlements
├── AppDelegate.swift
├── Base.lproj
│ └── LaunchScreen.storyboard
├── Info.plist
└── SceneDelegate.swift
├── README.md
└── SidebarToolbar.xcodeproj
├── project.xcworkspace
├── contents.xcworkspacedata
├── xcuserdata
│ └── steven.xcuserdatad
│ │ └── UserInterfaceState.xcuserstate
└── xcshareddata
│ └── IDEWorkspaceChecks.plist
├── xcuserdata
└── steven.xcuserdatad
│ └── xcschemes
│ └── xcschememanagement.plist
└── project.pbxproj
/SidebarToolbar/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CatalystSidebarToolbar
2 | Simple sidebar / NSToolbar example for Catalyst
3 |
4 |
5 | 
6 |
--------------------------------------------------------------------------------
/SidebarToolbar.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/SidebarToolbar/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/SidebarToolbar.xcodeproj/project.xcworkspace/xcuserdata/steven.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/steventroughtonsmith/CatalystSidebarToolbar/HEAD/SidebarToolbar.xcodeproj/project.xcworkspace/xcuserdata/steven.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/SidebarToolbar.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/SidebarToolbar/SidebarToolbar.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.network.client
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/SidebarToolbar.xcodeproj/xcuserdata/steven.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | SidebarToolbar.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/SidebarToolbar/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.swift
3 | // SidebarToolbar
4 | //
5 | // Created by Steven Troughton-Smith on 07/07/2020.
6 | //
7 |
8 | import UIKit
9 |
10 | @UIApplicationMain
11 | class AppDelegate: UIResponder, UIApplicationDelegate {
12 |
13 |
14 |
15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
16 | // Override point for customization after application launch.
17 | return true
18 | }
19 |
20 | // MARK: UISceneSession Lifecycle
21 |
22 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
23 | // Called when a new scene session is being created.
24 | // Use this method to select a configuration to create the new scene with.
25 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
26 | }
27 |
28 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) {
29 | // Called when the user discards a scene session.
30 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
31 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
32 | }
33 |
34 |
35 | }
36 |
37 |
--------------------------------------------------------------------------------
/SidebarToolbar/Base.lproj/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/SidebarToolbar/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/SidebarToolbar/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | $(DEVELOPMENT_LANGUAGE)
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
17 | CFBundleShortVersionString
18 | 1.0
19 | CFBundleVersion
20 | 1
21 | LSRequiresIPhoneOS
22 |
23 | UIApplicationSceneManifest
24 |
25 | UIApplicationSupportsMultipleScenes
26 |
27 | UISceneConfigurations
28 |
29 | UIWindowSceneSessionRoleApplication
30 |
31 |
32 | UISceneConfigurationName
33 | Default Configuration
34 | UISceneDelegateClassName
35 | $(PRODUCT_MODULE_NAME).SceneDelegate
36 |
37 |
38 |
39 |
40 | UIApplicationSupportsIndirectInputEvents
41 |
42 | UILaunchStoryboardName
43 | LaunchScreen
44 | UIRequiredDeviceCapabilities
45 |
46 | armv7
47 |
48 | UISupportedInterfaceOrientations
49 |
50 | UIInterfaceOrientationPortrait
51 | UIInterfaceOrientationLandscapeLeft
52 | UIInterfaceOrientationLandscapeRight
53 |
54 | UISupportedInterfaceOrientations~ipad
55 |
56 | UIInterfaceOrientationPortrait
57 | UIInterfaceOrientationPortraitUpsideDown
58 | UIInterfaceOrientationLandscapeLeft
59 | UIInterfaceOrientationLandscapeRight
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/SidebarToolbar/SceneDelegate.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SceneDelegate.swift
3 | // SidebarToolbar
4 | //
5 | // Created by Steven Troughton-Smith on 07/07/2020.
6 | //
7 |
8 | import UIKit
9 |
10 | #if !targetEnvironment(macCatalyst)
11 | @objc protocol NSToolbarDelegate {
12 | }
13 | #endif
14 |
15 | class SceneDelegate: UIResponder, UIWindowSceneDelegate, UITableViewDataSource, NSToolbarDelegate {
16 |
17 | var window: UIWindow?
18 |
19 |
20 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
21 | // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
22 | // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
23 | // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
24 | guard let scene = (scene as? UIWindowScene) else { return }
25 |
26 | window = UIWindow(windowScene: scene)
27 |
28 |
29 | let svc = UISplitViewController()
30 | svc.primaryBackgroundStyle = .sidebar
31 |
32 | let whiteVC = UIViewController()
33 | whiteVC.view.backgroundColor = .white
34 |
35 | let tableVC = UITableViewController(style: .grouped)
36 | tableVC.tableView.dataSource = self
37 | tableVC.tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
38 |
39 | svc.viewControllers = [tableVC, whiteVC]
40 |
41 | window?.rootViewController = svc
42 | window?.makeKeyAndVisible()
43 |
44 | #if targetEnvironment(macCatalyst)
45 | setupNSToolbar()
46 | #endif
47 | }
48 |
49 | #if targetEnvironment(macCatalyst)
50 | func setupNSToolbar()
51 | {
52 | let toolbar = NSToolbar()
53 | toolbar.delegate = self
54 | window?.windowScene?.titlebar?.toolbar = toolbar
55 | window?.windowScene?.titlebar?.titleVisibility = .hidden
56 | }
57 | #endif
58 |
59 | func sceneDidDisconnect(_ scene: UIScene) {
60 | // Called as the scene is being released by the system.
61 | // This occurs shortly after the scene enters the background, or when its session is discarded.
62 | // Release any resources associated with this scene that can be re-created the next time the scene connects.
63 | // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
64 | }
65 |
66 | func sceneDidBecomeActive(_ scene: UIScene) {
67 | // Called when the scene has moved from an inactive state to an active state.
68 | // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
69 | }
70 |
71 | func sceneWillResignActive(_ scene: UIScene) {
72 | // Called when the scene will move from an active state to an inactive state.
73 | // This may occur due to temporary interruptions (ex. an incoming phone call).
74 | }
75 |
76 | func sceneWillEnterForeground(_ scene: UIScene) {
77 | // Called as the scene transitions from the background to the foreground.
78 | // Use this method to undo the changes made on entering the background.
79 | }
80 |
81 | func sceneDidEnterBackground(_ scene: UIScene) {
82 | // Called as the scene transitions from the foreground to the background.
83 | // Use this method to save data, release shared resources, and store enough scene-specific state information
84 | // to restore the scene back to its current state.
85 | }
86 |
87 |
88 | func numberOfSections(in tableView: UITableView) -> Int {
89 | return 1
90 | }
91 |
92 | func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
93 | return 5
94 | }
95 |
96 | func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
97 | let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")!
98 |
99 | cell.textLabel?.text = "Item"
100 | cell.imageView?.image = UIImage(systemName: "folder")
101 | return cell
102 | }
103 |
104 | func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
105 | return "Section"
106 | }
107 |
108 | #if targetEnvironment(macCatalyst)
109 |
110 | func toolbarDefaultItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
111 | return [NSToolbarItem.Identifier("navigationButton"), .flexibleSpace, NSToolbarItem.Identifier("otherButton")]
112 | }
113 |
114 | func toolbarAllowedItemIdentifiers(_ toolbar: NSToolbar) -> [NSToolbarItem.Identifier] {
115 | return [NSToolbarItem.Identifier("navigationButton"), .flexibleSpace, NSToolbarItem.Identifier("otherButton")]
116 | }
117 |
118 | func toolbar(_ toolbar: NSToolbar, itemForItemIdentifier itemIdentifier: NSToolbarItem.Identifier, willBeInsertedIntoToolbar flag: Bool) -> NSToolbarItem? {
119 |
120 | switch itemIdentifier {
121 | case NSToolbarItem.Identifier("navigationButton"):
122 | let barButtonItem = UIBarButtonItem(image: UIImage(systemName: "arrow.left"), style: .plain, target: self, action: #selector(nop(_:)))
123 | return NSToolbarItem(itemIdentifier: itemIdentifier, barButtonItem: barButtonItem)
124 | case NSToolbarItem.Identifier("otherButton"):
125 | let barButtonItem = UIBarButtonItem(image: UIImage(systemName: "plus"), style: .plain, target: self, action: #selector(nop(_:)))
126 | return NSToolbarItem(itemIdentifier: itemIdentifier, barButtonItem: barButtonItem)
127 | default:
128 | break
129 | }
130 |
131 | return NSToolbarItem(itemIdentifier: itemIdentifier)
132 | }
133 |
134 | @objc func nop(_ sender : NSObject)
135 | {
136 |
137 | }
138 |
139 | #endif
140 | }
141 |
142 |
--------------------------------------------------------------------------------
/SidebarToolbar.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 50;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | B0F5D81C24B4BF5500A04DE4 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0F5D81B24B4BF5500A04DE4 /* AppDelegate.swift */; };
11 | B0F5D81E24B4BF5500A04DE4 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0F5D81D24B4BF5500A04DE4 /* SceneDelegate.swift */; };
12 | B0F5D82524B4BF5600A04DE4 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B0F5D82424B4BF5600A04DE4 /* Assets.xcassets */; };
13 | B0F5D82824B4BF5600A04DE4 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B0F5D82624B4BF5600A04DE4 /* LaunchScreen.storyboard */; };
14 | /* End PBXBuildFile section */
15 |
16 | /* Begin PBXFileReference section */
17 | B0F5D81824B4BF5500A04DE4 /* SidebarToolbar.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SidebarToolbar.app; sourceTree = BUILT_PRODUCTS_DIR; };
18 | B0F5D81B24B4BF5500A04DE4 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
19 | B0F5D81D24B4BF5500A04DE4 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; };
20 | B0F5D82424B4BF5600A04DE4 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
21 | B0F5D82724B4BF5600A04DE4 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; };
22 | B0F5D82924B4BF5600A04DE4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
23 | B0F5D82F24B4BF5C00A04DE4 /* SidebarToolbar.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = SidebarToolbar.entitlements; sourceTree = ""; };
24 | /* End PBXFileReference section */
25 |
26 | /* Begin PBXFrameworksBuildPhase section */
27 | B0F5D81524B4BF5500A04DE4 /* Frameworks */ = {
28 | isa = PBXFrameworksBuildPhase;
29 | buildActionMask = 2147483647;
30 | files = (
31 | );
32 | runOnlyForDeploymentPostprocessing = 0;
33 | };
34 | /* End PBXFrameworksBuildPhase section */
35 |
36 | /* Begin PBXGroup section */
37 | B0F5D80F24B4BF5500A04DE4 = {
38 | isa = PBXGroup;
39 | children = (
40 | B0F5D81A24B4BF5500A04DE4 /* SidebarToolbar */,
41 | B0F5D81924B4BF5500A04DE4 /* Products */,
42 | );
43 | sourceTree = "";
44 | };
45 | B0F5D81924B4BF5500A04DE4 /* Products */ = {
46 | isa = PBXGroup;
47 | children = (
48 | B0F5D81824B4BF5500A04DE4 /* SidebarToolbar.app */,
49 | );
50 | name = Products;
51 | sourceTree = "";
52 | };
53 | B0F5D81A24B4BF5500A04DE4 /* SidebarToolbar */ = {
54 | isa = PBXGroup;
55 | children = (
56 | B0F5D82F24B4BF5C00A04DE4 /* SidebarToolbar.entitlements */,
57 | B0F5D81B24B4BF5500A04DE4 /* AppDelegate.swift */,
58 | B0F5D81D24B4BF5500A04DE4 /* SceneDelegate.swift */,
59 | B0F5D82424B4BF5600A04DE4 /* Assets.xcassets */,
60 | B0F5D82624B4BF5600A04DE4 /* LaunchScreen.storyboard */,
61 | B0F5D82924B4BF5600A04DE4 /* Info.plist */,
62 | );
63 | path = SidebarToolbar;
64 | sourceTree = "";
65 | };
66 | /* End PBXGroup section */
67 |
68 | /* Begin PBXNativeTarget section */
69 | B0F5D81724B4BF5500A04DE4 /* SidebarToolbar */ = {
70 | isa = PBXNativeTarget;
71 | buildConfigurationList = B0F5D82C24B4BF5600A04DE4 /* Build configuration list for PBXNativeTarget "SidebarToolbar" */;
72 | buildPhases = (
73 | B0F5D81424B4BF5500A04DE4 /* Sources */,
74 | B0F5D81524B4BF5500A04DE4 /* Frameworks */,
75 | B0F5D81624B4BF5500A04DE4 /* Resources */,
76 | );
77 | buildRules = (
78 | );
79 | dependencies = (
80 | );
81 | name = SidebarToolbar;
82 | productName = SidebarToolbar;
83 | productReference = B0F5D81824B4BF5500A04DE4 /* SidebarToolbar.app */;
84 | productType = "com.apple.product-type.application";
85 | };
86 | /* End PBXNativeTarget section */
87 |
88 | /* Begin PBXProject section */
89 | B0F5D81024B4BF5500A04DE4 /* Project object */ = {
90 | isa = PBXProject;
91 | attributes = {
92 | LastSwiftUpdateCheck = 1200;
93 | LastUpgradeCheck = 1200;
94 | TargetAttributes = {
95 | B0F5D81724B4BF5500A04DE4 = {
96 | CreatedOnToolsVersion = 12.0;
97 | };
98 | };
99 | };
100 | buildConfigurationList = B0F5D81324B4BF5500A04DE4 /* Build configuration list for PBXProject "SidebarToolbar" */;
101 | compatibilityVersion = "Xcode 9.3";
102 | developmentRegion = en;
103 | hasScannedForEncodings = 0;
104 | knownRegions = (
105 | en,
106 | Base,
107 | );
108 | mainGroup = B0F5D80F24B4BF5500A04DE4;
109 | productRefGroup = B0F5D81924B4BF5500A04DE4 /* Products */;
110 | projectDirPath = "";
111 | projectRoot = "";
112 | targets = (
113 | B0F5D81724B4BF5500A04DE4 /* SidebarToolbar */,
114 | );
115 | };
116 | /* End PBXProject section */
117 |
118 | /* Begin PBXResourcesBuildPhase section */
119 | B0F5D81624B4BF5500A04DE4 /* Resources */ = {
120 | isa = PBXResourcesBuildPhase;
121 | buildActionMask = 2147483647;
122 | files = (
123 | B0F5D82824B4BF5600A04DE4 /* LaunchScreen.storyboard in Resources */,
124 | B0F5D82524B4BF5600A04DE4 /* Assets.xcassets in Resources */,
125 | );
126 | runOnlyForDeploymentPostprocessing = 0;
127 | };
128 | /* End PBXResourcesBuildPhase section */
129 |
130 | /* Begin PBXSourcesBuildPhase section */
131 | B0F5D81424B4BF5500A04DE4 /* Sources */ = {
132 | isa = PBXSourcesBuildPhase;
133 | buildActionMask = 2147483647;
134 | files = (
135 | B0F5D81C24B4BF5500A04DE4 /* AppDelegate.swift in Sources */,
136 | B0F5D81E24B4BF5500A04DE4 /* SceneDelegate.swift in Sources */,
137 | );
138 | runOnlyForDeploymentPostprocessing = 0;
139 | };
140 | /* End PBXSourcesBuildPhase section */
141 |
142 | /* Begin PBXVariantGroup section */
143 | B0F5D82624B4BF5600A04DE4 /* LaunchScreen.storyboard */ = {
144 | isa = PBXVariantGroup;
145 | children = (
146 | B0F5D82724B4BF5600A04DE4 /* Base */,
147 | );
148 | name = LaunchScreen.storyboard;
149 | sourceTree = "";
150 | };
151 | /* End PBXVariantGroup section */
152 |
153 | /* Begin XCBuildConfiguration section */
154 | B0F5D82A24B4BF5600A04DE4 /* Debug */ = {
155 | isa = XCBuildConfiguration;
156 | buildSettings = {
157 | ALWAYS_SEARCH_USER_PATHS = NO;
158 | CLANG_ANALYZER_NONNULL = YES;
159 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
160 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
161 | CLANG_CXX_LIBRARY = "libc++";
162 | CLANG_ENABLE_MODULES = YES;
163 | CLANG_ENABLE_OBJC_ARC = YES;
164 | CLANG_ENABLE_OBJC_WEAK = YES;
165 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
166 | CLANG_WARN_BOOL_CONVERSION = YES;
167 | CLANG_WARN_COMMA = YES;
168 | CLANG_WARN_CONSTANT_CONVERSION = YES;
169 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
170 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
171 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
172 | CLANG_WARN_EMPTY_BODY = YES;
173 | CLANG_WARN_ENUM_CONVERSION = YES;
174 | CLANG_WARN_INFINITE_RECURSION = YES;
175 | CLANG_WARN_INT_CONVERSION = YES;
176 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
177 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
178 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
179 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
180 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
181 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
182 | CLANG_WARN_STRICT_PROTOTYPES = YES;
183 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
184 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
185 | CLANG_WARN_UNREACHABLE_CODE = YES;
186 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
187 | COPY_PHASE_STRIP = NO;
188 | DEBUG_INFORMATION_FORMAT = dwarf;
189 | ENABLE_STRICT_OBJC_MSGSEND = YES;
190 | ENABLE_TESTABILITY = YES;
191 | GCC_C_LANGUAGE_STANDARD = gnu11;
192 | GCC_DYNAMIC_NO_PIC = NO;
193 | GCC_NO_COMMON_BLOCKS = YES;
194 | GCC_OPTIMIZATION_LEVEL = 0;
195 | GCC_PREPROCESSOR_DEFINITIONS = (
196 | "DEBUG=1",
197 | "$(inherited)",
198 | );
199 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
200 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
201 | GCC_WARN_UNDECLARED_SELECTOR = YES;
202 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
203 | GCC_WARN_UNUSED_FUNCTION = YES;
204 | GCC_WARN_UNUSED_VARIABLE = YES;
205 | IPHONEOS_DEPLOYMENT_TARGET = 14.0;
206 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
207 | MTL_FAST_MATH = YES;
208 | ONLY_ACTIVE_ARCH = YES;
209 | SDKROOT = iphoneos;
210 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
211 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
212 | };
213 | name = Debug;
214 | };
215 | B0F5D82B24B4BF5600A04DE4 /* Release */ = {
216 | isa = XCBuildConfiguration;
217 | buildSettings = {
218 | ALWAYS_SEARCH_USER_PATHS = NO;
219 | CLANG_ANALYZER_NONNULL = YES;
220 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
221 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
222 | CLANG_CXX_LIBRARY = "libc++";
223 | CLANG_ENABLE_MODULES = YES;
224 | CLANG_ENABLE_OBJC_ARC = YES;
225 | CLANG_ENABLE_OBJC_WEAK = YES;
226 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
227 | CLANG_WARN_BOOL_CONVERSION = YES;
228 | CLANG_WARN_COMMA = YES;
229 | CLANG_WARN_CONSTANT_CONVERSION = YES;
230 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
231 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
232 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
233 | CLANG_WARN_EMPTY_BODY = YES;
234 | CLANG_WARN_ENUM_CONVERSION = YES;
235 | CLANG_WARN_INFINITE_RECURSION = YES;
236 | CLANG_WARN_INT_CONVERSION = YES;
237 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
238 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
239 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
240 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
241 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
242 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
243 | CLANG_WARN_STRICT_PROTOTYPES = YES;
244 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
245 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
246 | CLANG_WARN_UNREACHABLE_CODE = YES;
247 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
248 | COPY_PHASE_STRIP = NO;
249 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
250 | ENABLE_NS_ASSERTIONS = NO;
251 | ENABLE_STRICT_OBJC_MSGSEND = YES;
252 | GCC_C_LANGUAGE_STANDARD = gnu11;
253 | GCC_NO_COMMON_BLOCKS = YES;
254 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
255 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
256 | GCC_WARN_UNDECLARED_SELECTOR = YES;
257 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
258 | GCC_WARN_UNUSED_FUNCTION = YES;
259 | GCC_WARN_UNUSED_VARIABLE = YES;
260 | IPHONEOS_DEPLOYMENT_TARGET = 14.0;
261 | MTL_ENABLE_DEBUG_INFO = NO;
262 | MTL_FAST_MATH = YES;
263 | SDKROOT = iphoneos;
264 | SWIFT_COMPILATION_MODE = wholemodule;
265 | SWIFT_OPTIMIZATION_LEVEL = "-O";
266 | VALIDATE_PRODUCT = YES;
267 | };
268 | name = Release;
269 | };
270 | B0F5D82D24B4BF5600A04DE4 /* Debug */ = {
271 | isa = XCBuildConfiguration;
272 | buildSettings = {
273 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
274 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
275 | CODE_SIGN_ENTITLEMENTS = SidebarToolbar/SidebarToolbar.entitlements;
276 | CODE_SIGN_STYLE = Automatic;
277 | DEVELOPMENT_TEAM = 2ZDN69KUUV;
278 | INFOPLIST_FILE = SidebarToolbar/Info.plist;
279 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
280 | LD_RUNPATH_SEARCH_PATHS = (
281 | "$(inherited)",
282 | "@executable_path/Frameworks",
283 | );
284 | PRODUCT_BUNDLE_IDENTIFIER = com.highcaffeinecontent.SidebarToolbar;
285 | PRODUCT_NAME = "$(TARGET_NAME)";
286 | SUPPORTS_MACCATALYST = YES;
287 | SWIFT_VERSION = 5.0;
288 | TARGETED_DEVICE_FAMILY = "1,2";
289 | };
290 | name = Debug;
291 | };
292 | B0F5D82E24B4BF5600A04DE4 /* Release */ = {
293 | isa = XCBuildConfiguration;
294 | buildSettings = {
295 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
296 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
297 | CODE_SIGN_ENTITLEMENTS = SidebarToolbar/SidebarToolbar.entitlements;
298 | CODE_SIGN_STYLE = Automatic;
299 | DEVELOPMENT_TEAM = 2ZDN69KUUV;
300 | INFOPLIST_FILE = SidebarToolbar/Info.plist;
301 | IPHONEOS_DEPLOYMENT_TARGET = 13.0;
302 | LD_RUNPATH_SEARCH_PATHS = (
303 | "$(inherited)",
304 | "@executable_path/Frameworks",
305 | );
306 | PRODUCT_BUNDLE_IDENTIFIER = com.highcaffeinecontent.SidebarToolbar;
307 | PRODUCT_NAME = "$(TARGET_NAME)";
308 | SUPPORTS_MACCATALYST = YES;
309 | SWIFT_VERSION = 5.0;
310 | TARGETED_DEVICE_FAMILY = "1,2";
311 | };
312 | name = Release;
313 | };
314 | /* End XCBuildConfiguration section */
315 |
316 | /* Begin XCConfigurationList section */
317 | B0F5D81324B4BF5500A04DE4 /* Build configuration list for PBXProject "SidebarToolbar" */ = {
318 | isa = XCConfigurationList;
319 | buildConfigurations = (
320 | B0F5D82A24B4BF5600A04DE4 /* Debug */,
321 | B0F5D82B24B4BF5600A04DE4 /* Release */,
322 | );
323 | defaultConfigurationIsVisible = 0;
324 | defaultConfigurationName = Release;
325 | };
326 | B0F5D82C24B4BF5600A04DE4 /* Build configuration list for PBXNativeTarget "SidebarToolbar" */ = {
327 | isa = XCConfigurationList;
328 | buildConfigurations = (
329 | B0F5D82D24B4BF5600A04DE4 /* Debug */,
330 | B0F5D82E24B4BF5600A04DE4 /* Release */,
331 | );
332 | defaultConfigurationIsVisible = 0;
333 | defaultConfigurationName = Release;
334 | };
335 | /* End XCConfigurationList section */
336 | };
337 | rootObject = B0F5D81024B4BF5500A04DE4 /* Project object */;
338 | }
339 |
--------------------------------------------------------------------------------