#if os(macOS) import AppKit import SwiftUI public struct DocsEditorCommands: Commands { @FocusedValue(\.docsEditor) private var editor public init() {} public var body: some Commands { CommandGroup(replacing: .printItem) {} CommandMenu(docsMacString("Format")) { Group { Button(docsMacString("Bold")) { editor?.actions?.perform("bold") }.keyboardShortcut("b") Button(docsMacString("Italic")) { editor?.actions?.perform("italic") }.keyboardShortcut("i") Button(docsMacString("Inline code")) { editor?.actions?.perform("code") } Menu(docsMacString("Paragraph style")) { Button(docsMacString("Normal")) { editor?.actions?.block("paragraph") } ForEach(1...6, id: \.self) { level in Button(String(format: docsMacString("Heading %d"), level)) { editor?.actions?.block("heading", level: level) } } Button(docsMacString("Bullet list")) { editor?.actions?.block("bullet_list") } Button(docsMacString("Numbered list")) { editor?.actions?.block("ordered_list") } Button(docsMacString("Block quote")) { editor?.actions?.block("blockquote") } } Menu(docsMacString("Font")) { ForEach(["sans", "serif", "mono"], id: \.self) { family in Button(String(localized: String.LocalizationValue("docs.editor.toolbar.font." + family), bundle: DocsResources.bundle)) { editor?.actions?.format("font_" + family, exclusive: ["font_sans", "font_serif", "font_mono"]) } } } Menu(docsMacString("Size")) { ForEach([8, 9, 10, 11, 12, 14, 18, 24, 36, 48, 72], id: \.self) { size in Button(size.formatted()) { editor?.actions?.format("size_\(size)", exclusive: [8,9,10,11,12,14,18,24,36,48,72].map { "size_\($0)" } + ["size_sm", "size_lg", "size_xl"]) } } } Menu(docsMacString("Alignment")) { ForEach(["left", "center", "right"], id: \.self) { value in Button(String(localized: String.LocalizationValue("docs.editor.toolbar.align." + value), bundle: DocsResources.bundle)) { editor?.actions?.blockAttribute("align", value: value == "left" ? nil : value) } } } Button(docsMacString("Indent")) { editor?.actions?.perform("indent") } Button(docsMacString("Outdent")) { editor?.actions?.perform("outdent") } Button(docsMacString("Clear formatting")) { editor?.actions?.perform("clear-format") } }.disabled(editor?.actions?.isEnabled != true || !(NSApp.keyWindow?.firstResponder is DocsTextView)) } CommandGroup(after: .toolbar) { Menu(docsMacString("Zoom")) { ForEach([0.5, 0.75, 1.0, 1.25, 1.5, 2.0], id: \.self) { value in Button { editor?.zoom.wrappedValue = value } label: { Text(value, format: .percent) } } }.disabled(editor == nil) Button(docsMacString("Actual size")) { editor?.zoom.wrappedValue = 1 }.keyboardShortcut("0").disabled(editor == nil) Button(docsMacString("Document inspector")) { editor?.inspecting.wrappedValue.toggle() }.disabled(editor == nil) if let editor { Toggle(docsMacString("Pages"), isOn: editor.paged) } } } } #endif