Skip to content

Instantly share code, notes, and snippets.

@DenVdmj
Last active June 21, 2018 07:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DenVdmj/f3edaf803d0678e6a2ab946ef8b80f94 to your computer and use it in GitHub Desktop.
Save DenVdmj/f3edaf803d0678e6a2ab946ef8b80f94 to your computer and use it in GitHub Desktop.
Toggle left sidebar button for jsfiddle.net
const prefix = 'VdMj';
const class_hidden = `${prefix}-hidden-sidebar`;
const class_button = `${prefix}-menu-button`;
const styles = [
`body.${class_hidden} #sidebar { display: none !important }`,
`body.${class_hidden} #content { margin-left: 0 !important }`,
`#actions > nav > div:first-child > a.${class_button} {
font-size: 1.6em;
font-family: segoe ui symbol, apple color emoji, segoe ui emoji, notocoloremoji, android emoji, emojisymbols, emojione mozilla;
}`
];
const newMenuButton = (text, title, href, onclick) => {
const div = doc.createElement('div');
const a = doc.createElement('a');
div.appendChild(a);
div.classList.add('actionItem');
a.classList.add('aiButton', '${class_button}');
a.textContent = text;
a.onclick = onclick;
a.title = title;
a.href = href;
if (href) a.target = '_blank';
return div;
}
const doc = document,
body = doc.body,
style = doc.createElement('style');
//
// Add buttons: ☰, ⇪ Preview
//
const storage = localStorage;
const update = (el, cl, flag) => {
el.textContent = flag ? '⋮' : '☰';
flag ? cl.add(class_hidden) : cl.remove(class_hidden);
}
const buttonToggleSidebar = newMenuButton('☰', 'Hide left sidebar menu', '', function () {
update(this, body.classList, storage[class_hidden] ^= 1);
return false;
});
// https://jsfiddle.net/css/dist-editor-dark.css
const theme = doc.querySelector('link#editor-theme[rel="stylesheet"][href*="dark.css"]') ? 'dark/' : '';
const buttonPreviewMode = newMenuButton('⇪ Preview', 'Switch to preview mode',
doc.location.href.replace(/\/*(?:#.*?)?$/, '/embedded/result,html,css,js/') + theme);
const target = doc.querySelector('#actions > nav');
target.insertBefore(buttonToggleSidebar, target.firstChild);
if (doc.getElementById('editor')) {
target.appendChild(buttonPreviewMode);
}
update(buttonToggleSidebar.firstChild, body.classList, storage[class_hidden] *= 1);
doc.head.appendChild(style);
styles.forEach((rule, index) =>
style.sheet.insertRule(rule, index));
Display the source blob
Display the rendered blob
Raw
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
{
"manifest_version": 2,
"name": "Toggle sidebar button for jsfiddle.net",
"description": "Toggle left sidebar button for jsfiddle.net",
"version": "0.0.0.1",
"icons": {
"32": "ico/jsfiddle-32x32.png",
"48": "ico/jsfiddle-48x48.png",
"128": "ico/jsfiddle-128x128.png",
"256": "ico/jsfiddle-256x256.png"
},
"content_scripts": [{
"js": ["jsfiddle.js"],
"matches": ["*://jsfiddle.net/*"],
"run_at": "document_end"
}],
"permissions": ["*://jsfiddle.net/*"]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment