aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Shared/TextView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-10-20 22:15:48 -0700
committerDustin Mierau <dustin@mierau.me>2025-10-20 22:15:48 -0700
commitede41868962ffed386b0da694d14cdfe6cfdb34f (patch)
treef0b91edd1d9c1bbc23de525224b49d6f8e48e815 /Hotline/Shared/TextView.swift
parent77b3ac3c051fc4e8fa126cd21e261be28f4aad1a (diff)
Cleanup and a bunch of work to fix issues syncing, loading, and general bookmark states in TrackerView. Added search field (substring conjunctive filter on server/bookmark names and descriptions).
Diffstat (limited to 'Hotline/Shared/TextView.swift')
-rw-r--r--Hotline/Shared/TextView.swift119
1 files changed, 0 insertions, 119 deletions
diff --git a/Hotline/Shared/TextView.swift b/Hotline/Shared/TextView.swift
deleted file mode 100644
index 47746e2..0000000
--- a/Hotline/Shared/TextView.swift
+++ /dev/null
@@ -1,119 +0,0 @@
-import SwiftUI
-
-struct BetterTextEditor: NSViewRepresentable {
-
- @Environment(\.lineSpacing) private var lineSpacing
-
- @Binding private var text: String
-
- private var customizations: [(NSTextView) -> Void] = []
-
- init(text: Binding<String>) {
- self._text = text
- }
-
- func makeCoordinator() -> Coordinator {
- Coordinator(self)
- }
-
- func makeNSView(context: Context) -> NSScrollView {
- let scrollview = NSTextView.scrollablePlainDocumentContentTextView()
- let textview = scrollview.documentView as! NSTextView
-
- textview.string = self.text
- textview.delegate = context.coordinator
-
-// let p = NSMutableParagraphStyle()
-// p.lineSpacing = self.lineSpacing
-//// textview.defaultParagraphStyle = p
-// textview.typingAttributes = [
-// .paragraphStyle: p
-// ]
-
- textview.isEditable = true
- textview.isRichText = false
- textview.allowsUndo = true
- textview.isFieldEditor = false
- textview.usesAdaptiveColorMappingForDarkAppearance = true
- textview.drawsBackground = false // true
- textview.usesRuler = false
- textview.usesFindBar = false
- textview.isIncrementalSearchingEnabled = false
- textview.isAutomaticQuoteSubstitutionEnabled = false
- textview.isAutomaticDashSubstitutionEnabled = false
- textview.isAutomaticSpellingCorrectionEnabled = true
- textview.isAutomaticDataDetectionEnabled = false
- textview.isAutomaticLinkDetectionEnabled = false
- textview.usesInspectorBar = false
- textview.usesFontPanel = false
- textview.importsGraphics = false
- textview.allowsImageEditing = false
- textview.displaysLinkToolTips = true
- textview.backgroundColor = NSColor.textBackgroundColor
- textview.textContainerInset = NSSize(width: 16, height: 16)
- textview.isContinuousSpellCheckingEnabled = true
- textview.setSelectedRange(NSMakeRange(0, 0))
- self.customizations.forEach { $0(textview) }
-
- scrollview.scrollerStyle = .overlay
-
- return scrollview
- }
-
- func updateNSView(_ nsView: NSScrollView, context: Context) {
- let textview = nsView.documentView as! NSTextView
-
- if textview.string != text {
- textview.string = text
- }
-
- self.customizations.forEach { $0(textview) }
- }
-
- func betterEditorFont(_ font: NSFont) -> Self {
- self.customized { $0.font = font }
- }
-
- func betterEditorParagraphStyle(_ paragraphStyle: NSParagraphStyle) -> Self {
- self.customized { $0.defaultParagraphStyle = paragraphStyle }
- }
-
- func betterEditorAutomaticDashSubstitution(_ enabled: Bool) -> Self {
- self.customized { $0.isAutomaticDashSubstitutionEnabled = enabled }
- }
-
- func betterEditorAutomaticQuoteSubstitution(_ enabled: Bool) -> Self {
- self.customized { $0.isAutomaticQuoteSubstitutionEnabled = enabled }
- }
-
- func betterEditorAutomaticSpellingCorrection(_ enabled: Bool) -> Self {
- self.customized { $0.isAutomaticSpellingCorrectionEnabled = enabled }
- }
-
- func betterEditorTextInset(_ size: NSSize) -> Self {
- self.customized { $0.textContainerInset = size }
- }
-
- class Coordinator: NSObject, NSTextViewDelegate {
- var parent: BetterTextEditor
-
- init(_ parent: BetterTextEditor) {
- self.parent = parent
- }
-
- func textDidChange(_ notification: Notification) {
- guard let textview = notification.object as? NSTextView else {
- return
- }
- self.parent.text = textview.string
- }
- }
-}
-
-private extension BetterTextEditor {
- private func customized(_ customization: @escaping (NSTextView) -> Void) -> Self {
- var copy = self
- copy.customizations.append(customization)
- return copy
- }
-}