(className: string, root: ParentNode = document.head || document)
| 44 | let staticStyleMap = new WeakMap<ParentNode, Map<string, HTMLStyleElement>>(); |
| 45 | |
| 46 | function 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. |
no test coverage detected