- Introduced a new HTML documentation page for the oradio API, including a JavaScript file to handle dynamic content and API requests. - Added a CSS file for styling the documentation page. - Implemented an underground station importer script that fetches data from Radio-Browser and writes it to a JSON file. - Created a stats module to compute and manage vote and play statistics for radio stations. - Added a polyfill for modulepreload to ensure compatibility with older browsers.
18 lines
836 B
JavaScript
18 lines
836 B
JavaScript
export function el(tag, props = {}, ...children) {
|
|
const node = document.createElement(tag);
|
|
for (const [k, v] of Object.entries(props || {})) {
|
|
if (k === 'class') node.className = v;
|
|
else if (k === 'style' && typeof v === 'object') Object.assign(node.style, v);
|
|
else if (k.startsWith('on') && typeof v === 'function') node.addEventListener(k.slice(2).toLowerCase(), v);
|
|
else if (k === 'html') node.innerHTML = v;
|
|
else if (v !== false && v != null) node.setAttribute(k, v === true ? '' : v);
|
|
}
|
|
for (const c of children.flat()) {
|
|
if (c == null || c === false) continue;
|
|
node.appendChild(c instanceof Node ? c : document.createTextNode(String(c)));
|
|
}
|
|
return node;
|
|
}
|
|
|
|
export function clear(node) { while (node.firstChild) node.removeChild(node.firstChild); }
|