Render interactive architecture diagrams natively in the transcript
This commit is contained in:
@@ -44,6 +44,7 @@ enum LeftTab {
|
||||
final class Overlays {
|
||||
var alerts: [OverlayAlert] = []
|
||||
var image: NSImage?
|
||||
var diagram: BoxLayout?
|
||||
var menu: OverlayMenu? {
|
||||
didSet {
|
||||
menuHover = false
|
||||
@@ -64,7 +65,7 @@ final class Overlays {
|
||||
@ObservationIgnored private var ctrl: @MainActor (String) -> Bool = { _ in false }
|
||||
|
||||
var isOpen: Bool {
|
||||
!alerts.isEmpty || image != nil || menu != nil || modal != nil || switcher != nil
|
||||
!alerts.isEmpty || image != nil || diagram != nil || menu != nil || modal != nil || switcher != nil
|
||||
}
|
||||
|
||||
var dialogOpen: Bool {
|
||||
@@ -121,6 +122,8 @@ final class Overlays {
|
||||
answerModal("cancel")
|
||||
} else if image != nil {
|
||||
image = nil
|
||||
} else if diagram != nil {
|
||||
diagram = nil
|
||||
} else if let switcher {
|
||||
switcher.close()
|
||||
} else if menu != nil {
|
||||
@@ -190,7 +193,7 @@ final class Overlays {
|
||||
}
|
||||
return false
|
||||
}
|
||||
if image == nil, !marked, let switcher {
|
||||
if image == nil, diagram == nil, !marked, let switcher {
|
||||
if code == 48 {
|
||||
switcher.inList.toggle()
|
||||
return true
|
||||
@@ -276,6 +279,15 @@ struct OverlayHost: View {
|
||||
overlays.image = nil
|
||||
}
|
||||
}
|
||||
if let diagram = overlays.diagram {
|
||||
Palette.imageBackdrop
|
||||
.onTapGesture {
|
||||
overlays.diagram = nil
|
||||
}
|
||||
DiagramViewer(layout: diagram)
|
||||
.id(diagram.id)
|
||||
.padding(24)
|
||||
}
|
||||
if let menu = overlays.menu {
|
||||
VStack(alignment: .leading, spacing: 0) {
|
||||
ForEach(menu.entries) { entry in
|
||||
|
||||
Reference in New Issue
Block a user