refactor: simplify dedupe module

This commit is contained in:
2026-06-06 16:54:19 +02:00
committed by Milas Holsting
parent 44786455b4
commit ac02fb9b71

View File

@@ -1,3 +1,5 @@
import { onHtmxLoad, onReady } from "./utils";
const dedupeWithin = (root: ParentNode): void => { const dedupeWithin = (root: ParentNode): void => {
const seen = new Set<string>(); const seen = new Set<string>();
const elements = root.querySelectorAll<HTMLElement>(":scope > [data-id]"); const elements = root.querySelectorAll<HTMLElement>(":scope > [data-id]");
@@ -17,9 +19,9 @@ const dedupeWithin = (root: ParentNode): void => {
}); });
}; };
const dedupe = (): void => { const dedupe = (root: ParentNode = document): void => {
const containers = new Set<ParentNode>(); const containers = new Set<ParentNode>();
const elements = document.querySelectorAll<HTMLElement>("[data-id]"); const elements = root.querySelectorAll<HTMLElement>("[data-id]");
elements.forEach((item) => { elements.forEach((item) => {
if (item.parentElement) { if (item.parentElement) {
@@ -58,15 +60,6 @@ const dedupeSwapTarget = (target: EventTarget | null): void => {
}); });
}; };
if (document.readyState === "loading") { onReady(() => dedupe());
document.addEventListener("DOMContentLoaded", dedupe); window.addEventListener("load", () => dedupe());
} else { onHtmxLoad((root) => dedupeSwapTarget(root));
dedupe();
}
window.addEventListener("load", dedupe);
document.addEventListener("htmx:afterSwap", (event: Event): void => {
const customEvent = event as CustomEvent<{ target?: EventTarget | null }>;
dedupeSwapTarget(customEvent.detail?.target ?? event.target);
});