MCPcopy Index your code
hub / github.com/darkreader/darkreader / createOrUpdateStyle

Function createOrUpdateStyle

src/inject/dynamic-theme/index.ts:46–65  ·  view source on GitHub ↗
(className: string, root: ParentNode = document.head || document)

Source from the content-addressed store, hash-verified

44let staticStyleMap = new WeakMap<ParentNode, Map<string, HTMLStyleElement>>();
45
46function createOrUpdateStyle(className: string, root: ParentNode = document.head || document): HTMLStyleElement {
47 let element: HTMLStyleElement | null = root.querySelector(`.${className}`);
48 if (!staticStyleMap.has(root)) {
49 staticStyleMap.set(root, new Map());
50 }
51 const classMap = staticStyleMap.get(root)!;
52 if (element) {
53 classMap.set(className, element);
54 } else if (classMap.has(className)) {
55 element = classMap.get(className)!;
56 } else {
57 element = document.createElement('style');
58 element.classList.add('darkreader');
59 element.classList.add(className);
60 element.media = 'screen';
61 element.textContent = '';
62 classMap.set(className, element);
63 }
64 return element;
65}
66
67/**
68 * Note: This function is used only with MV2.

Callers 6

loadingStartFunction · 0.70
watchForUpdatesFunction · 0.70

Calls 4

addMethod · 0.80
hasMethod · 0.65
setMethod · 0.65
getMethod · 0.65

Tested by

no test coverage detected