Path: blob/a-new-beginning/Folium-macOS/ContentView.swift
2 views
//
// ContentView.swift
// Folium-macOS
//
// Created by Jarrod Norwell on 11/12/2025.
//
import Mango
import SwiftUI
import UniformTypeIdentifiers
struct File: Codable, Hashable {
var url: URL
}
struct SNESView: View {
@Binding var file: File
var mango: Mango = Mango()
@State var nsImage: NSImage = NSImage()
var body: some View {
Image(nsImage: nsImage)
.onAppear {
Task {
guard await mango.insert(file.url) else {
return
}
await mango.framebuffer { buffer in
guard let cgImage = CGImage.snes(buffer, 512, 480) else {
return
}
nsImage = NSImage(cgImage: cgImage, size: CGSize(width: 512, height: 480))
}
await mango.start()
}
}
}
}
struct ContentView: View {
@Environment(\.openWindow) var openWindow
var body: some View {
GeometryReader { proxy in
ZStack {
Color.clear
.dropDestination(for: URL.self) { items, session in
guard let item: URL = items.first else {
return false
}
openWindow(id: "snes-window", value: File(url: item))
return true
}
}
.frame(width: proxy.size.width, height: proxy.size.height)
}
}
}
#Preview {
ContentView()
}