UNPKG

uhtml

Version:
51 lines (41 loc) • 1.29 kB
'use strict'; const { DOCUMENT_FRAGMENT_NODE, ELEMENT_NODE } = require('domconstants/constants'); const { childNodes, nodeType, parentNode } = require('./symbols.js'); const { empty } = require('../utils.js'); const asElement = ({ [nodeType]: type }) => type === ELEMENT_NODE; exports.asElement = asElement; const changeParentNode = (node, parent) => { if (node[nodeType] === DOCUMENT_FRAGMENT_NODE) node[childNodes].forEach(setParentNode, parent); else { if (node[parentNode]) { const { [childNodes]: nodes } = node[parentNode]; nodes.splice(nodes.indexOf(node), 1); } node[parentNode] = parent; } return node; }; exports.changeParentNode = changeParentNode; const getNodes = element => ( element[childNodes] === empty ? (element[childNodes] = []) : element[childNodes] ); exports.getNodes = getNodes; const isSVG = name => (name === 'svg' || name === 'SVG'); exports.isSVG = isSVG; function cloned(node) { return setParentNode.call(this, node.cloneNode(true)); } exports.cloned = cloned function setParentNode(node) { 'use strict'; node[parentNode] = this; return node; } exports.setParentNode = setParentNode; function withNewParent(node) { return changeParentNode(node, this); } exports.withNewParent = withNewParent