-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathleetcode__article-widener.js
58 lines (54 loc) · 1.79 KB
/
leetcode__article-widener.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// ==UserScript==
// @name LeetCode solution article widener
// @namespace https://github.com/zica87/self-made-userscipts
// @version 2.0
// @description Add a toggle to widen the solution articles to view long code easier.
// @author zica
// @match https://leetcode.com/*
// @grant none
// @license GPL-3.0
// ==/UserScript==
(function () {
"use strict";
const solutionPageRegEx = new RegExp(
"https://leetcode.com/problems/.*/solutions/.*/"
);
const editorialPageRegEx = new RegExp(
"https://leetcode.com/problems/.*/editorial"
);
const toggle = document.createElement("button");
toggle.innerText = "←→";
toggle.onclick = () => {
if (toggle.innerText === "←→") {
const articles = document.getElementsByClassName("mx-auto");
for (const article of articles) {
article.style.maxWidth = "none";
}
toggle.innerText = "default width";
} else {
const articles = document.getElementsByClassName("mx-auto");
for (const article of articles) {
article.style = {};
}
toggle.innerText = "←→";
}
};
const observer = new MutationObserver((_, observerInstance) => {
if (
!solutionPageRegEx.test(window.location.href) &&
!editorialPageRegEx.test(window.location.href)
) {
return;
}
const topRightToolbar = document.getElementsByClassName("ml-4")[0];
if (topRightToolbar === undefined) {
return;
}
observerInstance.disconnect();
topRightToolbar.prepend(toggle);
});
observer.observe(document.body, {
childList: true,
subtree: true,
});
})();