mirror of
https://github.com/flysnow-org/maupassant-hugo.git
synced 2026-08-24 15:28:55 +00:00
76 lines
2.3 KiB
HTML
76 lines
2.3 KiB
HTML
{{- if (and (eq .Kind "page") (in (slice "post" "posts") .Type)) }}
|
|
<style type="text/css">
|
|
div.highlight {
|
|
position: relative;
|
|
margin: 1em 0px;
|
|
}
|
|
|
|
.copy-code {
|
|
display: none;
|
|
position: absolute;
|
|
top: 4px;
|
|
right: 4px;
|
|
color: rgba(255, 255, 255, 0.8);
|
|
background: rgba(78, 78, 78, 0.8);
|
|
border-radius: var(--radius);
|
|
padding: 0 5px;
|
|
font: inherit;
|
|
user-select: none;
|
|
cursor: pointer;
|
|
border: 0;
|
|
--radius: 8px;
|
|
}
|
|
|
|
div.highlight:hover .copy-code,pre:hover .copy-code {
|
|
display: block;
|
|
}
|
|
|
|
</style>
|
|
<script>
|
|
document.querySelectorAll('pre > code').forEach((codeblock) => {
|
|
const container = codeblock.parentNode.parentNode;
|
|
|
|
const copybutton = document.createElement('button');
|
|
copybutton.classList.add('copy-code');
|
|
copybutton.innerHTML = 'copy';
|
|
|
|
function copyingDone() {
|
|
copybutton.innerHTML = 'copied!';
|
|
setTimeout(() => {
|
|
copybutton.innerHTML = 'copy';
|
|
}, 2000);
|
|
}
|
|
|
|
copybutton.addEventListener('click', (cb) => {
|
|
if ('clipboard' in navigator) {
|
|
navigator.clipboard.writeText(codeblock.textContent);
|
|
copyingDone();
|
|
return;
|
|
}
|
|
|
|
const range = document.createRange();
|
|
range.selectNodeContents(codeblock);
|
|
const selection = window.getSelection();
|
|
selection.removeAllRanges();
|
|
selection.addRange(range);
|
|
try {
|
|
document.execCommand('copy');
|
|
copyingDone();
|
|
} catch (e) { };
|
|
selection.removeRange(range);
|
|
});
|
|
|
|
if (container.classList.contains("highlight")) {
|
|
container.appendChild(copybutton);
|
|
} else if (container.parentNode.firstChild == container) {
|
|
// td containing LineNos
|
|
} else if (codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE") {
|
|
// table containing LineNos and code
|
|
codeblock.parentNode.parentNode.parentNode.parentNode.parentNode.appendChild(copybutton);
|
|
} else {
|
|
// code blocks not having highlight as parent class
|
|
codeblock.parentNode.appendChild(copybutton);
|
|
}
|
|
});
|
|
</script>
|
|
{{- end }} |