|
|
@@ -0,0 +1,52 @@
|
|
|
+//
|
|
|
+// URLHintMappingView.swift
|
|
|
+// Todos
|
|
|
+//
|
|
|
+// Created by Sam Jaffe on 3/2/26.
|
|
|
+//
|
|
|
+
|
|
|
+import SwiftUI
|
|
|
+
|
|
|
+struct URLHintMappingView: View {
|
|
|
+ @AppStorage(UserDefaultsKeys.UrlHints) var allHints = URLHintArray()
|
|
|
+ @State var active = URLHint()
|
|
|
+
|
|
|
+ var body: some View {
|
|
|
+ Text("Custom rules to expand a tag into a URL")
|
|
|
+ Table(of: Binding<URLHint>.self) {
|
|
|
+ TableColumn("Tag Prefix") { hint in
|
|
|
+ TextField("", text: hint.prefix)
|
|
|
+ .onSubmit(addHint)
|
|
|
+ }
|
|
|
+ TableColumn("URL Expansion") { hint in
|
|
|
+ TextField("", text: hint.replacement)
|
|
|
+ .onSubmit(addHint)
|
|
|
+ }
|
|
|
+ TableColumn("") { hint in
|
|
|
+ if hint.id != active.id {
|
|
|
+ Button() {
|
|
|
+ allHints.removeAll(where: { $0.id == hint.id })
|
|
|
+ } label: {
|
|
|
+ Label("", systemImage: "trash")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }.width(max: 20)
|
|
|
+ } rows: {
|
|
|
+ ForEach($allHints) { hint in
|
|
|
+ TableRow(hint)
|
|
|
+ }
|
|
|
+ TableRow($active)
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private func addHint() {
|
|
|
+ if active.valid {
|
|
|
+ allHints.append(active)
|
|
|
+ active = URLHint()
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+#Preview {
|
|
|
+ URLHintMappingView()
|
|
|
+}
|