function escapeHtml(text: string): string { const div = document.createElement("div"); div.textContent = text; return div.innerHTML; } function querySelector(selector: string): T | null { return document.querySelector(selector); } function querySelectorAll(selector: string): NodeListOf { return document.querySelectorAll(selector); } function getElementById(id: string): T | null { return document.getElementById(id) as T | null; } function createElement( tagName: K, attributes?: Record, children?: (string | Node)[], ): HTMLElementTagNameMap[K] { const element = document.createElement(tagName); if (attributes) { Object.entries(attributes).forEach(([key, value]) => { if (key === "className") { element.className = value; } else if (key === "dataset") { Object.entries(JSON.parse(value)).forEach(([dataKey, dataValue]) => { element.dataset[dataKey] = String(dataValue); }); } else { element.setAttribute(key, value); } }); } if (children) { children.forEach((child) => { if (typeof child === "string") { element.appendChild(document.createTextNode(child)); } else { element.appendChild(child); } }); } return element; } function showElement(element: HTMLElement | null): void { if (element) { element.classList.remove("hidden"); } } function hideElement(element: HTMLElement | null): void { if (element) { element.classList.add("hidden"); } } function toggleElement(element: HTMLElement | null): void { if (element) { element.classList.toggle("hidden"); } } function setTextContent(element: HTMLElement | null, text: string): void { if (element) { element.textContent = text; } } function setInnerHTML(element: HTMLElement | null, html: string): void { if (element) { element.innerHTML = html; } } function addClass(element: HTMLElement | null, className: string): void { if (element) { element.classList.add(className); } } function removeClass(element: HTMLElement | null, className: string): void { if (element) { element.classList.remove(className); } } function toggleClass(element: HTMLElement | null, className: string): void { if (element) { element.classList.toggle(className); } } function hasClass(element: HTMLElement | null, className: string): boolean { return element ? element.classList.contains(className) : false; } (window as any).dom = { escapeHtml, querySelector, querySelectorAll, getElementById, createElement, showElement, hideElement, toggleElement, setTextContent, setInnerHTML, addClass, removeClass, toggleClass, hasClass, }; export { escapeHtml, querySelector, querySelectorAll, getElementById, createElement, showElement, hideElement, toggleElement, setTextContent, setInnerHTML, addClass, removeClass, toggleClass, hasClass, };