// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-3.0 window.addEventListener("load", function() { // Get list of inline code elements var codes = document.getElementsByClassName("inline-code"); for (var i = 0; i < codes.length; i++) { var code = codes[i]; var input = code.getElementsByTagName("input")[0]; // Select all in input when clicked input.onclick = function(e) { var event = e || window.event; var target = event.target || event.srcElement; inputSelectAll(target); } // Add clipboard icon // TODO doesn't work on IE8 and below var themes = ["dark", "light"]; for (var j = 0; j < themes.length; j++) { var base = "/assets/icons/" + themes[j] + "-mode/"; var svg = document.createElement("source"); svg.type = "image/svg+xml"; svg.srcset = base + "copy.svg"; //var img = document.createElement("img"); var img = new Image(); img.style.zIndex = "3"; img.className = "inline-code-icon inline-code-icon-end " + themes[j]; img.setAttribute("data-theme", themes[j]); img.src = base + "copy.png"; img.alt = "Clipboard Icon"; img.title = "Copy to clipboard"; img.onclick = function(e) { var event = e || window.event; var target = event.target || event.srcElement; copyInputText( target.parentElement.parentElement.getElementsByTagName('input')[0], target, target.getAttribute("data-theme") ); }; var picture = document.createElement("picture"); picture.appendChild(svg); picture.appendChild(img); code.appendChild(picture); } } }, false); function copyInputText(input, clipboardIcon, theme) { inputSelectAll(input); var path; if (document.execCommand("copy")) { path = "/assets/icons/" + theme + "-mode/"; } else { console.log("no"); // TODO X icon } clipboardIcon.src = path + "check.svg"; clipboardIcon.previousSibling.srcset = path + "check.png"; inputDeselect(input); setTimeout(function() { clipboardIcon.src = path + "copy.svg"; clipboardIcon.previousSibling.srcset = path + "copy.png"; }, 1000); } function inputSelectAll(input) { input.focus(); if (input.select) input.select(); else input.setSelectionRange(0, this.value.length); } function inputDeselect(input) { if (input.blur) input.blur(); else input.setSelectionRange(0, 0); } // @license-end