From eb7f35a08f5ac50aad172374d26e3358277637ba Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Thu, 5 May 2022 20:59:39 -0400 Subject: [PATCH 1/6] Fix #35 --- src/index.js | 18 ++++++++++++++++++ src/manifest.json | 1 + src/style.css | 12 ++++++++++++ 3 files changed, 31 insertions(+) create mode 100644 src/index.js diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000..171cca9 --- /dev/null +++ b/src/index.js @@ -0,0 +1,18 @@ +// Copyright (C) 2022 Katsute + +"use strict"; + +if(window.location.pathname.includes("/projects/")) + setInterval(updateProjects, 1000 * 1); + +function updateProjects(){ + const paths = document.querySelectorAll(`path[d="M11.28 6.78a.75.75 0 00-1.06-1.06L7.25 8.69 5.78 7.22a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l3.5-3.5z"]`); + + // sidebar + for(const path of paths){ + if(path.parentElement.parentElement.tagName.toLowerCase() == "span"){ + path.parentElement.parentElement.classList.add("rissue-closed-bg"); + break; + } + } +} \ No newline at end of file diff --git a/src/manifest.json b/src/manifest.json index b16fc34..512c866 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -14,6 +14,7 @@ "permissions": [], "content_scripts": [{ + "js": ["index.js"], "css": ["style.css"], "matches": ["https://github.com/*"] }] diff --git a/src/style.css b/src/style.css index c4a1149..6855e8f 100644 --- a/src/style.css +++ b/src/style.css @@ -33,4 +33,16 @@ div[data-hovercard-subject-tag^="issue:"] path[d="M16 8A8 8 0 110 8a8 8 0 0116 0 /* pull timeline closed mention label override */ .pull-discussion-timeline .TimelineItem > .TimelineItem-body div[id^="ref-pullrequest-"] ~ div span.State.State--merged { background-color: var(--rissue-pull-merged) !important; +} + +/* js overrides */ + +.rissue-closed-fg { + color: var(--rissue-issue-closed-fg) !important; + transition: color ease-in-out .5s; +} + +.rissue-closed-bg { + background-color: var(--rissue-issue-closed) !important; + transition: background-color ease-in-out .5s; } \ No newline at end of file From d924367e3edce51c4325c4b6e71a7cf8b61c6b7e Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Sun, 8 May 2022 13:24:27 -0400 Subject: [PATCH 2/6] fix close issue button on sidebar --- src/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 171cca9..d3a46c5 100644 --- a/src/index.js +++ b/src/index.js @@ -10,7 +10,10 @@ function updateProjects(){ // sidebar for(const path of paths){ - if(path.parentElement.parentElement.tagName.toLowerCase() == "span"){ + if( + path.parentElement.parentElement.tagName.toLowerCase() == "span" && + path.parentElement.parentElement.parentElement.tagName.toLowerCase() != "button" + ){ path.parentElement.parentElement.classList.add("rissue-closed-bg"); break; } From 9b3f22a91baed235126d8c01600ebae7c905ebf7 Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Tue, 17 May 2022 17:54:30 -0400 Subject: [PATCH 3/6] use event listener --- src/index.js | 29 ++++++++++++++--------------- src/style.css | 2 -- 2 files changed, 14 insertions(+), 17 deletions(-) diff --git a/src/index.js b/src/index.js index d3a46c5..b8a6f24 100644 --- a/src/index.js +++ b/src/index.js @@ -2,20 +2,19 @@ "use strict"; -if(window.location.pathname.includes("/projects/")) - setInterval(updateProjects, 1000 * 1); - -function updateProjects(){ - const paths = document.querySelectorAll(`path[d="M11.28 6.78a.75.75 0 00-1.06-1.06L7.25 8.69 5.78 7.22a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l3.5-3.5z"]`); - - // sidebar - for(const path of paths){ - if( - path.parentElement.parentElement.tagName.toLowerCase() == "span" && - path.parentElement.parentElement.parentElement.tagName.toLowerCase() != "button" - ){ - path.parentElement.parentElement.classList.add("rissue-closed-bg"); - break; +if(window.location.pathname.includes("/projects/")){ + const init = setInterval(() => { + const overlay = document.getElementById("__primerPortalRoot__"); + if(overlay != null){ + overlay.addEventListener("DOMNodeInserted", (e) => { // on element added + if(e.target.tagName && e.target.tagName.toLowerCase() == "svg") // find svg + for(const child of e.target.children) // check if issue + if(child.getAttribute("d") == `M11.28 6.78a.75.75 0 00-1.06-1.06L7.25 8.69 5.78 7.22a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l3.5-3.5z`) + return setInterval(() => { + e.target.parentElement.classList.add("rissue-closed-bg"); // apply css + }, 100); // must be delayed, GitHub keeps removing the class if we add immediately + }); + clearInterval(init); } - } + }, 1000 * 1); // repeat until overlay element exists } \ No newline at end of file diff --git a/src/style.css b/src/style.css index 6855e8f..5e031da 100644 --- a/src/style.css +++ b/src/style.css @@ -39,10 +39,8 @@ div[data-hovercard-subject-tag^="issue:"] path[d="M16 8A8 8 0 110 8a8 8 0 0116 0 .rissue-closed-fg { color: var(--rissue-issue-closed-fg) !important; - transition: color ease-in-out .5s; } .rissue-closed-bg { background-color: var(--rissue-issue-closed) !important; - transition: background-color ease-in-out .5s; } \ No newline at end of file From e2ae159410b8a849eff67dad7e6786fcd0182fe9 Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Thu, 19 May 2022 17:47:55 -0400 Subject: [PATCH 4/6] Update index.js --- src/index.js | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/src/index.js b/src/index.js index b8a6f24..202eb84 100644 --- a/src/index.js +++ b/src/index.js @@ -2,19 +2,24 @@ "use strict"; -if(window.location.pathname.includes("/projects/")){ +const whenElementAdded = (selector, f) => { const init = setInterval(() => { - const overlay = document.getElementById("__primerPortalRoot__"); - if(overlay != null){ - overlay.addEventListener("DOMNodeInserted", (e) => { // on element added - if(e.target.tagName && e.target.tagName.toLowerCase() == "svg") // find svg - for(const child of e.target.children) // check if issue - if(child.getAttribute("d") == `M11.28 6.78a.75.75 0 00-1.06-1.06L7.25 8.69 5.78 7.22a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l3.5-3.5z`) - return setInterval(() => { - e.target.parentElement.classList.add("rissue-closed-bg"); // apply css - }, 100); // must be delayed, GitHub keeps removing the class if we add immediately - }); + const e = document.querySelector(selector); + if(e != null){ + f(e); clearInterval(init); } - }, 1000 * 1); // repeat until overlay element exists -} \ No newline at end of file + }, 1000 * 1); +} + +if(window.location.pathname.toLowerCase().includes("/projects/")) + whenElementAdded(`#__primerPortalRoot__`, (e) => { + e.addEventListener("DOMNodeInserted", (i) => { + if(i.target.tagName && i.target.tagName.toLowerCase() == "svg") // find svg + for(const child of i.target.children) // check svg content + if(child.getAttribute("d") == "M11.28 6.78a.75.75 0 00-1.06-1.06L7.25 8.69 5.78 7.22a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l3.5-3.5z") // checkmark + setTimeout(() => { + i.target.parentElement.classList.add("rissue-closed-bg"); // apply css + }, 100); // doesn't work unless we delay + }); + }); \ No newline at end of file From 4862cbfabfb4e9c472ce6eb0516d1cf541f21e2c Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Thu, 19 May 2022 17:58:32 -0400 Subject: [PATCH 5/6] Update index.js --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 202eb84..78abab9 100644 --- a/src/index.js +++ b/src/index.js @@ -18,7 +18,7 @@ if(window.location.pathname.toLowerCase().includes("/projects/")) if(i.target.tagName && i.target.tagName.toLowerCase() == "svg") // find svg for(const child of i.target.children) // check svg content if(child.getAttribute("d") == "M11.28 6.78a.75.75 0 00-1.06-1.06L7.25 8.69 5.78 7.22a.75.75 0 00-1.06 1.06l2 2a.75.75 0 001.06 0l3.5-3.5z") // checkmark - setTimeout(() => { + return setTimeout(() => { i.target.parentElement.classList.add("rissue-closed-bg"); // apply css }, 100); // doesn't work unless we delay }); From 402f69097e0447eeedf8f1161931094de01c9a7b Mon Sep 17 00:00:00 2001 From: Katsute <58778985+Katsute@users.noreply.github.com> Date: Sat, 21 May 2022 22:45:31 -0400 Subject: [PATCH 6/6] update & prune deps --- package-lock.json | 115 +++++++++++++++------------------------------- 1 file changed, 37 insertions(+), 78 deletions(-) diff --git a/package-lock.json b/package-lock.json index fa84a77..ecdd90e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,13 +21,13 @@ "dev": true }, "node_modules/archiver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", - "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", "dev": true, "dependencies": { "archiver-utils": "^2.1.0", - "async": "^3.2.0", + "async": "^3.2.3", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", "readdir-glob": "^1.0.0", @@ -169,7 +169,7 @@ "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "engines": { "node": "*" @@ -203,14 +203,10 @@ "dev": true }, "node_modules/crc-32": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", - "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.3.1" - }, "bin": { "crc32": "bin/crc32.njs" }, @@ -240,15 +236,6 @@ "once": "^1.4.0" } }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, "node_modules/fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -262,15 +249,15 @@ "dev": true }, "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -282,9 +269,9 @@ } }, "node_modules/graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "node_modules/ieee754": { @@ -402,9 +389,9 @@ "dev": true }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -440,18 +427,6 @@ "node": ">=0.10.0" } }, - "node_modules/printj": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", - "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", - "dev": true, - "bin": { - "printj": "bin/printj.njs" - }, - "engines": { - "node": ">=0.8" - } - }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -583,13 +558,13 @@ "dev": true }, "archiver": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.0.tgz", - "integrity": "sha512-iUw+oDwK0fgNpvveEsdQ0Ase6IIKztBJU2U0E9MzszMfmVVUyv1QJhS2ITW9ZCqx8dktAxVAjWWkKehuZE8OPg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.1.tgz", + "integrity": "sha512-8KyabkmbYrH+9ibcTScQ1xCJC/CGcugdVIwB+53f5sZziXgwUh3iXlAlANMxcZyDEfTHMe6+Z5FofV8nopXP7w==", "dev": true, "requires": { "archiver-utils": "^2.1.0", - "async": "^3.2.0", + "async": "^3.2.3", "buffer-crc32": "^0.2.1", "readable-stream": "^3.6.0", "readdir-glob": "^1.0.0", @@ -699,7 +674,7 @@ "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, "compress-commons": { @@ -727,14 +702,10 @@ "dev": true }, "crc-32": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.1.tgz", - "integrity": "sha512-Dn/xm/1vFFgs3nfrpEVScHoIslO9NZRITWGz/1E/St6u4xw99vfZzVkW0OSnzx2h9egej9xwMCEut6sqwokM/w==", - "dev": true, - "requires": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.3.1" - } + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true }, "crc32-stream": { "version": "4.0.2", @@ -755,12 +726,6 @@ "once": "^1.4.0" } }, - "exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "dev": true - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -774,23 +739,23 @@ "dev": true }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "graceful-fs": { - "version": "4.2.9", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.9.tgz", - "integrity": "sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==", + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", "dev": true }, "ieee754": { @@ -893,9 +858,9 @@ "dev": true }, "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -922,12 +887,6 @@ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, - "printj": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.3.1.tgz", - "integrity": "sha512-GA3TdL8szPK4AQ2YnOe/b+Y1jUFwmmGMMK/qbY7VcE3Z7FU8JstbKiKRzO6CIiAKPhTO8m01NoQ0V5f3jc4OGg==", - "dev": true - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",