Skip to content

Commit ca35a5d

Browse files
Workspace Panel View (#1960)
* Abstracted shared logic from NavigatorAreaView, InspectorAreaView, and UtilityAreaView into reusable view called WorkspacePanelView. * Updated to latest
1 parent e760191 commit ca35a5d

File tree

14 files changed

+131
-164
lines changed

14 files changed

+131
-164
lines changed

CodeEdit.xcodeproj/project.pbxproj

+12-8
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@
9494
30CB648D2C12680F00CC8A9E /* LSPService+Events.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30CB648C2C12680F00CC8A9E /* LSPService+Events.swift */; };
9595
30CB64912C16CA8100CC8A9E /* LanguageServerProtocol in Frameworks */ = {isa = PBXBuildFile; productRef = 30CB64902C16CA8100CC8A9E /* LanguageServerProtocol */; };
9696
30CB64942C16CA9100CC8A9E /* LanguageClient in Frameworks */ = {isa = PBXBuildFile; productRef = 30CB64932C16CA9100CC8A9E /* LanguageClient */; };
97-
30E6D0012A6E505200A58B20 /* NavigatorSidebarViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E6D0002A6E505200A58B20 /* NavigatorSidebarViewModel.swift */; };
97+
30E6D0012A6E505200A58B20 /* NavigatorAreaViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30E6D0002A6E505200A58B20 /* NavigatorAreaViewModel.swift */; };
9898
3E0196732A3921AC002648D8 /* codeedit_shell_integration_rc.zsh in Resources */ = {isa = PBXBuildFile; fileRef = 3E0196722A3921AC002648D8 /* codeedit_shell_integration_rc.zsh */; };
9999
3E01967A2A392B45002648D8 /* codeedit_shell_integration.bash in Resources */ = {isa = PBXBuildFile; fileRef = 3E0196792A392B45002648D8 /* codeedit_shell_integration.bash */; };
100100
4A6F0DB52CBA462B00499627 /* ProjectNavigatorMenuActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A6F0DB42CBA462B00499627 /* ProjectNavigatorMenuActions.swift */; };
@@ -524,7 +524,7 @@
524524
B62423302C21EE280096668B /* ThemeModel+CRUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = B624232F2C21EE280096668B /* ThemeModel+CRUD.swift */; };
525525
B628B7932B18369800F9775A /* GitClient+Validate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B628B7922B18369800F9775A /* GitClient+Validate.swift */; };
526526
B628B7B72B223BAD00F9775A /* FindModePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = B628B7B62B223BAD00F9775A /* FindModePicker.swift */; };
527-
B62AEDAA2A1FCBE5009A9F52 /* AreaTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B62AEDA92A1FCBE5009A9F52 /* AreaTabBar.swift */; };
527+
B62AEDAA2A1FCBE5009A9F52 /* WorkspacePanelTabBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = B62AEDA92A1FCBE5009A9F52 /* WorkspacePanelTabBar.swift */; };
528528
B62AEDB32A1FD95B009A9F52 /* UtilityAreaTerminalView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B62AEDB22A1FD95B009A9F52 /* UtilityAreaTerminalView.swift */; };
529529
B62AEDB52A1FE295009A9F52 /* UtilityAreaDebugView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B62AEDB42A1FE295009A9F52 /* UtilityAreaDebugView.swift */; };
530530
B62AEDB82A1FE2DC009A9F52 /* UtilityAreaOutputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B62AEDB72A1FE2DC009A9F52 /* UtilityAreaOutputView.swift */; };
@@ -558,6 +558,7 @@
558558
B66A4E5329C91831004573B4 /* CodeEditCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = B66A4E5229C91831004573B4 /* CodeEditCommands.swift */; };
559559
B66A4E5629C918A0004573B4 /* SceneID.swift in Sources */ = {isa = PBXBuildFile; fileRef = B66A4E5529C918A0004573B4 /* SceneID.swift */; };
560560
B67431CC2C3E45F30047FCA6 /* SourceControlSwitchView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B67431CB2C3E45F30047FCA6 /* SourceControlSwitchView.swift */; };
561+
B67700F92D2A2662004FD61F /* WorkspacePanelView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B67700F82D2A2662004FD61F /* WorkspacePanelView.swift */; };
561562
B67DB0EF2AF3E381002DC647 /* PaneTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = B67DB0EE2AF3E381002DC647 /* PaneTextField.swift */; };
562563
B67DB0F62AFC2A7A002DC647 /* FindNavigatorToolbarBottom.swift in Sources */ = {isa = PBXBuildFile; fileRef = B67DB0F52AFC2A7A002DC647 /* FindNavigatorToolbarBottom.swift */; };
563564
B67DB0F92AFDF638002DC647 /* IconButtonStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = B67DB0F82AFDF638002DC647 /* IconButtonStyle.swift */; };
@@ -789,7 +790,7 @@
789790
30B087F82C0D53080063A882 /* LSPService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LSPService.swift; sourceTree = "<group>"; };
790791
30B087FA2C0D53080063A882 /* LSPUtil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LSPUtil.swift; sourceTree = "<group>"; };
791792
30CB648C2C12680F00CC8A9E /* LSPService+Events.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "LSPService+Events.swift"; sourceTree = "<group>"; };
792-
30E6D0002A6E505200A58B20 /* NavigatorSidebarViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigatorSidebarViewModel.swift; sourceTree = "<group>"; };
793+
30E6D0002A6E505200A58B20 /* NavigatorAreaViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigatorAreaViewModel.swift; sourceTree = "<group>"; };
793794
3E0196722A3921AC002648D8 /* codeedit_shell_integration_rc.zsh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = codeedit_shell_integration_rc.zsh; sourceTree = "<group>"; };
794795
3E0196792A392B45002648D8 /* codeedit_shell_integration.bash */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = codeedit_shell_integration.bash; sourceTree = "<group>"; };
795796
4A6F0DB42CBA462B00499627 /* ProjectNavigatorMenuActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProjectNavigatorMenuActions.swift; sourceTree = "<group>"; };
@@ -1200,7 +1201,7 @@
12001201
B624232F2C21EE280096668B /* ThemeModel+CRUD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ThemeModel+CRUD.swift"; sourceTree = "<group>"; };
12011202
B628B7922B18369800F9775A /* GitClient+Validate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GitClient+Validate.swift"; sourceTree = "<group>"; };
12021203
B628B7B62B223BAD00F9775A /* FindModePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindModePicker.swift; sourceTree = "<group>"; };
1203-
B62AEDA92A1FCBE5009A9F52 /* AreaTabBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AreaTabBar.swift; sourceTree = "<group>"; };
1204+
B62AEDA92A1FCBE5009A9F52 /* WorkspacePanelTabBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkspacePanelTabBar.swift; sourceTree = "<group>"; };
12041205
B62AEDB22A1FD95B009A9F52 /* UtilityAreaTerminalView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilityAreaTerminalView.swift; sourceTree = "<group>"; };
12051206
B62AEDB42A1FE295009A9F52 /* UtilityAreaDebugView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UtilityAreaDebugView.swift; sourceTree = "<group>"; };
12061207
B62AEDB72A1FE2DC009A9F52 /* UtilityAreaOutputView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UtilityAreaOutputView.swift; sourceTree = "<group>"; };
@@ -1239,6 +1240,7 @@
12391240
B66A4E5229C91831004573B4 /* CodeEditCommands.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CodeEditCommands.swift; sourceTree = "<group>"; };
12401241
B66A4E5529C918A0004573B4 /* SceneID.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SceneID.swift; sourceTree = "<group>"; };
12411242
B67431CB2C3E45F30047FCA6 /* SourceControlSwitchView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SourceControlSwitchView.swift; sourceTree = "<group>"; };
1243+
B67700F82D2A2662004FD61F /* WorkspacePanelView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WorkspacePanelView.swift; sourceTree = "<group>"; };
12421244
B67DB0EE2AF3E381002DC647 /* PaneTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PaneTextField.swift; sourceTree = "<group>"; };
12431245
B67DB0F52AFC2A7A002DC647 /* FindNavigatorToolbarBottom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FindNavigatorToolbarBottom.swift; sourceTree = "<group>"; };
12441246
B67DB0F82AFDF638002DC647 /* IconButtonStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IconButtonStyle.swift; sourceTree = "<group>"; };
@@ -1572,7 +1574,7 @@
15721574
307AC4CB2ABABD9800163376 /* ViewModels */ = {
15731575
isa = PBXGroup;
15741576
children = (
1575-
30E6D0002A6E505200A58B20 /* NavigatorSidebarViewModel.swift */,
1577+
30E6D0002A6E505200A58B20 /* NavigatorAreaViewModel.swift */,
15761578
);
15771579
path = ViewModels;
15781580
sourceTree = "<group>";
@@ -2087,8 +2089,9 @@
20872089
587B9D8629300ABD00AC7927 /* Views */ = {
20882090
isa = PBXGroup;
20892091
children = (
2092+
B67700F82D2A2662004FD61F /* WorkspacePanelView.swift */,
2093+
B62AEDA92A1FCBE5009A9F52 /* WorkspacePanelTabBar.swift */,
20902094
30AB4EC12BF7253200ED4431 /* KeyValueTable.swift */,
2091-
B62AEDA92A1FCBE5009A9F52 /* AreaTabBar.swift */,
20922095
B65B10EB2B073913002852CF /* CEContentUnavailableView.swift */,
20932096
B65B10FA2B08B054002852CF /* Divided.swift */,
20942097
587B9D8B29300ABD00AC7927 /* EffectView.swift */,
@@ -4322,6 +4325,7 @@
43224325
77EF6C052C57DE4B00984B69 /* URL+ResouceValues.swift in Sources */,
43234326
B640A9A129E2188F00715F20 /* View+NavigationBarBackButtonVisible.swift in Sources */,
43244327
587B9E7929301D8F00AC7927 /* GitHubIssueRouter.swift in Sources */,
4328+
B67700F92D2A2662004FD61F /* WorkspacePanelView.swift in Sources */,
43254329
587B9E8029301D8F00AC7927 /* GitHubConfiguration.swift in Sources */,
43264330
58822524292C280D00E83CDE /* StatusBarView.swift in Sources */,
43274331
581550D429FBD37D00684881 /* ProjectNavigatorToolbarBottom.swift in Sources */,
@@ -4377,7 +4381,7 @@
43774381
4A6F0DB52CBA462B00499627 /* ProjectNavigatorMenuActions.swift in Sources */,
43784382
58F2EB05292FB2B0004A9BDE /* Settings.swift in Sources */,
43794383
6CBD1BC62978DE53006639D5 /* Font+Caption3.swift in Sources */,
4380-
30E6D0012A6E505200A58B20 /* NavigatorSidebarViewModel.swift in Sources */,
4384+
30E6D0012A6E505200A58B20 /* NavigatorAreaViewModel.swift in Sources */,
43814385
6CD26C7B2C8EA8A500ADBA38 /* LSPCache+Data.swift in Sources */,
43824386
B6E41C9429DEAE260088F9F4 /* SourceControlAccount.swift in Sources */,
43834387
2806E9022979588B000040F4 /* Contributor.swift in Sources */,
@@ -4467,7 +4471,7 @@
44674471
58D01C9A293167DC00C5B6B4 /* CodeEditKeychain.swift in Sources */,
44684472
6CB94CFE2C9F1C9A00E8651C /* TextView+LSPRange.swift in Sources */,
44694473
B6966A2E2C3056AD00259C2D /* SourceControlCommands.swift in Sources */,
4470-
B62AEDAA2A1FCBE5009A9F52 /* AreaTabBar.swift in Sources */,
4474+
B62AEDAA2A1FCBE5009A9F52 /* WorkspacePanelTabBar.swift in Sources */,
44714475
20D839AB280DEB2900B27357 /* NoSelectionInspectorView.swift in Sources */,
44724476
30B0880F2C0D53080063A882 /* LanguageServer+SelectionRange.swift in Sources */,
44734477
30B0880C2C0D53080063A882 /* LanguageServer+InlayHint.swift in Sources */,

CodeEdit/Features/CodeEditUI/Views/AreaTabBar.swift renamed to CodeEdit/Features/CodeEditUI/Views/WorkspacePanelTabBar.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
//
2-
// AreaTabBar.swift
2+
// WorkspacePanelTabBar.swift
33
// CodeEdit
44
//
55
// Created by Austin Condiff on 5/25/23.
66
//
77

88
import SwiftUI
99

10-
protocol AreaTab: View, Identifiable, Hashable {
10+
protocol WorkspacePanelTab: View, Identifiable, Hashable {
1111
var title: String { get }
1212
var systemImage: String { get }
1313
}
1414

15-
struct AreaTabBar<Tab: AreaTab>: View {
15+
struct WorkspacePanelTabBar<Tab: WorkspacePanelTab>: View {
1616
@Binding var items: [Tab]
1717
@Binding var selection: Tab?
1818

@@ -113,7 +113,7 @@ struct AreaTabBar<Tab: AreaTab>: View {
113113
)
114114
)
115115
.focusable(false)
116-
.accessibilityIdentifier("TabAreaTab-\(tab.title)")
116+
.accessibilityIdentifier("WorkspacePanelTab-\(tab.title)")
117117
.accessibilityLabel(tab.title)
118118
}
119119

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
//
2+
// WorkspacePanelView.swift
3+
// CodeEdit
4+
//
5+
// Created by Austin Condiff on 1/4/25.
6+
//
7+
8+
import SwiftUI
9+
10+
struct WorkspacePanelView<Tab: WorkspacePanelTab, ViewModel: ObservableObject>: View {
11+
@ObservedObject var viewModel: ViewModel
12+
@Binding var selectedTab: Tab?
13+
@Binding var tabItems: [Tab]
14+
15+
@Environment(\.colorScheme)
16+
private var colorScheme
17+
18+
var sidebarPosition: SettingsData.SidebarTabBarPosition
19+
var darkDivider: Bool
20+
21+
init(
22+
viewModel: ViewModel,
23+
selectedTab: Binding<Tab?>,
24+
tabItems: Binding<[Tab]>,
25+
sidebarPosition: SettingsData.SidebarTabBarPosition,
26+
darkDivider: Bool = false
27+
) {
28+
self.viewModel = viewModel
29+
self._selectedTab = selectedTab
30+
self._tabItems = tabItems
31+
self.sidebarPosition = sidebarPosition
32+
self.darkDivider = darkDivider
33+
}
34+
35+
var body: some View {
36+
VStack(spacing: 0) {
37+
if let selection = selectedTab {
38+
selection
39+
} else {
40+
CEContentUnavailableView("No Selection")
41+
}
42+
}
43+
.safeAreaInset(edge: .leading, spacing: 0) {
44+
if sidebarPosition == .side {
45+
HStack(spacing: 0) {
46+
WorkspacePanelTabBar(items: $tabItems, selection: $selectedTab, position: sidebarPosition)
47+
Divider()
48+
.overlay(Color(nsColor: darkDivider && colorScheme == .dark ? .black : .clear))
49+
}
50+
}
51+
}
52+
.safeAreaInset(edge: .top, spacing: 0) {
53+
if sidebarPosition == .top {
54+
VStack(spacing: 0) {
55+
Divider()
56+
WorkspacePanelTabBar(items: $tabItems, selection: $selectedTab, position: sidebarPosition)
57+
Divider()
58+
}
59+
} else if !darkDivider {
60+
Divider()
61+
}
62+
}
63+
}
64+
}

CodeEdit/Features/Documents/Controllers/CodeEditSplitViewController.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@ final class CodeEditSplitViewController: NSSplitViewController {
1515
static let minSnapWidth: CGFloat = snapWidth - 10
1616

1717
private weak var workspace: WorkspaceDocument?
18-
private weak var navigatorViewModel: NavigatorSidebarViewModel?
18+
private weak var navigatorViewModel: NavigatorAreaViewModel?
1919
private weak var windowRef: NSWindow?
2020
private unowned var hapticPerformer: NSHapticFeedbackPerformer
2121

2222
// MARK: - Initialization
2323

2424
init(
2525
workspace: WorkspaceDocument,
26-
navigatorViewModel: NavigatorSidebarViewModel,
26+
navigatorViewModel: NavigatorAreaViewModel,
2727
windowRef: NSWindow,
2828
hapticPerformer: NSHapticFeedbackPerformer = NSHapticFeedbackManager.defaultPerformer
2929
) {

CodeEdit/Features/Documents/Controllers/CodeEditWindowController.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
2222
var workspaceSettingsWindow: NSWindow?
2323
var quickOpenPanel: SearchPanel?
2424
var commandPalettePanel: SearchPanel?
25-
var navigatorSidebarViewModel: NavigatorSidebarViewModel?
25+
var navigatorSidebarViewModel: NavigatorAreaViewModel?
2626

2727
internal var cancellables = [AnyCancellable]()
2828

@@ -86,7 +86,7 @@ final class CodeEditWindowController: NSWindowController, NSToolbarDelegate, Obs
8686
return nil
8787
}
8888

89-
let navigatorModel = NavigatorSidebarViewModel()
89+
let navigatorModel = NavigatorAreaViewModel()
9090
navigatorSidebarViewModel = navigatorModel
9191
self.listenToDocumentEdited(workspace: workspace)
9292
return CodeEditSplitViewController(

CodeEdit/Features/InspectorArea/Models/InspectorTab.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import SwiftUI
99
import CodeEditKit
1010
import ExtensionFoundation
1111

12-
enum InspectorTab: AreaTab {
12+
enum InspectorTab: WorkspacePanelTab {
1313
case file
1414
case gitHistory
1515
case uiExtension(endpoint: AppExtensionIdentity, data: ResolvedSidebar.SidebarStore)

CodeEdit/Features/InspectorArea/Views/InspectorAreaView.swift

+16-59
Original file line numberDiff line numberDiff line change
@@ -9,82 +9,39 @@ import SwiftUI
99

1010
struct InspectorAreaView: View {
1111
@EnvironmentObject private var workspace: WorkspaceDocument
12+
@EnvironmentObject private var editorManager: EditorManager
1213
@ObservedObject private var extensionManager = ExtensionManager.shared
1314
@ObservedObject public var viewModel: InspectorAreaViewModel
1415

15-
@EnvironmentObject private var editorManager: EditorManager
16-
17-
@AppSettings(\.sourceControl.general.sourceControlIsEnabled)
18-
private var sourceControlIsEnabled: Bool
19-
2016
@AppSettings(\.general.inspectorTabBarPosition)
2117
var sidebarPosition: SettingsData.SidebarTabBarPosition
2218

23-
@State private var selection: InspectorTab? = .file
24-
2519
init(viewModel: InspectorAreaViewModel) {
2620
self.viewModel = viewModel
27-
updateTabItems()
28-
}
29-
30-
func getExtension(_ id: String) -> ExtensionInfo? {
31-
return extensionManager.extensions.first(
32-
where: { $0.endpoint.bundleIdentifier == id }
33-
)
34-
}
35-
36-
var body: some View {
37-
VStack {
38-
if let selection {
39-
selection
40-
} else {
41-
NoSelectionInspectorView()
42-
}
43-
}
44-
.safeAreaInset(edge: .trailing, spacing: 0) {
45-
if sidebarPosition == .side {
46-
HStack(spacing: 0) {
47-
Divider()
48-
AreaTabBar(items: $viewModel.tabItems, selection: $selection, position: sidebarPosition)
49-
}
50-
}
51-
}
52-
.safeAreaInset(edge: .top, spacing: 0) {
53-
if sidebarPosition == .top {
54-
VStack(spacing: 0) {
55-
Divider()
56-
AreaTabBar(items: $viewModel.tabItems, selection: $selection, position: sidebarPosition)
57-
Divider()
58-
}
59-
} else {
60-
Divider()
61-
}
62-
}
63-
.formStyle(.grouped)
64-
.accessibilityElement(children: .contain)
65-
.accessibilityLabel("inspector")
66-
.onChange(of: sourceControlIsEnabled) { _ in
67-
updateTabItems()
68-
}
69-
}
7021

71-
private func updateTabItems() {
72-
viewModel.tabItems = [.file] +
73-
(sourceControlIsEnabled ? [.gitHistory] : []) +
22+
viewModel.tabItems = [.file, .gitHistory] +
7423
extensionManager
7524
.extensions
76-
.flatMap { ext in
25+
.map { ext in
7726
ext.availableFeatures.compactMap {
7827
if case .sidebarItem(let data) = $0, data.kind == .inspector {
7928
return InspectorTab.uiExtension(endpoint: ext.endpoint, data: data)
8029
}
8130
return nil
8231
}
8332
}
84-
if let selectedTab = selection,
85-
!viewModel.tabItems.isEmpty &&
86-
!viewModel.tabItems.contains(selectedTab) {
87-
selection = viewModel.tabItems[0]
88-
}
33+
.joined()
34+
}
35+
36+
var body: some View {
37+
WorkspacePanelView(
38+
viewModel: viewModel,
39+
selectedTab: $viewModel.selectedTab,
40+
tabItems: $viewModel.tabItems,
41+
sidebarPosition: sidebarPosition
42+
)
43+
.formStyle(.grouped)
44+
.accessibilityElement(children: .contain)
45+
.accessibilityLabel("inspector")
8946
}
9047
}

CodeEdit/Features/NavigatorArea/Models/NavigatorTab.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import SwiftUI
99
import CodeEditKit
1010
import ExtensionFoundation
1111

12-
enum NavigatorTab: AreaTab {
12+
enum NavigatorTab: WorkspacePanelTab {
1313
case project
1414
case sourceControl
1515
case search

CodeEdit/Features/NavigatorArea/ViewModels/NavigatorSidebarViewModel.swift renamed to CodeEdit/Features/NavigatorArea/ViewModels/NavigatorAreaViewModel.swift

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
//
2-
// NavigatorSidebarViewModel.swift
2+
// NavigatorAreaViewModel.swift
33
// CodeEdit
44
//
55
// Created by Abe Malla on 7/23/23.
66
//
77

88
import Foundation
99

10-
class NavigatorSidebarViewModel: ObservableObject {
10+
class NavigatorAreaViewModel: ObservableObject {
1111
@Published var selectedTab: NavigatorTab? = .project
1212
/// The tab bar items in the Navigator
1313
@Published var tabItems: [NavigatorTab] = []

0 commit comments

Comments
 (0)