Skip to content

Commit

Permalink
Add support for userstyles in the popup
Browse files Browse the repository at this point in the history
It takes userstyles from stylus or enhancer for YouTube and copies them to the popup in an iframe
  • Loading branch information
ajayyy committed Nov 21, 2023
1 parent 52bd85b commit 5ffbc9c
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
33 changes: 31 additions & 2 deletions src/content.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2016,15 +2016,44 @@ function openInfoMenu() {
//hide info button
if (playerButtons.info) playerButtons.info.button.style.display = "none";


const popup = document.createElement("div");
popup.id = "sponsorBlockPopupContainer";

const frame = document.createElement("iframe");
frame.width = "374";
frame.height = "500";
frame.style.borderRadius = "12px";
frame.addEventListener("load", () => frame.contentWindow.postMessage("", "*"));
frame.addEventListener("load", async () => {
frame.contentWindow.postMessage("", "*");

// To support userstyles applying to the popup
const stylusStyle = document.querySelector(".stylus");
if (stylusStyle) {
frame.contentWindow.postMessage({
type: "style",
css: stylusStyle.textContent
}, "*");
}

const enhancerStyle = document.getElementById("efyt-theme");
if (enhancerStyle) {
const enhancerStyleVariables = document.getElementById("efyt-theme-variables");
if (enhancerStyleVariables) {
const enhancerCss = await fetch(enhancerStyle.getAttribute("href")).then((response) => response.text());
const enhancerVariablesCss = await fetch(enhancerStyleVariables.getAttribute("href")).then((response) => response.text());

if (enhancerCss && enhancerVariablesCss) {
frame.contentWindow.postMessage({
type: "style",
// Image needs needs to reference the full url now
css: enhancerCss.replace("./images/youtube-deep-dark/IconSponsorBlocker256px.png",
"https://raw.githubusercontent.com/RaitaroH/YouTube-DeepDark/master/YT_Images/IconSponsorBlocker256px.png")
+ enhancerVariablesCss
}, "*");
}
}
}
});
frame.src = chrome.extension.getURL("popup.html");
popup.appendChild(frame);

Expand Down
6 changes: 6 additions & 0 deletions src/popup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,12 @@ window.addEventListener("message", async (e): Promise<void> => {
if (e.source !== window.parent) return;
if (e.origin.endsWith('.youtube.com')) {
allowPopup = true;

if (e.data && e.data?.type === "style") {
const style = document.createElement("style");
style.textContent = e.data.css;
document.head.appendChild(style);
}
}
});

Expand Down

0 comments on commit 5ffbc9c

Please sign in to comment.