You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.0 KiB
JavaScript
49 lines
1.0 KiB
JavaScript
import {
|
|
CDATA_SECTION_NODE,
|
|
COMMENT_NODE,
|
|
DOCUMENT_NODE,
|
|
DOCUMENT_FRAGMENT_NODE,
|
|
TEXT_NODE,
|
|
NODE_END
|
|
} from './constants.js';
|
|
|
|
import {START, NEXT, PREV} from './symbols.js';
|
|
import {getEnd} from './utils.js';
|
|
|
|
export const isConnected = ({ownerDocument, parentNode}) => {
|
|
while (parentNode) {
|
|
if (parentNode === ownerDocument)
|
|
return true;
|
|
parentNode = parentNode.parentNode || parentNode.host;
|
|
}
|
|
return false;
|
|
};
|
|
|
|
export const parentElement = ({parentNode}) => {
|
|
if (parentNode) {
|
|
switch (parentNode.nodeType) {
|
|
case DOCUMENT_NODE:
|
|
case DOCUMENT_FRAGMENT_NODE:
|
|
return null;
|
|
}
|
|
}
|
|
return parentNode;
|
|
};
|
|
|
|
export const previousSibling = ({[PREV]: prev}) => {
|
|
switch (prev ? prev.nodeType : 0) {
|
|
case NODE_END:
|
|
return prev[START];
|
|
case TEXT_NODE:
|
|
case COMMENT_NODE:
|
|
case CDATA_SECTION_NODE:
|
|
return prev;
|
|
}
|
|
return null;
|
|
};
|
|
|
|
export const nextSibling = node => {
|
|
const next = getEnd(node)[NEXT];
|
|
return next && (next.nodeType === NODE_END ? null : next);
|
|
};
|