Skip to main content

A project providing a Mermaid JS widget for use with HoloViz Panel.

Project description

panel-mermaid

Overview

panel-mermaid is an interactive widget-based tool designed to integrate Mermaid JS diagramming functionality with HoloViz Panel.

This package provides a seamless interface for creating and customizing Mermaid diagrams directly in Python, with the ability to edit configurations and styles interactively.

Key Features

  • Interactive Mermaid Diagrams: Easily create flowcharts, sequence diagrams, class diagrams, and more using the familiar Mermaid syntax.
  • Configurable Themes and Looks: Choose from a variety of themes (default, dark, forest, etc.) and looks (classic, handDrawn).
  • Real-time Configuration Updates: Use the MermaidConfiguration widget to dynamically update your diagram’s configuration.
  • Customizable Events: Handle diagram interactions with event subscriptions (e.g., click, mouseover).
  • Font-Awesome Icon Support: Leverage Font-Awesome icons in your diagrams by including the Font-Awesome CSS in your application.

Installation

You can install the package using pip:

pip install panel-mermaid

Usage

1. Basic Mermaid Diagram

Here’s how to create a simple Mermaid diagram using the MermaidDiagram widget:

import panel as pn
from panel_mermaid import MermaidDiagram

pn.extension()

diagram = MermaidDiagram(
    object="""
        graph LR
            A[Hello] --- B[World]
            B-->C[forbidden]
            B-->D[allowed]
    """
)
diagram.servable()

2. Customizing the Configuration

Use the MermaidConfiguration widget to interactively modify the Mermaid diagram configuration. Here's an example of how to integrate it:

from panel_mermaid import MermaidDiagram, MermaidConfiguration

config = MermaidConfiguration()

diagram = MermaidDiagram(
    object="""
        graph TD
            E --> F
            F --> G[End]
    """,
    configuration=config,
)

pn.Column(config, diagram).servable()

3. Event Handling

You can also add event listeners to the diagram, allowing interactivity such as responding to clicks on diagram nodes:

diagram.event_configuration = [("click", ".node")]

@pn.depends(diagram.param.event, watch=True)
def handle_event(event):
    print(f"Diagram event: {event}")

pn.Column(diagram).servable()

Mermaid Configuration

The MermaidConfiguration widget allows you to adjust diagram styling and themes, making it simple to adapt to various visual preferences. You can customize:

  • Look: Choose between classic or handDrawn.
  • Theme: Choose from several themes like default, dark, forest, etc.

Example:

config = MermaidConfiguration(look='handDrawn', theme='dark')

Font-Awesome Icons

To use Font-Awesome icons in your Mermaid diagrams, include the Font-Awesome CSS:

pn.extension(
    css_files=["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.6.0/css/all.min.css"]
)

Once included, you can add icons to your diagrams by prefixing with fa:.

Contributions

We welcome contributions to this project! Please feel free to submit issues or pull requests to the GitHub repository.

License

This project is licensed under the MIT License.


Start building rich, interactive diagrams directly in your Python applications with panel-mermaid!

Known Issues

  • JSON and CodeEditor widgets do not work with theme
  • JSON widget has no label

Feature Request

  • RowSplitter, ColumnSplitter

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

panel_mermaid-0.1.0.tar.gz (9.5 kB view details)

Uploaded Source

Built Distribution

panel_mermaid-0.1.0-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file panel_mermaid-0.1.0.tar.gz.

File metadata

  • Download URL: panel_mermaid-0.1.0.tar.gz
  • Upload date:
  • Size: 9.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.4.20

File hashes

Hashes for panel_mermaid-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9dba8c8c4bb0b4303a0d1f412275e265131bfa9e99dea6dc1e44b99309dae4d3
MD5 a5ded338713b168a870be1443e65222b
BLAKE2b-256 e07641847a2af4c842a9724c2fd2c2b6fc9c4d0d8edd47c9bdcba9471c7b09fd

See more details on using hashes here.

File details

Details for the file panel_mermaid-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for panel_mermaid-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 10869a7fc15107d34a116ac16c7ddd7704e1f23158d7d7eb95d833e55eab6042
MD5 73dcf704e3f7b827bbed5b5b02cde79c
BLAKE2b-256 385f0dbf10ba676931972b217603d40e4fb33933db46396acc7768bbd50745ca

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page