From 5f23f07d04073c06af530332c2d75b48d6c023a0 Mon Sep 17 00:00:00 2001 From: Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> Date: Tue, 4 Apr 2023 14:53:04 +0530 Subject: Using different global variables for shared modules. --- src/shared/modify-dom.ts | 55 +++++++++++++++++++++++++----------------------- 1 file changed, 29 insertions(+), 26 deletions(-) (limited to 'src/shared/modify-dom.ts') diff --git a/src/shared/modify-dom.ts b/src/shared/modify-dom.ts index 337c879..21dfab0 100644 --- a/src/shared/modify-dom.ts +++ b/src/shared/modify-dom.ts @@ -4,44 +4,47 @@ type DOMReplacements = { innerHTML?: string; [key: string]: string | undefined | null; }; - type DOMModificaitonRule = readonly [string, DOMReplacements]; +type DOMModificationRules = (DOMModificaitonRule | null)[]; -export const modifyDOM = (modificationRules: (DOMModificaitonRule | null)[]) => { - let count = 0; +let domModificationRules: DOMModificationRules = []; +let domModificationFinishedCount = 0; - observeDOM(() => { - for (let i = 0; i < modificationRules.length; i++) { - if (modificationRules[i]) { - const element = document.querySelector(modificationRules[i]![0]) as HTMLElement | null; +observeDOM(() => { + for (let i = 0; i < domModificationRules.length; i++) { + if (domModificationRules[i]) { + const element = document.querySelector(domModificationRules[i]![0]) as HTMLElement | null; - if (element) { - const attributes = modificationRules[i]![1]; + if (element) { + const attributes = domModificationRules[i]![1]; - if (attributes.innerHTML) { - element.innerHTML = attributes.innerHTML as string; - } + if (attributes.innerHTML) { + element.innerHTML = attributes.innerHTML as string; + } - delete attributes.innerHTML; + delete attributes.innerHTML; - for (const attribute in attributes) { - if (attributes[attribute] === null) { - element.removeAttribute(attribute); - } else { - element.setAttribute(attribute, attributes[attribute] as string); - } + for (const attribute in attributes) { + if (attributes[attribute] === null) { + element.removeAttribute(attribute); + } else { + element.setAttribute(attribute, attributes[attribute] as string); } + } - modificationRules[i] = null; - count++; + domModificationRules[i] = null; + domModificationFinishedCount++; - if (count >= modificationRules.length) { - return true; - } + if (domModificationFinishedCount >= domModificationRules.length) { + return true; } } } + } + + return false; +}); - return false; - }); +export const modifyDOM = (modificationRules: DOMModificationRules) => { + domModificationRules = domModificationRules.concat(modificationRules); }; -- cgit v1.2.3