const range = document.createRange(); export function parseHTML(html) { return range.createContextualFragment(html); } // equivalent to jQuery's :visble export function isVisible(el) { return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length); } export function hideElement(el) { if (el.style.display === 'none') { return; } // back up the existing display setting in data-style-display if (el.style.display) { el.dataset.styleDisplay = el.style.display; } el.style.display = 'none'; } export function showElement(el) { if (el.style.display !== 'none') { return; } if (el.dataset.styleDisplay) { // restore backed-up dispay property el.style.display = el.dataset.styleDisplay; delete el.dataset.styleDisplay; } else { el.style.display = ''; } } export function emptyChildNodes(el) { if (el.firstChild) { el.removeChild(el.firstChild); emptyChildNodes(el); } } export function replaceChildNodes(el, newChildNodes) { emptyChildNodes(el); if (newChildNodes instanceof DocumentFragment) { el.appendChild(newChildNodes); } else if (typeof newChildNodes === 'string') { el.appendChild(parseHTML(newChildNodes)); } else if (typeof newChildNodes.forEach === 'function') { newChildNodes.forEach((node) => { el.appendChild(node); }); } }