single-script.html 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. {{ $js := .Site.Data.lib.js }}
  2. {{ $css := .Site.Data.lib.css }}
  3. {{ $getParents := resources.Get "js/helper/getParents.js" | resources.Minify }}
  4. <script defer src="{{ $getParents.RelPermalink }}"></script>
  5. {{ $closest := resources.Get "js/helper/closest.js" | resources.Minify }}
  6. <script defer src="{{ $closest.RelPermalink }}"></script>
  7. {{ $prev := resources.Get "js/helper/prev.js" | resources.Minify }}
  8. <script defer src="{{ $prev.RelPermalink }}"></script>
  9. {{ $prop := resources.Get "js/helper/prop.js" | resources.Minify }}
  10. <script defer src="{{ $prop.RelPermalink }}"></script>
  11. {{ $fadeinout := resources.Get "js/helper/fadeinout.js" | resources.Minify }}
  12. <script defer src="{{ $fadeinout.RelPermalink }}"></script>
  13. {{ if in .Params.Libraries "mermaid" }}
  14. <script defer src="{{ $js.mermaid.url }}" integrity="{{ $js.mermaid.sri }}" crossorigin="anonymous"></script>
  15. {{ end }}
  16. {{ if in .Params.Libraries "katex" }}
  17. <link rel="stylesheet" href="{{ $css.katex.url }}" integrity="{{$css.katex.sri }}" crossorigin="anonymous">
  18. <script defer src="{{ $js.katex.url }}" integrity="{{ $js.katex.sri }}" crossorigin="anonymous"></script>
  19. <script defer src="{{ $js.katex_auto_render.url }}" integrity="{{ $js.katex_auto_render.sri }}" crossorigin="anonymous"></script>
  20. {{ end }}
  21. {{ if in .Params.Libraries "flowchartjs" }}
  22. <script defer src="{{ $js.raphael.url }}" integrity="{{ $js.raphael.sri }}" crossorigin="anonymous"></script>
  23. <script defer src="{{ $js.flowchartjs.url }}" integrity="{{ $js.flowchartjs.sri }}" crossorigin="anonymous"></script>
  24. {{ end }}
  25. {{ if in .Params.Libraries "mathjax" }}
  26. <script type="text/javascript" async src="{{ $js.mathjax.url }}?config=TeX-AMS-MML_HTMLorMML">
  27. MathJax.Hub.Config({
  28. tex2jax: {
  29. inlineMath: [['$', '$'], ['\\(', '\\)']],
  30. displayMath: [['$$', '$$']],
  31. processEscapes: true,
  32. processEnvironments: true,
  33. skipTags: ['script', 'noscript', 'style', 'textarea', 'pre'],
  34. TeX: {
  35. equationNumbers: { autoNumber: "AMS" },
  36. extensions: ["AMSmath.js", "AMSsymbols.js"]
  37. }
  38. }
  39. });
  40. MathJax.Hub.Queue(function () {
  41. // Fix <code> tags after MathJax finishes running. This is a
  42. // hack to overcome a shortcoming of Markdown. Discussion at
  43. // https://github.com/mojombo/jekyll/issues/199
  44. var all = MathJax.Hub.getAllJax(), i;
  45. for (i = 0; i < all.length; i += 1) {
  46. all[i].SourceElement().parentNode.className += ' has-jax';
  47. }
  48. });
  49. MathJax.Hub.Config({
  50. // Autonumbering by mathjax
  51. TeX: { equationNumbers: { autoNumber: "AMS" } }
  52. });
  53. </script>
  54. {{ end }}
  55. {{ if in .Params.Libraries "chart" }}
  56. <script defer src="{{ $js.chart.url }}" integrity="{{ $js.chart.sri }}" crossorigin="anonymous"></script>
  57. {{ end }}
  58. <script>
  59. document.addEventListener('DOMContentLoaded', function () {
  60. 'use strict';
  61. // ============================ mermaid ============================
  62. {{ $lib := .Params.libraries }}
  63. var lib = JSON.parse({{ $lib | jsonify }});
  64. if (lib && lib.includes('mermaid')) {
  65. var themeVariant = localStorage.getItem('theme') || 'light';
  66. if (themeVariant === "dark") {
  67. mermaid.initialize({ theme: 'dark' });
  68. } else {
  69. mermaid.initialize({ theme: 'default' });
  70. }
  71. var mermaids = [];
  72. [].push.apply(mermaids, document.getElementsByClassName('language-mermaid'));
  73. mermaids.forEach(function(elem) {
  74. var elemParentNode = elem.parentNode;
  75. if (elemParentNode !== document.body) {
  76. elemParentNode.parentNode.insertBefore(elem, elemParentNode);
  77. elemParentNode.parentNode.removeChild(elemParentNode);
  78. }
  79. var newElemWrapper = document.createElement('div');
  80. newElemWrapper.classList.add('mermaid');
  81. newElemWrapper.innerHTML = elem.innerHTML;
  82. elem.replaceWith(newElemWrapper);
  83. });
  84. }
  85. // =================================================================
  86. // ============================= katex =============================
  87. if (lib && lib.includes('katex')) {
  88. var mathElements = document.getElementsByClassName('math');
  89. var options = {
  90. delimiters: [
  91. { left: "$$", right: "$$", display: true },
  92. { left: "\\[", right: "\\]", display: true },
  93. { left: "$", right: "$", display: false },
  94. { left: "\\(", right: "\\)", display: false }
  95. ],
  96. };
  97. renderMathInElement(document.querySelector('.single__contents'), options);
  98. }
  99. // =================================================================
  100. // ========================= flowchart.js ==========================
  101. if (lib && lib.includes('flowchartjs')) {
  102. {{ $flowchartjs := .Site.Data.flowchartjs }}
  103. var options = JSON.parse({{ $flowchartjs | jsonify }});
  104. var jsonContent = null;
  105. var flowchartPrefix = "language-flowchart";
  106. var index = 0;
  107. Array.prototype.forEach.call(document.querySelectorAll("[class^=" + flowchartPrefix + "]"), function(x){
  108. x.style.display = 'none'
  109. x.parentNode.style.backgroundColor = "transparent"
  110. jsonContent = x.innerText;
  111. var node0 = document.createElement('div');
  112. node0.id = 'flowchart' + index;
  113. x.parentNode.insertBefore(node0, x);
  114. var diagram = flowchart.parse(jsonContent);
  115. diagram.drawSVG("flowchart"+index, options);
  116. index +=1;
  117. });
  118. }
  119. // =================================================================
  120. // =========================== chart.js ============================
  121. if (lib && lib.includes('chart')) {
  122. var borderColor = "#666";
  123. var bgColor = "#ddd";
  124. var borderWidth = 2;
  125. Chart.defaults.global.elements.rectangle.borderWidth = borderWidth;
  126. Chart.defaults.global.elements.rectangle.borderColor = borderColor;
  127. Chart.defaults.global.elements.rectangle.backgroundColor = bgColor;
  128. Chart.defaults.global.elements.line.borderWidth = borderWidth;
  129. Chart.defaults.global.elements.line.borderColor = borderColor;
  130. Chart.defaults.global.elements.line.backgroundColor = bgColor;
  131. Chart.defaults.global.elements.point.borderWidth = borderWidth;
  132. Chart.defaults.global.elements.point.borderColor = borderColor;
  133. Chart.defaults.global.elements.point.backgroundColor = bgColor;
  134. var chartPrefix = "language-chart";
  135. var index = 0;
  136. var jsonContent = null;
  137. Array.prototype.forEach.call(document.querySelectorAll("[class^=" + chartPrefix + "]"), function (x) {
  138. x.style.display = 'none'
  139. x.parentNode.style.backgroundColor = "transparent"
  140. jsonContent = x.innerText;
  141. var node0 = document.createElement('canvas');
  142. var source = null;
  143. node0.height = 200;
  144. node0.style.height = 200;
  145. node0.id = 'myChart' + index;
  146. source = JSON.parse(jsonContent);
  147. x.parentNode.insertBefore(node0, x);
  148. var ctx = document.getElementById('myChart' + index).getContext('2d');
  149. var myChart = new Chart(ctx, source);
  150. index += 1;
  151. });
  152. }
  153. // =================================================================
  154. });
  155. </script>