ClassicSidebar Layout

Code Features – Syntax-Highlight, Code-Block & Mermaid

Drei JS-Module für die Darstellung von Code und Diagrammen in Inhalten (z.B. Wiki, RichText-Output). Alle arbeiten auf einem Container-Selektor und werden nach dem Rendern des Inhalts manuell aufgerufen.

oo.syntaxHighlight.apply(selector)

Wendet highlight.js auf alle <pre><code>-Blöcke innerhalb des Selektors an. Voraussetzung: highlight.min.js ist geladen.

// C# Beispiel
public record Person(string Name, int Alter);

var person = new Person("Anna", 30);
Console.WriteLine($"Hallo {person.Name}!");
// JavaScript Beispiel
window.oo = window.oo || {};

window.oo.clipboard = {
    copy: async (text) => await navigator.clipboard.writeText(text)
};

oo.codeBlock.init(selector)

Fügt jedem <pre> innerhalb des Selektors einen Kopieren-Button hinzu. Nutzt intern oo.clipboard.copy. Bereits umhüllte Blöcke werden übersprungen.

dotnet build Onesown.Blazor.Components.sln
<Button Text="Speichern" ButtonStyle="OoColorPalette.Primary" />

oo.mermaid.render(selector)

Rendert alle <pre class="mermaid">-Elemente innerhalb des Selektors zu SVG-Diagrammen. Voraussetzung: mermaid.min.js ist geladen. Temporäre Hilfs-Elemente werden automatisch bereinigt.

graph LR
    A[Blazor Component] --> B(JS Interop)
    B --> C{oo.mermaid.render}
    C --> D[SVG Diagramm]
            
sequenceDiagram
    Blazor->>JS: InvokeVoidAsync
    JS->>mermaid.js: run(nodes)
    mermaid.js-->>DOM: SVG einfügen
    DOM-->>Blazor: Rendering fertig
            

Alle drei kombiniert

Typischer Einsatz in einem Wiki- oder Dokumentations-Viewer: nach dem Laden des Inhalts werden alle drei Funktionen nacheinander auf denselben Container-Selektor angewendet.

await JS.ApplySyntaxHighlighting("#mein-content");
await JS.InitCodeBlocks("#mein-content");
await JS.RenderMermaid("#mein-content");
flowchart TD
    Init[OnAfterRenderAsync] --> SH[syntaxHighlight.apply]
    SH --> CB[codeBlock.init]
    CB --> MM[mermaid.render]
    MM --> Done((Fertig))
            

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.