UniversalDashboard.Mermaid.psm1

# Register JavaScript assets with PowerShell Universal
Get-ChildItem "$PSScriptRoot\*.js" | ForEach-Object {
    $Item = [UniversalDashboard.Services.AssetService]::Instance.RegisterAsset($_.FullName)
    if ($_.Name.StartsWith("index.") -and $_.Name.EndsWith(".bundle.js")) {
        $AssetId = $Item
    }
}


function New-UDMermaid {
    <#
    .SYNOPSIS
    Creates a new Mermaid diagram component
     
    .DESCRIPTION
    Creates a new Mermaid diagram component that renders diagrams using Mermaid syntax
     
    .PARAMETER Id
    The ID of this component
 
    .PARAMETER Diagram
    The Mermaid diagram definition as a string
 
    .PARAMETER Config
    A hashtable of configuration options for Mermaid
 
    .EXAMPLE
    New-UDMermaid -Diagram 'graph TD; A-->B; B-->C;'
     
    .EXAMPLE
    New-UDMermaid -Diagram 'sequenceDiagram; Alice->>John: Hello John, how are you?; John-->>Alice: Great!' -Config @{ theme = 'dark' }
    #>

    
    param(
        [Parameter()]
        [string]$Id = (New-Guid).ToString(),
        [Parameter(Mandatory)]
        [string]$Diagram,
        [Parameter()]
        [hashtable]$Config
    )

    End {
        @{
            assetId = $AssetId 
            isPlugin = $true 
            type = "ud-mermaid"
            id = $Id

            diagram = $Diagram
            config = $Config
        }
    }
}