From c13cbd96afedff7d9154ce54db209d6cb62852f9 Mon Sep 17 00:00:00 2001 From: Jon Wall Date: Mon, 21 Jul 2025 10:46:32 -0400 Subject: [PATCH] add a TextAttribute to links when available. This allows the app using the library to add a pressed state for links. --- .../Renderer/TextInlineRenderer.swift | 26 ++++++++++++------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/Sources/MarkdownUI/Renderer/TextInlineRenderer.swift b/Sources/MarkdownUI/Renderer/TextInlineRenderer.swift index e3f86673..84a84e95 100644 --- a/Sources/MarkdownUI/Renderer/TextInlineRenderer.swift +++ b/Sources/MarkdownUI/Renderer/TextInlineRenderer.swift @@ -107,15 +107,23 @@ private struct TextInlineRenderer { } private mutating func defaultRender(_ inline: InlineNode) { - self.result = - self.result - + Text( - inline.renderAttributedString( - baseURL: self.baseURL, - textStyles: self.textStyles, - softBreakMode: self.softBreakMode, - attributes: self.attributes - ) + var text = Text( + inline.renderAttributedString( + baseURL: self.baseURL, + textStyles: self.textStyles, + softBreakMode: self.softBreakMode, + attributes: self.attributes ) + ) + if #available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *), case .link(let destination, _) = inline { + text = text.customAttribute(LinkAttribute(urlString: destination)) + } + + self.result = self.result + text } } + +@available(iOS 17.0, macOS 14.0, tvOS 17.0, watchOS 10.0, *) +public struct LinkAttribute: TextAttribute { + public let urlString: String +}