NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name DEV Zen mode
// @description Disable noise for zen reading (press Shift+Z to toggle)
// @author detunized
// @copyright 2019, detunized (https://detunized.net)
// @license MIT
// @homepageURL https://github.com/detunized/dev-zen-mode
// @version 0.1
// @match https://dev.to/*
// ==/UserScript==
(function() {
'use strict';
// From https://stackoverflow.com/a/18950690/362938
var H = window.history;
var oldPushState = H.pushState;
H.pushState = function (state) {
if (typeof H.onpushstate == "function") {
H.onpushstate ({state: state} );
}
return oldPushState.apply (H, arguments);
}
window.onpopstate = history.onpushstate = function (evt) {
if ($dev_zen_mode_on) {
toggleZen();
}
}
var $dev_zen_mode_on = false;
function isArticle() {
return !!document.getElementById("article-show-container");
}
function toggleZen(key) {
var display = $dev_zen_mode_on ? "" : "none";
var ids = ["top-bar", "article-reaction-actions", "article-show-primary-sticky-nav", "additional-content-area", "footer-container"];
ids.forEach(id => {
var e = document.getElementById(id);
if (e) {
e.style.display = display;
}
});
var classes = ["show-page-content-display", "more-articles"];
classes.forEach(cls => {
for (let e of document.getElementsByClassName(cls)) {
e.style.display = display;
}
});
$dev_zen_mode_on = !$dev_zen_mode_on;
}
function handleKeyEvent(key) {
if (key.key == "Z" && key.shiftKey && isArticle()) {
toggleZen();
}
}
document.addEventListener("keydown", handleKeyEvent, false);
})();