import AppKit import Quartz /// Drives the native Quick Look panel for one URL at a time. Single-click a row /// (or hit Space) to preview; the panel floats and closes itself like Finder. final class QuickLook: NSObject, QLPreviewPanelDataSource, QLPreviewPanelDelegate { static let shared = QuickLook() private var url: URL? func preview(_ url: URL) { self.url = url guard let panel = QLPreviewPanel.shared() else { return } if panel.isVisible { panel.reloadData() } else { panel.dataSource = self panel.delegate = self panel.makeKeyAndOrderFront(nil) } } func numberOfPreviewItems(in panel: QLPreviewPanel) -> Int { url == nil ? 0 : 1 } func previewPanel(_ panel: QLPreviewPanel, previewItemAt index: Int) -> QLPreviewItem { (url as NSURL?) ?? NSURL() } }