mirror of
https://gitlab.com/octtspacc/sitoctt
synced 2025-06-05 22:09:20 +02:00
.
This commit is contained in:
87
node_modules/@mixmark-io/domino/NodeTraversal.js
generated
vendored
Normal file
87
node_modules/@mixmark-io/domino/NodeTraversal.js
generated
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
"use strict";
|
||||
/* exported NodeTraversal */
|
||||
var NodeTraversal = module.exports = {
|
||||
nextSkippingChildren: nextSkippingChildren,
|
||||
nextAncestorSibling: nextAncestorSibling,
|
||||
next: next,
|
||||
previous: previous,
|
||||
deepLastChild: deepLastChild
|
||||
};
|
||||
|
||||
/**
|
||||
* @based on WebKit's NodeTraversal::nextSkippingChildren
|
||||
* https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L109
|
||||
*/
|
||||
function nextSkippingChildren(node, stayWithin) {
|
||||
if (node === stayWithin) {
|
||||
return null;
|
||||
}
|
||||
if (node.nextSibling !== null) {
|
||||
return node.nextSibling;
|
||||
}
|
||||
return nextAncestorSibling(node, stayWithin);
|
||||
}
|
||||
|
||||
/**
|
||||
* @based on WebKit's NodeTraversal::nextAncestorSibling
|
||||
* https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L93
|
||||
*/
|
||||
function nextAncestorSibling(node, stayWithin) {
|
||||
for (node = node.parentNode; node !== null; node = node.parentNode) {
|
||||
if (node === stayWithin) {
|
||||
return null;
|
||||
}
|
||||
if (node.nextSibling !== null) {
|
||||
return node.nextSibling;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @based on WebKit's NodeTraversal::next
|
||||
* https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L99
|
||||
*/
|
||||
function next(node, stayWithin) {
|
||||
var n;
|
||||
n = node.firstChild;
|
||||
if (n !== null) {
|
||||
return n;
|
||||
}
|
||||
if (node === stayWithin) {
|
||||
return null;
|
||||
}
|
||||
n = node.nextSibling;
|
||||
if (n !== null) {
|
||||
return n;
|
||||
}
|
||||
return nextAncestorSibling(node, stayWithin);
|
||||
}
|
||||
|
||||
/**
|
||||
* @based on WebKit's NodeTraversal::deepLastChild
|
||||
* https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L116
|
||||
*/
|
||||
function deepLastChild(node) {
|
||||
while (node.lastChild) {
|
||||
node = node.lastChild;
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
/**
|
||||
* @based on WebKit's NodeTraversal::previous
|
||||
* https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L121
|
||||
*/
|
||||
function previous(node, stayWithin) {
|
||||
var p;
|
||||
p = node.previousSibling;
|
||||
if (p !== null) {
|
||||
return deepLastChild(p);
|
||||
}
|
||||
p = node.parentNode;
|
||||
if (p === stayWithin) {
|
||||
return null;
|
||||
}
|
||||
return p;
|
||||
}
|
Reference in New Issue
Block a user