feat: add Command-number launch hints and Finder icon
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
import Foundation
|
||||
|
||||
/// Monotonic timestamps are supplied by the window; tests never wait on a real clock.
|
||||
public struct CommandNumberShortcuts: Sendable {
|
||||
private var heldSince: TimeInterval?
|
||||
public private(set) var isVisible = false
|
||||
|
||||
public init() {}
|
||||
|
||||
/// Returns true only when a fresh, eligible Command-only hold begins.
|
||||
public mutating func update(commandOnly: Bool, eligible: Bool, at time: TimeInterval) -> Bool {
|
||||
guard commandOnly && eligible else { reset(); return false }
|
||||
guard heldSince == nil else { return false }
|
||||
heldSince = time
|
||||
return true
|
||||
}
|
||||
|
||||
public mutating func reveal(at time: TimeInterval) -> Bool {
|
||||
guard let heldSince, time - heldSince >= 1 else { return false }
|
||||
isVisible = true
|
||||
return true
|
||||
}
|
||||
|
||||
public func index(for key: String) -> Int? {
|
||||
guard isVisible, key.utf8.count == 1, let digit = key.utf8.first,
|
||||
(49...57).contains(digit) else { return nil }
|
||||
return Int(digit - 49)
|
||||
}
|
||||
|
||||
public mutating func reset() {
|
||||
heldSince = nil
|
||||
isVisible = false
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user