diff options
| author | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-03-25 09:21:11 +0530 |
|---|---|---|
| committer | Arpit Chakladar <54011232+arpitchakladar@users.noreply.github.com> | 2023-03-25 09:36:24 +0530 |
| commit | d6682a1ed9acd31dbfdb9e645cc8230c61a268c3 (patch) | |
| tree | 63c5577b701c377896f4aa2985adf67f7aa3d679 /src/utils/modify-dom.ts | |
| parent | feac7acb91a78b117241abdd0a5d80f778e15f06 (diff) | |
| download | banglar-bhumi-utils-d6682a1ed9acd31dbfdb9e645cc8230c61a268c3.tar.gz banglar-bhumi-utils-d6682a1ed9acd31dbfdb9e645cc8230c61a268c3.zip | |
Disable minification in development.
Diffstat (limited to 'src/utils/modify-dom.ts')
| -rw-r--r-- | src/utils/modify-dom.ts | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/src/utils/modify-dom.ts b/src/utils/modify-dom.ts index da0944b..f08f7d9 100644 --- a/src/utils/modify-dom.ts +++ b/src/utils/modify-dom.ts @@ -1,41 +1,35 @@ import { observeDOM } from "@/utils/observe-dom"; -type Replacements = { - [key: string]: string | null +type DOMReplacements = { + innerHTML?: string; + [key: string]: string | undefined | null; }; -export class DOMModifier { - selector: string; - attributes: Replacements; - constructor(selector: string, attributes: Replacements) { - this.selector = selector; - this.attributes = attributes; - } -} +type DOMModificaitonRule = readonly [string, DOMReplacements]; -export const modifyDOM = (elements: (DOMModifier | null)[]) => { +export const modifyDOM = (modificationRules: (DOMModificaitonRule | null)[]) => { let count = 0; observeDOM(() => { - for (let i = 0; i < elements.length; i++) { - if (elements[i]) { - const element = document.querySelector(elements[i]!.selector) as HTMLElement | null; + for (let i = 0; i < modificationRules.length; i++) { + if (modificationRules[i]) { + const element = document.querySelector(modificationRules[i]![0]) as HTMLElement | null; if (element) { - const attributes = elements[i]!.attributes as any; + const attributes = modificationRules[i]![1] as DOMReplacements; if (attributes.innerHTML) { - element.innerHTML = attributes.innerHTML; + element.innerHTML = attributes.innerHTML as string; } delete attributes.innerHTML; for (const attribute in attributes) { if (attributes[attribute] === null) { element.removeAttribute(attribute); } else { - element.setAttribute(attribute, attributes[attribute]); + element.setAttribute(attribute, attributes[attribute] as string); } } - elements[i] = null; + modificationRules[i] = null; count++; - if (count >= elements.length) { + if (count >= modificationRules.length) { return true; } } |
