/*!
  * Simple-Jekyll-Search
  * Copyright 2015-2020, Christian Fei
  * Licensed under the MIT License.
  */

(function(window){
    'use strict'

      const elementCode = '.mermaid'
      const loadMermaid = function(theme) {
        window.mermaid.initialize({theme})
        window.mermaid.init({theme}, document.querySelectorAll(elementCode))
      }
      const saveOriginalData = function(){
        return new Promise((resolve, reject) => {
          try {
            var els = document.querySelectorAll(elementCode),
                count = els.length;
            els.forEach(element => {
              element.setAttribute('data-original-code', element.innerHTML)
              count--
              if(count == 0){
                resolve()
              }
            });
          } catch (error) {
           reject(error)
          }
        })
      }
      const resetProcessed = function(){
        return new Promise((resolve, reject) => {
          try {
            var els = document.querySelectorAll(elementCode),
                count = els.length;
            els.forEach(element => {
              if(element.getAttribute('data-original-code') != null){
                element.removeAttribute('data-processed')
                element.innerHTML = element.getAttribute('data-original-code')
              }
              count--
              if(count == 0){
                resolve()
              }
            });
          } catch (error) {
           reject(error)
          }
        })
      }

      const init = ()=>{
        saveOriginalData()
        .catch( console.error )
        document.body.addEventListener('dark-theme-set', ()=>{
          resetProcessed()
          .then(loadMermaid('dark'))
          .catch(console.error)
        })
        document.body.addEventListener('light-theme-set', ()=>{
          resetProcessed()
          .then(loadMermaid('default'))
          .catch(console.error)
        })
      }
      window.initMermaid = init
    })(window);