import AppKit
import Foundation

// Extension for xcode specifically
public extension AXUIElement {
    private static let XcodeWorkspaceWindowIdentifier = "Xcode.WorkspaceWindow"
    
    var isSourceEditor: Bool {
        description == "Source Editor"
    }
    
    var isEditorArea: Bool {
        description == "editor area"
    }
    
    var isXcodeWorkspaceWindow: Bool {
        self.description == Self.XcodeWorkspaceWindowIdentifier || self.identifier == Self.XcodeWorkspaceWindowIdentifier
    }
    
    var isXcodeOpenQuickly: Bool {
        ["open_quickly"].contains(self.identifier)
    }
    
    var isXcodeAlert: Bool {
        ["alert"].contains(self.label)
    }
    
    var isXcodeMenuBar: Bool {
        ["menu bar", "menu bar item"].contains(self.description)
    }
    
    var isNavigator: Bool {
        description == "navigator"
    }
    
    var isDescendantOfNavigator: Bool {
        self.firstParent(where: \.isNavigator) != nil
    }
    
    var isNonNavigatorSourceEditor: Bool {
        isSourceEditor && !isDescendantOfNavigator
    }
}
