in src/Elastic.Markdown/Myst/Renderers/HtmxLinkInlineRenderer.cs [17:76]
protected override void Write(HtmlRenderer renderer, LinkInline link)
{
if (renderer.EnableHtmlForInline && !link.IsImage)
{
// ReSharper disable once UnusedVariable
if (link.GetData(nameof(ParserContext.CurrentUrlPath)) is not string currentUrl)
{
base.Write(renderer, link);
return;
}
var url = link.GetDynamicUrl != null ? link.GetDynamicUrl() : link.Url;
_ = renderer.Write("<a href=\"");
_ = renderer.WriteEscapeUrl(url);
_ = renderer.Write('"');
_ = renderer.WriteAttributes(link);
if (link.Url?.StartsWith('/') == true)
{
var currentRootNavigation = link.GetData(nameof(MarkdownFile.NavigationRoot)) as INavigationGroup;
var targetRootNavigation = link.GetData($"Target{nameof(MarkdownFile.NavigationRoot)}") as INavigationGroup;
_ = renderer.Write(" hx-get=\"");
_ = renderer.WriteEscapeUrl(url);
_ = renderer.Write('"');
_ = renderer.Write($" hx-select-oob=\"{Htmx.GetHxSelectOob(currentRootNavigation?.Id == targetRootNavigation?.Id)}\"");
_ = renderer.Write($" hx-swap=\"{Htmx.HxSwap}\"");
_ = renderer.Write($" hx-push-url=\"{Htmx.HxPushUrl}\"");
_ = renderer.Write($" hx-indicator=\"{Htmx.HxIndicator}\"");
_ = renderer.Write($" preload=\"{Htmx.Preload}\"");
}
else if (link.Url?.StartsWith("http") == true && (link.GetData("isCrossLink") as bool?) == false)
{
_ = renderer.Write(" target=\"_blank\"");
_ = renderer.Write(" rel=\"noopener noreferrer\"");
}
if (!string.IsNullOrEmpty(link.Title))
{
_ = renderer.Write(" title=\"");
_ = renderer.WriteEscape(link.Title);
_ = renderer.Write('"');
}
if (!string.IsNullOrWhiteSpace(Rel) && link.Url?.StartsWith('/') == false)
{
_ = renderer.Write(" rel=\"");
_ = renderer.Write(Rel);
_ = renderer.Write('"');
}
_ = renderer.Write('>');
renderer.WriteChildren(link);
_ = renderer.Write("</a>");
}
else
base.Write(renderer, link);
}