aboutsummaryrefslogtreecommitdiffstats
path: root/src/utils/modify-dom.ts
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2023-03-25 09:21:11 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2023-03-25 09:36:24 +0530
commitd6682a1ed9acd31dbfdb9e645cc8230c61a268c3 (patch)
tree63c5577b701c377896f4aa2985adf67f7aa3d679 /src/utils/modify-dom.ts
parentfeac7acb91a78b117241abdd0a5d80f778e15f06 (diff)
downloadbanglar-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.ts32
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;
}
}