Skip to content

Commit

Permalink
fix: reduced memory consumption for content script
Browse files Browse the repository at this point in the history
  • Loading branch information
amkhrjee committed Aug 14, 2024
1 parent 2ec4858 commit f7c409d
Showing 1 changed file with 30 additions and 21 deletions.
51 changes: 30 additions & 21 deletions ts/content.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,29 +6,24 @@ const changeFontFamily = (
sansSerif: string,
monospace: string
) => {
if (node.nodeType === 1) {
const computedStyle = window.getComputedStyle(node as Element);
const fontFamily = computedStyle.getPropertyValue("font-family");
if (node.nodeType !== Node.ELEMENT_NODE) return;

if (fontFamily) {
if (fontFamily.includes("sans") && sansSerif != "Default") {
(node as HTMLElement).style.fontFamily =
`'${sansSerif}', ${originalSansSerif}`;
} else if (fontFamily.includes("serif") && serif != "Default") {
(node as HTMLElement).style.fontFamily = `'${serif}', ${originalSerif}`;
} else if (fontFamily.includes("monospace") && monospace != "Default") {
(node as HTMLElement).style.fontFamily =
`'${monospace}', ${originalMonospace}`;
}
const element = node as HTMLElement;
const fontFamily = getComputedStyle(element).fontFamily;

if (fontFamily) {
if (fontFamily.includes("sans") && sansSerif !== "Default") {
element.style.fontFamily = `'${sansSerif}', ${originalSansSerif}`;
} else if (fontFamily.includes("serif") && serif !== "Default") {
element.style.fontFamily = `'${serif}', ${originalSerif}`;
} else if (fontFamily.includes("monospace") && monospace !== "Default") {
element.style.fontFamily = `'${monospace}', ${originalMonospace}`;
}
}

// Recursively process child nodes
for (const childNode of node.childNodes) {
changeFontFamily(childNode, serif, sansSerif, monospace);
new MutationObserver(() =>
changeFontFamily(childNode, serif, sansSerif, monospace)
).observe(childNode, { childList: true });
const childNodes = element.children;
for (let i = 0; i < childNodes.length; i++) {
changeFontFamily(childNodes[i], serif, sansSerif, monospace);
}
};

Expand All @@ -45,7 +40,14 @@ chrome.runtime.sendMessage(message, undefined, (response) => {
const serif = response.data.serif;
const sans_serif = response.data.sans_serif;
const monospace = response.data.monospace;
changeFontFamily(document.body, serif, sans_serif, monospace);
const observer = new MutationObserver((mutations) => {
for (const mutation of mutations) {
for (const addedNode of mutation.addedNodes) {
changeFontFamily(addedNode, serif, sans_serif, monospace);
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
}
});

Expand All @@ -57,7 +59,14 @@ chrome.runtime.onConnect.addListener((port) => {
const serif = message.data.serif;
const sans_serif = message.data.sans_serif;
const monospace = message.data.monospace;
changeFontFamily(document.body, serif, sans_serif, monospace);
const observer = new MutationObserver((mutations) => {
for (const mutation of mutations) {
for (const addedNode of mutation.addedNodes) {
changeFontFamily(addedNode, serif, sans_serif, monospace);
}
}
});
observer.observe(document.body, { childList: true, subtree: true });
} else if (message.type === "restore") {
location.reload();
} else if (message.type === "redirect") {
Expand Down

0 comments on commit f7c409d

Please sign in to comment.