Skip to content

Instantly share code, notes, and snippets.

@markbao
Last active December 20, 2015 13:09
Show Gist options
  • Save markbao/6136175 to your computer and use it in GitHub Desktop.
Save markbao/6136175 to your computer and use it in GitHub Desktop.
Quip Focus: A bookmarklet that lets you hide the discussion pane when viewing a Quip document, so you can focus on your writing.
// Quip Focus
// by Mark Bao
// Unlicensed: <http://unlicense.org/>
// Initialize dat CSS. Anyone know of a better way?
var qf_css = 'a.quip-focus {width: 32px; height: 32px; position: absolute; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyM0U3OTdDMEYzMTkxMUUyOTQ4REY3RDQ0OUQ4RTM2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyM0U3OTdDMUYzMTkxMUUyOTQ4REY3RDQ0OUQ4RTM2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjIzRTc5N0JFRjMxOTExRTI5NDhERjdENDQ5RDhFMzY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjIzRTc5N0JGRjMxOTExRTI5NDhERjdENDQ5RDhFMzY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+gCeSsQAACCJJREFUeNrsW2ts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); -webkit-background-size: 32px; background-size: 32px; bottom: 5px; left: 5px; z-index: 100000; display: block; transition: all 0.5s ease-in-out; -webkit-transition: all 0.5s ease-in-out;} a.quip-focus:before { height: 32px; -webkit-background-size: 32px; background-size: 32px; width: 32px; opacity: 1; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoyM0U3OTdCQ0YzMTkxMUUyOTQ4REY3RDQ0OUQ4RTM2NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoyM0U3OTdCREYzMTkxMUUyOTQ4REY3RDQ0OUQ4RTM2NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkM0NkZFMEZGRjMxNzExRTI5NDhERjdENDQ5RDhFMzY3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkM0NkZFMTAwRjMxNzExRTI5NDhERjdENDQ5RDhFMzY3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+3iXpBgAACCNJREFUeNrsW2ts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); content: ""; position: absolute; transition: all 0.3s ease-in-out; -webkit-transition: all 0.3s ease-in-out; } a.quip-focus:hover:before { width: 10px; } a.quip-focus-active:before { width: 10px; } a.quip-focus-active:hover:before { width: 32px; }',
qf_head = document.head,
qf_style = document.createElement('style');
qf_style.type = 'text/css';
if (qf_style.styleSheet){
qf_style.styleSheet.cssText = qf_css;
} else {
qf_style.appendChild(document.createTextNode(qf_css));
}
// Lock and load.
qf_head.appendChild(qf_style);
// Let's add that toggle button to the DOM.
var qf_document = document.querySelectorAll('.thread-document .document')[0],
qf_a = document.createElement('a');
qf_a.className = 'quip-focus';
qf_a.href = 'javascript:qf_toggle();';
qf_document.appendChild(qf_a);
var qf_active = false;
// Function for toggle
function qf_toggle() {
var newClassName;
var newLeftValue;
var newNavDisplay;
var qf_a = document.querySelectorAll('.quip-focus')[0];
if (qf_a.className == 'quip-focus') {
newClassName = 'quip-focus quip-focus-active'; // Set active state on button
newLeftValue = '-1px'; // Slide the document over
newNavDisplay = 'none'; // Hide the discussion nav that displays above doc
qf_active = true;
} else {
newClassName = 'quip-focus'; // Remove active state on button
newLeftValue = '350px'; // Slide the document back
newNavDisplay = 'block'; // Show the discussion nav again
qf_active = true;
}
qf_a.className = newClassName;
document.querySelectorAll('.thread-document')[0].style.transition = 'all 0.2s ease-in-out';
document.querySelectorAll('.thread-document')[0].style.webkitTransition = 'all 0.2s ease-in-out';
document.querySelectorAll('.thread-document')[0].style.left = newLeftValue;
document.querySelectorAll('nav[data-click=messages]')[0].style.display = newNavDisplay;
}
window.qf_toggle = qf_toggle;
@flickapp
Copy link

flickapp commented Oct 7, 2013

this no longer works, correct?

@markbao
Copy link
Author

markbao commented Oct 8, 2013

Still works—used it in Chrome today.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment