forked from succeun/typemill-plugins-mermaid
-
Notifications
You must be signed in to change notification settings - Fork 1
/
mermaid.php
71 lines (57 loc) · 1.73 KB
/
mermaid.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<?php
namespace Plugins\Mermaid;
use \Typemill\Plugin;
class Mermaid extends Plugin
{
protected $settings;
public static function getSubscribedEvents()
{
return array(
'onSettingsLoaded' => 'onSettingsLoaded',
'onTwigLoaded' => 'onTwigLoaded'
);
}
public function onSettingsLoaded($settings)
{
$this->settings = $settings->getData();
}
public function onTwigLoaded()
{
$mermaidSettings = $this->settings['settings']['plugins']['mermaid'];
if (isset($mermaidSettings['theme'])) {
$theme = $mermaidSettings['theme'];
} else {
$theme = 'default';
}
if (isset($mermaidSettings['securityLevel'])) {
$securityLevel = $mermaidSettings['securityLevel'];
} else {
$securityLevel = 'strict';
}
if (isset($mermaidSettings['htmlLabels'])) {
$htmlLabels = $mermaidSettings['htmlLabels'];
} else {
$htmlLabels = 'true';
}
if (isset($mermaidSettings['fontFamily'])) {
$fontFamily = $mermaidSettings['fontFamily'];
} else {
$fontFamily = '';
}
$this->addJS('/mermaid/public/mermaid.min.js');
/* initialize the script */
$this->addInlineJS('
document.addEventListener("DOMContentLoaded", function() {
document.querySelectorAll("code.language-mermaid").forEach(function(element, index) {
var content = element.innerHTML.replace(/&/g, "&");
tempDiv = document.createElement("div");
tempDiv.className = "mermaid";
tempDiv.align = "center";
tempDiv.innerHTML = content;
element.parentNode.parentNode.replaceChild(tempDiv, element.parentNode);
});
});
');
$this->addInlineJS("mermaid.initialize({'theme': '".$theme."', 'securityLevel': '".$securityLevel."', 'htmlLabels': ".$htmlLabels.", 'fontFamily': '".$fontFamily."'});");
}
}