Greasy Fork

Greasy Fork is available in English.

GitHub Toggle Expanders

A userscript that toggles all expanders when one expander is shift-clicked

目前为 2016-09-29 提交的版本。查看 最新版本

// ==UserScript==
// @name          GitHub Toggle Expanders
// @version       1.0.2
// @description   A userscript that toggles all expanders when one expander is shift-clicked
// @license       https://creativecommons.org/licenses/by-sa/4.0/
// @namespace     https://github.com/Mottie
// @include       https://github.com/*
// @run-at        document-idle
// @author        Rob Garrison
// ==/UserScript==
/* jshint esnext:true, unused:true */
(() => {
	"use strict";

	function toggle(el) {
		const state = closest(el, ".commits-list-item, .js-details-container")
			.classList.contains("open"),
			// target buttons inside commits_bucket - fixes #8
			selector = `.commits-listing .commits-list-item,
				#commits_bucket .js-details-container`;
		Array.from(document.querySelectorAll(selector)).forEach(el => {
			el.classList[state ? "add" : "remove"]("open");
		});
	}

	function closest(el, selector) {
		while (el && el.nodeName !== "BODY" && !el.matches(selector)) {
			el = el.parentNode;
		}
		return el && el.matches(selector) ? el : [];
	}

	document.body.addEventListener("click", event => {
		const target = event.target;
		if (
			target && event.getModifierState("Shift") &&
			target.matches(".ellipsis-expander")
		) {
			// give GitHub time to add the class
			setTimeout(() => {
				toggle(target);
			}, 100);
		}
	});

})();