UNPKG

willcore.ui

Version:

Simple, Fast And Powerful Client-Side HTML UI Framework.

38 lines (33 loc) 1.22 kB
import { loadHTML } from "../helpers/htmlLoader.js"; class viewDomLoader { constructor() { } async loadView(viewURL, viewId, html) { html = html || await loadHTML(`/root/${viewURL}.html`); html = this.getCleanedIdHTML(html, viewId); return html; } getCleanedIdHTML(html, viewId) { let newElement = document.createElement("div"); newElement.innerHTML = html; let allElements = newElement.querySelectorAll("*"); let ids = {}; allElements.forEach(elem => { if (elem.getAttribute("id")) { let id = elem.getAttribute("id"); if (id.indexOf(".") > -1) { let idParts = id.split("."); id = idParts[idParts.length - 1]; } id = `${viewId}.${id}`; elem.setAttribute("id", id); if (ids[id]) { throw "Duplicate Element IDs Detected!", `The view ${viewId} has more than one element with ID ${id}.`; } ids[id] = true; } }); return newElement.innerHTML; } } export { viewDomLoader };