You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
3.4 KiB
114 lines
3.4 KiB
|
2 years ago
|
function createElement(tagName, options) {
|
||
|
|
return document.createElement(tagName, options);
|
||
|
|
}
|
||
|
|
function createElementNS(namespaceURI, qualifiedName, options) {
|
||
|
|
return document.createElementNS(namespaceURI, qualifiedName, options);
|
||
|
|
}
|
||
|
|
function createDocumentFragment() {
|
||
|
|
return parseFragment(document.createDocumentFragment());
|
||
|
|
}
|
||
|
|
function createTextNode(text) {
|
||
|
|
return document.createTextNode(text);
|
||
|
|
}
|
||
|
|
function createComment(text) {
|
||
|
|
return document.createComment(text);
|
||
|
|
}
|
||
|
|
function insertBefore(parentNode, newNode, referenceNode) {
|
||
|
|
if (isDocumentFragment(parentNode)) {
|
||
|
|
let node = parentNode;
|
||
|
|
while (node && isDocumentFragment(node)) {
|
||
|
|
const fragment = parseFragment(node);
|
||
|
|
node = fragment.parent;
|
||
|
|
}
|
||
|
|
parentNode = node !== null && node !== void 0 ? node : parentNode;
|
||
|
|
}
|
||
|
|
if (isDocumentFragment(newNode)) {
|
||
|
|
newNode = parseFragment(newNode, parentNode);
|
||
|
|
}
|
||
|
|
if (referenceNode && isDocumentFragment(referenceNode)) {
|
||
|
|
referenceNode = parseFragment(referenceNode).firstChildNode;
|
||
|
|
}
|
||
|
|
parentNode.insertBefore(newNode, referenceNode);
|
||
|
|
}
|
||
|
|
function removeChild(node, child) {
|
||
|
|
node.removeChild(child);
|
||
|
|
}
|
||
|
|
function appendChild(node, child) {
|
||
|
|
if (isDocumentFragment(child)) {
|
||
|
|
child = parseFragment(child, node);
|
||
|
|
}
|
||
|
|
node.appendChild(child);
|
||
|
|
}
|
||
|
|
function parentNode(node) {
|
||
|
|
if (isDocumentFragment(node)) {
|
||
|
|
while (node && isDocumentFragment(node)) {
|
||
|
|
const fragment = parseFragment(node);
|
||
|
|
node = fragment.parent;
|
||
|
|
}
|
||
|
|
return node !== null && node !== void 0 ? node : null;
|
||
|
|
}
|
||
|
|
return node.parentNode;
|
||
|
|
}
|
||
|
|
function nextSibling(node) {
|
||
|
|
var _a;
|
||
|
|
if (isDocumentFragment(node)) {
|
||
|
|
const fragment = parseFragment(node);
|
||
|
|
const parent = parentNode(fragment);
|
||
|
|
if (parent && fragment.lastChildNode) {
|
||
|
|
const children = Array.from(parent.childNodes);
|
||
|
|
const index = children.indexOf(fragment.lastChildNode);
|
||
|
|
return (_a = children[index + 1]) !== null && _a !== void 0 ? _a : null;
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
}
|
||
|
|
return node.nextSibling;
|
||
|
|
}
|
||
|
|
function tagName(elm) {
|
||
|
|
return elm.tagName;
|
||
|
|
}
|
||
|
|
function setTextContent(node, text) {
|
||
|
|
node.textContent = text;
|
||
|
|
}
|
||
|
|
function getTextContent(node) {
|
||
|
|
return node.textContent;
|
||
|
|
}
|
||
|
|
function isElement(node) {
|
||
|
|
return node.nodeType === 1;
|
||
|
|
}
|
||
|
|
function isText(node) {
|
||
|
|
return node.nodeType === 3;
|
||
|
|
}
|
||
|
|
function isComment(node) {
|
||
|
|
return node.nodeType === 8;
|
||
|
|
}
|
||
|
|
function isDocumentFragment(node) {
|
||
|
|
return node.nodeType === 11;
|
||
|
|
}
|
||
|
|
function parseFragment(fragmentNode, parentNode) {
|
||
|
|
var _a, _b, _c;
|
||
|
|
const fragment = fragmentNode;
|
||
|
|
(_a = fragment.parent) !== null && _a !== void 0 ? _a : (fragment.parent = parentNode !== null && parentNode !== void 0 ? parentNode : null);
|
||
|
|
(_b = fragment.firstChildNode) !== null && _b !== void 0 ? _b : (fragment.firstChildNode = fragmentNode.firstChild);
|
||
|
|
(_c = fragment.lastChildNode) !== null && _c !== void 0 ? _c : (fragment.lastChildNode = fragmentNode.lastChild);
|
||
|
|
return fragment;
|
||
|
|
}
|
||
|
|
export const htmlDomApi = {
|
||
|
|
createElement,
|
||
|
|
createElementNS,
|
||
|
|
createTextNode,
|
||
|
|
createDocumentFragment,
|
||
|
|
createComment,
|
||
|
|
insertBefore,
|
||
|
|
removeChild,
|
||
|
|
appendChild,
|
||
|
|
parentNode,
|
||
|
|
nextSibling,
|
||
|
|
tagName,
|
||
|
|
setTextContent,
|
||
|
|
getTextContent,
|
||
|
|
isElement,
|
||
|
|
isText,
|
||
|
|
isComment,
|
||
|
|
isDocumentFragment,
|
||
|
|
};
|
||
|
|
//# sourceMappingURL=htmldomapi.js.map
|