mermaid.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. var mmd = {
  2. loaded: false,
  3. refresh: () => {
  4. if (!mmd.loaded) {
  5. return
  6. }
  7. var walk = (regex, string, result = [], match = regex.exec(string)) =>
  8. !match ? result : walk(regex, string, result.concat(match[1]))
  9. var definitions = walk(/<pre><code class="language-(?:mermaid|mmd)">([\s\S]+?)<\/code><\/pre>/gi, state.html)
  10. Array.from(document.querySelectorAll('pre code.language-mermaid, pre code.language-mmd')).forEach((diagram, index) => {
  11. diagram.removeAttribute('data-processed')
  12. diagram.innerHTML = definitions[index]
  13. })
  14. mmd.render()
  15. },
  16. render: () => {
  17. mermaid.initialize({
  18. theme:
  19. state._themes[state.theme] === 'dark' ||
  20. (state._themes[state.theme] === 'auto' && window.matchMedia('(prefers-color-scheme: dark)').matches)
  21. ? 'dark' : 'default'
  22. })
  23. mermaid.init({}, 'code.language-mmd, code.language-mermaid')
  24. mmd.loaded = true
  25. }
  26. }
  27. ;(() => {
  28. var timeout = setInterval(() => {
  29. if (!!(window.mermaid && mermaid.init)) {
  30. clearInterval(timeout)
  31. mmd.render()
  32. }
  33. }, 100)
  34. })()