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.
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_urlotherwise 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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mkdocs_hover_tooltip_popup-0.2.3.tar.gz.
File metadata
- Download URL: mkdocs_hover_tooltip_popup-0.2.3.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0ac70875163138b555df4ed9e544d936de8a72d83deb720c9bed381231cee057
|
|
| MD5 |
7fa8990908153b60258fcb100450813c
|
|
| BLAKE2b-256 |
555d6cf1586961003cf4cbf0ca4ca32240a0d40c8fb5bcbf7a09db4d89bbd209
|
File details
Details for the file mkdocs_hover_tooltip_popup-0.2.3-py3-none-any.whl.
File metadata
- Download URL: mkdocs_hover_tooltip_popup-0.2.3-py3-none-any.whl
- Upload date:
- Size: 37.1 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
181b2eb61e6eddd1c6465df6e6dbd268ca446c1649e043aa7d105c1a59a0e822
|
|
| MD5 |
57990029135028295eb04242474819bc
|
|
| BLAKE2b-256 |
be6c8e0a0e307e1012eaaa857371d5252ef425514b4af7b7fee74e09eec0ff90
|