@xiee/utils
Version:
Miscellaneous tools and utilities to manipulate HTML pages
25 lines (24 loc) • 943 B
JavaScript
// toggle output of source code by clicking on source code
(() => {
const blocks = [];
document.querySelectorAll('pre>code[class^=language-],pre[class^=language-]').forEach(el => {
// if <code> is selected, use its parent
if (el.tagName === 'CODE' && el.parentNode.tagName === 'PRE') el = el.parentNode;
blocks.indexOf(el) < 0 && blocks.push(el);
});
let s1, s2; // local and global show/hide status
blocks.forEach(el => {
el.onclick = e => {
let sb = el.nextElementSibling;
while (sb && blocks.indexOf(sb) < 0) {
s1 = s2; // use global status if exists
if (s1 === undefined) s1 = sb.style.display === '';
sb.style.display = s1 ? 'none' : '';
sb = sb.nextElementSibling;
}
// Alt/Ctrl + Click to toggle all output
(e.altKey || e.ctrlKey) && (s2 = s1, blocks.forEach(b => b !== el && b.click()), s2 = undefined);
s1 = undefined;
};
});
})();