Skip to main content

MkDocs plugin for per-node hover tooltip popups, plus pan & zoom, on Mermaid/D2 diagrams and images

Project description

mkdocs-hover-tooltip-popup

An MkDocs plugin that adds per-node hover tooltip popups to Mermaid diagrams, and pan & zoom controls to Mermaid/D2 diagrams and images.

  • Hover tooltips: declare a Markdown-rendered popup for any diagram node; it appears to the side of the node on hover (without covering it) and supports links, bold, font sizes, etc.
  • Pan & zoom: drag to pan, wheel to zoom, with reset / fullscreen / zoom buttons and per-diagram state saved to localStorage.

Live Demo

Published packages https://pypi.org/project/mkdocs-hover-tooltip-popup/

Setup

pip install mkdocs-hover-tooltip-popup

Add it to your mkdocs.yml:

plugins:
  - search
  - hover-tooltip-popup

[!WARNING] Make sure to define the site_url otherwise it won't work!

Example:

site_url: https://elgalu.github.io/mkdocs-hover-tooltip-popup/

Usage

Examples and usage are available in the docs.

Hover Tooltips

Attach a hover popup to any node of a Mermaid diagram with a mermaid-tooltips fenced block placed right after the diagram it annotates. Each entry targets a node by its id or by its visible label text, and text is full Markdown (rendered to HTML at build time).

```mermaid
flowchart LR
    Start --> Build --> Ship
```

```mermaid-tooltips
- node: Start
  text: "The **entry point**. See the [docs](https://example.com)."
- node: Build
  text: "Supports `inline code`, *emphasis*, and <br>line breaks."
- node: Ship
  text: "Publishes the result."
```

Notes:

  • Use the node id (e.g. Start) when it is a plain identifier; use the visible label text for labels containing spaces or punctuation.
  • Tooltips are independent of pan & zoom: they work on any Mermaid diagram, including small ones that don't get pan/zoom controls.
  • v1 supports Mermaid diagrams (D2 and images are planned).

Config

Selectors

Mermaid and D2 are included by default, but you can add any arbitrary selector or exclude the default ones. To enable images add the img tag like below.

plugins:
  - hover-tooltip-popup:
      include_selectors:
        - .myClass # class in html
        - "#myId" # id in html
        - "img" # tag in html
      exclude_selectors:
        - ".mermaid"
        - ".d2"

Hint

This makes the hint on how to use it permanently visible.

plugins:
  - hover-tooltip-popup:
      always_show_hint: true # default false

This changes the location of the hint

plugins:
   - hover-tooltip-popup:
      hint_location: "top" # default bottom

Use different key

Pan & Zoom is enabled by default. Options for the key to disable it (for text selection) are:

  • alt
  • ctrl
  • shift
  • none
plugins:
  - hover-tooltip-popup:
      key: "ctrl" # default alt

Set Initial Zoom Level

This sets the initial zoom level for all diagrams and images.

plugins:
  - hover-tooltip-popup:
      initial_zoom_level: 1.5 # default 1.0
      zoom_step: 0.1 # default 0.2

Exclude Pages

plugins:
  - hover-tooltip-popup:
      exclude:
        - Path/to/page.md

Enable Fullscreen

plugins:
  - hover-tooltip-popup:
      full_screen: True # default False

Hide/Show Zoom in/out Buttons

plugins:
  - hover-tooltip-popup:
      show_zoom_buttons: true # default false
      buttons_size: "1.1em" # default "1.25em"

Automatic Zoom State Persistence

The plugin automatically saves the zoom level and pan position for each diagram to your browser's localStorage. This means:

  • Persistent Settings: Your preferred zoom level and position for each diagram are remembered across page reloads
  • Per-Diagram Memory: Each diagram on a page maintains its own zoom state independently
  • Automatic Cleanup: Saved states older than 30 days are automatically cleared
  • Reset Functionality: Using the reset button clears the saved state for that diagram and returns to the configured initial zoom level

This feature works automatically - no additional configuration is required. The zoom states are stored locally in your browser and are not shared between different browsers or devices.

Star History

Star History Chart

Credits

This project is a fork of PLAYG0N/mkdocs-panzoom (MIT, Copyright (c) 2024 PLAYG0N). The original pan/zoom plugin is by PLAYG0N; this fork adds per-node hover tooltip popups and is published as mkdocs-hover-tooltip-popup.

The pan/zoom behavior is powered by the bundled panzoom library by Andrei Kashcha (MIT, Copyright (c) 2016-2024 Andrei Kashcha, LICENCE).

The structure and some parts are from the enumerate-headings-plugin (LICENCE)

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

mkdocs_hover_tooltip_popup-0.2.7.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mkdocs_hover_tooltip_popup-0.2.7-py3-none-any.whl (38.5 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_hover_tooltip_popup-0.2.7.tar.gz.

File metadata

  • Download URL: mkdocs_hover_tooltip_popup-0.2.7.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mkdocs_hover_tooltip_popup-0.2.7.tar.gz
Algorithm Hash digest
SHA256 56165fba3ce2cc76dd73cee9cd15c8cafd50fa0f588a7b075f50e823cf6d2182
MD5 cf8d5c87a276bea4395ee21e514976a3
BLAKE2b-256 75b8cb4acab2447ec4c9dd722a69a9c2555ccc74df2a3a51eef3026a060933b7

See more details on using hashes here.

File details

Details for the file mkdocs_hover_tooltip_popup-0.2.7-py3-none-any.whl.

File metadata

  • Download URL: mkdocs_hover_tooltip_popup-0.2.7-py3-none-any.whl
  • Upload date:
  • Size: 38.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for mkdocs_hover_tooltip_popup-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d035cebe78265a4b45d5a532f9d7e746099a877efb9dc2229fc616a66f4ebd3a
MD5 5f89dfa9a5b50a0cc9da3cc243613dd2
BLAKE2b-256 7dd99e10b29fe98de4e6af6975de9dd1dedcc21c145cd3c0c5821c204bab5caf

See more details on using hashes here.

Supported by

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