mirror of
https://github.com/McShelby/hugo-theme-relearn.git
synced 2024-11-23 07:47:54 +00:00
mermaid: make zoom configurable #144
This commit is contained in:
parent
98f5959a33
commit
a046b9300f
7 changed files with 38 additions and 10 deletions
|
@ -205,4 +205,5 @@ disableHugoGeneratorInject = true
|
||||||
# graphs; you usually will not need it and you should remove this for
|
# graphs; you usually will not need it and you should remove this for
|
||||||
# security reasons
|
# security reasons
|
||||||
mermaidInitialize = "{ \"securityLevel\": \"loose\" }"
|
mermaidInitialize = "{ \"securityLevel\": \"loose\" }"
|
||||||
|
mermaidZoom = true
|
||||||
additionalContentLanguage = [ "en" ]
|
additionalContentLanguage = [ "en" ]
|
||||||
|
|
|
@ -28,6 +28,10 @@ This document shows you what's new in the latest release. For a detailed list of
|
||||||
<script src="{{"js/jquery.min.js"| relURL}}{{ if $assetBusting }}?{{ now.Unix }}{{ end }}" defer></script>
|
<script src="{{"js/jquery.min.js"| relURL}}{{ if $assetBusting }}?{{ now.Unix }}{{ end }}" defer></script>
|
||||||
````
|
````
|
||||||
|
|
||||||
|
- {{% badge style="note" title=" " %}}Change{{% /badge %}} [Mermaid]({{% relref "shortcodes/mermaid#parameter" %}}) diagrams can now be configured for pan and zoom on site and project level as individually for each graph.
|
||||||
|
|
||||||
|
The default setting of `on`, in effect since 1.1.0, changed back to `off` as there was interference with scrolling on mobile and big pages.
|
||||||
|
|
||||||
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme is now capable to visually [adapt to your OS's light/dark mode setting]({{%relref "basics/customization/#adjust-to-os-settings" %}}).
|
- {{% badge style="note" title=" " %}}Change{{% /badge %}} The theme is now capable to visually [adapt to your OS's light/dark mode setting]({{%relref "basics/customization/#adjust-to-os-settings" %}}).
|
||||||
|
|
||||||
This is also the new default setting if you haven't configured `themeVariant` in your `config.toml`.
|
This is also the new default setting if you haven't configured `themeVariant` in your `config.toml`.
|
||||||
|
@ -459,6 +463,8 @@ This document shows you what's new in the latest release. For a detailed list of
|
||||||
|
|
||||||
## 1.1.0 (2021-07-02)
|
## 1.1.0 (2021-07-02)
|
||||||
|
|
||||||
|
- {{% badge style="warning" title=" " %}}Breaking{{% /badge %}} [Mermaid]({{% relref "shortcodes/mermaid" %}}) diagrams can now be panned and zoomed. This isn't configurable yet.
|
||||||
|
|
||||||
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} [`Mermaid`]({{% relref "shortcodes/mermaid#configuration" %}}) config options can be set in `config.toml`.
|
- {{% badge style="info" icon="plus-circle" title=" " %}}New{{% /badge %}} [`Mermaid`]({{% relref "shortcodes/mermaid#configuration" %}}) config options can be set in `config.toml`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
|
@ -5,7 +5,7 @@ title = "Mermaid"
|
||||||
|
|
||||||
The `mermaid` shortcode generates diagrams and flowcharts from text, in a similar manner as Markdown using the [Mermaid](https://mermaidjs.github.io/) library.
|
The `mermaid` shortcode generates diagrams and flowcharts from text, in a similar manner as Markdown using the [Mermaid](https://mermaidjs.github.io/) library.
|
||||||
|
|
||||||
{{< mermaid align="center" >}}
|
{{< mermaid align="center">}}
|
||||||
graph LR;
|
graph LR;
|
||||||
If --> Then
|
If --> Then
|
||||||
Then --> Else
|
Then --> Else
|
||||||
|
@ -33,7 +33,7 @@ To use codefence syntax you have to turn off `guessSyntax` for the `markup.highl
|
||||||
{{% tab name="codefence" %}}
|
{{% tab name="codefence" %}}
|
||||||
|
|
||||||
````md
|
````md
|
||||||
```mermaid { align="center" }
|
```mermaid { align="center" zoom="true" }
|
||||||
graph LR;
|
graph LR;
|
||||||
If --> Then
|
If --> Then
|
||||||
Then --> Else
|
Then --> Else
|
||||||
|
@ -44,7 +44,7 @@ graph LR;
|
||||||
{{% tab name="shortcode" %}}
|
{{% tab name="shortcode" %}}
|
||||||
|
|
||||||
````go
|
````go
|
||||||
{{</* mermaid align="center" */>}}
|
{{</* mermaid align="center" zoom="true" */>}}
|
||||||
graph LR;
|
graph LR;
|
||||||
If --> Then
|
If --> Then
|
||||||
Then --> Else
|
Then --> Else
|
||||||
|
@ -59,6 +59,7 @@ graph LR;
|
||||||
"context" .
|
"context" .
|
||||||
"content" "graph LR;\nIf --> Then\nThen --> Else"
|
"content" "graph LR;\nIf --> Then\nThen --> Else"
|
||||||
"align" "center"
|
"align" "center"
|
||||||
|
"zoom" "true"
|
||||||
)}}
|
)}}
|
||||||
|
|
||||||
````
|
````
|
||||||
|
@ -73,6 +74,7 @@ The generated graphs can be be panned by dragging them and zoomed by using the m
|
||||||
| Name | Default | Notes |
|
| Name | Default | Notes |
|
||||||
|:----------------------|:-----------------|:------------|
|
|:----------------------|:-----------------|:------------|
|
||||||
| **align** | `center` | Allowed values are `left`, `center` or `right`. |
|
| **align** | `center` | Allowed values are `left`, `center` or `right`. |
|
||||||
|
| **zoom** | see notes | Whether the graph is pan- and zoomable.<br><br>If not set the value is determined by the `mermaidZoom` setting of the [site](#global-configuration-file) or the [pages frontmatter](#pages-frontmatter) or `false` if not set at all.<br><br>- `false`: no pan or zoom<br>- `true`: pan and zoom active |
|
||||||
| _**<content>**_ | _<empty>_ | Your Mermaid graph. |
|
| _**<content>**_ | _<empty>_ | Your Mermaid graph. |
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
@ -94,6 +96,7 @@ To use codefence syntax you have to turn off `guessSyntax` for the `markup.highl
|
||||||
````toml
|
````toml
|
||||||
[params]
|
[params]
|
||||||
mermaidInitialize = "{ \"theme\": \"dark\" }"
|
mermaidInitialize = "{ \"theme\": \"dark\" }"
|
||||||
|
mermaidZoom = true
|
||||||
|
|
||||||
[markup]
|
[markup]
|
||||||
[markup.highlight]
|
[markup.highlight]
|
||||||
|
@ -108,6 +111,7 @@ To use codefence syntax you have to turn off `guessSyntax` for the `markup.highl
|
||||||
````toml
|
````toml
|
||||||
+++
|
+++
|
||||||
mermaidInitialize = "{ \"theme\": \"dark\" }"
|
mermaidInitialize = "{ \"theme\": \"dark\" }"
|
||||||
|
mermaidZoom = true
|
||||||
+++
|
+++
|
||||||
````
|
````
|
||||||
|
|
||||||
|
@ -339,10 +343,10 @@ gantt
|
||||||
Add to Mermaid :1d
|
Add to Mermaid :1d
|
||||||
{{< /mermaid >}}
|
{{< /mermaid >}}
|
||||||
|
|
||||||
### Pie Chart
|
### Pie Chart without Zoom
|
||||||
|
|
||||||
````go
|
````go
|
||||||
{{</* mermaid */>}}
|
{{</* mermaid zoom="false" */>}}
|
||||||
pie title Pets adopted by volunteers
|
pie title Pets adopted by volunteers
|
||||||
"Dogs" : 386
|
"Dogs" : 386
|
||||||
"Cats" : 85
|
"Cats" : 85
|
||||||
|
@ -350,7 +354,7 @@ pie title Pets adopted by volunteers
|
||||||
{{</* /mermaid */>}}
|
{{</* /mermaid */>}}
|
||||||
````
|
````
|
||||||
|
|
||||||
{{< mermaid >}}
|
{{< mermaid zoom="false" >}}
|
||||||
pie title Pets adopted by volunteers
|
pie title Pets adopted by volunteers
|
||||||
"Dogs" : 386
|
"Dogs" : 386
|
||||||
"Cats" : 85
|
"Cats" : 85
|
||||||
|
|
|
@ -1,8 +1,21 @@
|
||||||
{{- $context := .context }}
|
{{- $context := .context }}
|
||||||
{{- $content := .content }}
|
{{- $content := .content }}
|
||||||
{{- $align := .align | default "center" }}
|
{{- $align := .align | default "center" }}
|
||||||
|
{{- $zoom := $context.Site.Params.mermaidZoom | default false }}
|
||||||
|
{{- with $context.Page.Params.mermaidZoom }}
|
||||||
|
{{- $zoom = . }}
|
||||||
|
{{- if eq (printf "%T" .) "string" }}
|
||||||
|
{{- $zoom = (eq . "true") }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .zoom }}
|
||||||
|
{{- $zoom = . }}
|
||||||
|
{{- if eq (printf "%T" .) "string" }}
|
||||||
|
{{- $zoom = (eq . "true") }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
{{- with $context }}
|
{{- with $context }}
|
||||||
<div class="mermaid align-{{ $align }}">
|
<div class="mermaid align-{{ $align }}{{ if $zoom }} zoom{{ end }}">
|
||||||
{{- replaceRE "'" "'" ( replaceRE """ "\"" ( $content | safeHTML ) ) -}}
|
{{- replaceRE "'" "'" ( replaceRE """ "\"" ( $content | safeHTML ) ) -}}
|
||||||
</div>
|
</div>
|
||||||
{{- .Page.Store.Set "hasMermaid" true }}
|
{{- .Page.Store.Set "hasMermaid" true }}
|
||||||
|
|
|
@ -3,4 +3,5 @@
|
||||||
"context" .
|
"context" .
|
||||||
"content" .Inner
|
"content" .Inner
|
||||||
"align" (.Get "align")
|
"align" (.Get "align")
|
||||||
|
"zoom" (.Get "zoom")
|
||||||
) }}
|
) }}
|
|
@ -1121,12 +1121,15 @@ option {
|
||||||
|
|
||||||
.mermaid > svg {
|
.mermaid > svg {
|
||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
cursor: pointer;
|
|
||||||
/* remove inline height from generated diagram */
|
/* remove inline height from generated diagram */
|
||||||
height: initial !important;
|
height: initial !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mermaid > svg:hover {
|
.mermaid.zoom > svg {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mermaid.zoom > svg:hover {
|
||||||
border-color: rgba( 134, 134, 134, .333 );
|
border-color: rgba( 134, 134, 134, .333 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -227,7 +227,7 @@ function initMermaid( update, attrs ) {
|
||||||
mermaid.init();
|
mermaid.init();
|
||||||
// zoom for Mermaid
|
// zoom for Mermaid
|
||||||
// https://github.com/mermaid-js/mermaid/issues/1860#issuecomment-1345440607
|
// https://github.com/mermaid-js/mermaid/issues/1860#issuecomment-1345440607
|
||||||
var svgs = d3.selectAll( '.mermaid svg' );
|
var svgs = d3.selectAll( '.mermaid.zoom svg' );
|
||||||
svgs.each( function(){
|
svgs.each( function(){
|
||||||
var svg = d3.select( this );
|
var svg = d3.select( this );
|
||||||
svg.html( '<g>' + svg.html() + '</g>' );
|
svg.html( '<g>' + svg.html() + '</g>' );
|
||||||
|
|
Loading…
Reference in a new issue