71 lines
1.7 KiB
JavaScript
71 lines
1.7 KiB
JavaScript
var domUtils = (function (exports) {
|
|
'use strict';
|
|
|
|
const range = document.createRange();
|
|
|
|
function parseHTML(html) {
|
|
return range.createContextualFragment(html);
|
|
}
|
|
|
|
// equivalent to jQuery's :visble
|
|
function isVisible(el) {
|
|
return !!(el.offsetWidth || el.offsetHeight || el.getClientRects().length);
|
|
}
|
|
|
|
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';
|
|
}
|
|
|
|
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 = '';
|
|
}
|
|
}
|
|
|
|
function emptyChildNodes(el) {
|
|
if (el.firstChild) {
|
|
el.removeChild(el.firstChild);
|
|
emptyChildNodes(el);
|
|
}
|
|
}
|
|
|
|
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);
|
|
});
|
|
}
|
|
}
|
|
|
|
exports.emptyChildNodes = emptyChildNodes;
|
|
exports.hideElement = hideElement;
|
|
exports.isVisible = isVisible;
|
|
exports.parseHTML = parseHTML;
|
|
exports.replaceChildNodes = replaceChildNodes;
|
|
exports.showElement = showElement;
|
|
|
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
|
return exports;
|
|
|
|
})({});
|