113 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			HTML
		
	
	
	
{{ $clipboard := resources.Get "js/clipboard.min.js" | resources.Fingerprint }}
 | 
						|
<script defer src="{{ $clipboard.RelPermalink }}"></script>
 | 
						|
{{ $prev := resources.Get "js/helper/prev.js" | resources.Minify }}
 | 
						|
<script defer src="{{ $prev.RelPermalink }}"></script>
 | 
						|
{{ $prop := resources.Get "js/helper/prop.js" | resources.Minify }}
 | 
						|
<script defer src="{{ $prop.RelPermalink }}"></script>
 | 
						|
<script>
 | 
						|
  'use strict';
 | 
						|
  document.addEventListener('DOMContentLoaded', function () {
 | 
						|
    // =========================== clipboard ===========================
 | 
						|
    var clipInit = false;
 | 
						|
    var preChromaElem = document.querySelectorAll('pre.chroma');
 | 
						|
    var langCodeElem = document.querySelectorAll('.language-code');
 | 
						|
    var dollarCodeElem = document.querySelectorAll('div.language-\\$');
 | 
						|
    var gtCodeElem = document.querySelectorAll('div.language-\\>');
 | 
						|
 | 
						|
    var makeClipboard = function(elem) {
 | 
						|
      var code = elem,
 | 
						|
          text = elem.textContent;
 | 
						|
        
 | 
						|
      if (text.length > 15) {
 | 
						|
        if (!clipInit) {
 | 
						|
          var text, clip = new ClipboardJS('.copy-to-clipboard', {
 | 
						|
            text: function (trigger) {
 | 
						|
              var codeElem = prev(trigger).querySelectorAll('code');
 | 
						|
              if (codeElem.length > 1) {
 | 
						|
                text = prev(trigger).querySelector('code[class^="language-"]').textContent;
 | 
						|
              } else {
 | 
						|
                text = prev(trigger).querySelector('code').textContent;
 | 
						|
              }
 | 
						|
 | 
						|
              return text.replace(/^\$\s/gm, '');
 | 
						|
            }
 | 
						|
          });
 | 
						|
 | 
						|
          var inPre;
 | 
						|
          clip.on('success', function (e) {
 | 
						|
            e.clearSelection();
 | 
						|
            inPre = prop(e.trigger.parentNode, 'tagName') == 'PRE';
 | 
						|
            e.trigger.setAttribute('aria-label', 'Copied to clipboard!');
 | 
						|
            e.trigger.classList.add('tooltipped');
 | 
						|
            e.trigger.classList.add('tooltipped-w');
 | 
						|
          });
 | 
						|
 | 
						|
          clip.on('error', function (e) {
 | 
						|
            inPre = prop(e.trigger.parentNode, 'tagName') == 'PRE';
 | 
						|
            e.trigger.setAttribute('aria-label', e.action.toString());
 | 
						|
            e.trigger.classList.add('tooltipped');
 | 
						|
            e.trigger.classList.add('tooltipped-w');
 | 
						|
          });
 | 
						|
 | 
						|
          clipInit = true;
 | 
						|
        }
 | 
						|
 | 
						|
        var notAllowedClass = ['language-mermaid', 'language-viz', 'language-wave', 'language-chart', 'language-msc', 'language-flowchart'];
 | 
						|
        var isNotAllowedIncluded = false;
 | 
						|
        var curClassName = code.getAttribute('class');
 | 
						|
 | 
						|
        for (var i = 0; i < notAllowedClass.length; i++) {
 | 
						|
          if (curClassName && curClassName.startsWith(notAllowedClass[i])) {
 | 
						|
            isNotAllowedIncluded = true;
 | 
						|
            break;
 | 
						|
          }
 | 
						|
        }
 | 
						|
 | 
						|
        if (!isNotAllowedIncluded) {
 | 
						|
          if (curClassName) {
 | 
						|
            var newClipboardElem = document.createElement('span');
 | 
						|
            newClipboardElem.setAttribute('class', 'copy-to-clipboard');
 | 
						|
            newClipboardElem.setAttribute('title', 'Copy to clipboard');
 | 
						|
            elem.parentNode.parentNode.insertBefore(newClipboardElem, elem.parentNode.nextElementSibling);
 | 
						|
          }
 | 
						|
        }
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    var makeSymbolClipboard = function(elem) {
 | 
						|
      var clipboardSpan = document.createElement('span');
 | 
						|
      clipboardSpan.setAttribute('class', 'copy-to-clipboard');
 | 
						|
      clipboardSpan.setAttribute('title', 'Copy to clipboard');
 | 
						|
      elem.parentNode.parentNode.insertBefore(clipboardSpan, elem.parentNode.nextElementSibling);
 | 
						|
    }
 | 
						|
 | 
						|
    preChromaElem ? 
 | 
						|
    preChromaElem.forEach(function(elem) {
 | 
						|
      elem.querySelectorAll('code').forEach(function(codeElem) {
 | 
						|
        makeClipboard(codeElem);
 | 
						|
      });
 | 
						|
    }) : null;
 | 
						|
    
 | 
						|
    langCodeElem ? 
 | 
						|
    langCodeElem.forEach(function(elem) {
 | 
						|
      elem.querySelectorAll('code').forEach(function (codeElem) {
 | 
						|
        makeClipboard(codeElem);
 | 
						|
      });
 | 
						|
    }) : null;
 | 
						|
 | 
						|
    dollarCodeElem ? 
 | 
						|
    dollarCodeElem.forEach(function(elem) {
 | 
						|
      elem.querySelectorAll('code').forEach(function (codeElem) {
 | 
						|
        makeSymbolClipboard(codeElem);
 | 
						|
      });
 | 
						|
    }) : null;
 | 
						|
 | 
						|
    gtCodeElem ?
 | 
						|
    gtCodeElem.forEach(function(elem) {
 | 
						|
      elem.querySelectorAll('code').forEach(function (codeElem) {
 | 
						|
        makeSymbolClipboard(codeElem);
 | 
						|
      });
 | 
						|
    }) : null;
 | 
						|
    // =================================================================
 | 
						|
  });
 | 
						|
</script> |