ferngully-aurelia-tools
Version:
Ferngully Tools for Aurelia
53 lines • 1.83 kB
JavaScript
export class DOMService {
nextInDOM(_selector, _subject, reverse, container) {
var next = reverse ? this.getPrev(_subject) : this.getNext(_subject);
while ((next != null) && (next.length !== 0)) {
var found = this.searchFor(_selector, next, reverse);
if (found) {
return found;
}
next = reverse ? this.getPrev(next) : this.getNext(next);
if ((next == null) && (container != null)) {
next = reverse ? $(container).children().last() : $(container).children().first();
container = null;
}
}
return null;
}
getNext(_subject) {
if ((!_subject) || (_subject.length === 0)) {
return null;
}
if (_subject.next().length > 0)
return _subject.next();
return this.getNext(_subject.parent());
}
getPrev(_subject) {
if ((!_subject) || (_subject.length === 0)) {
return null;
}
if (_subject.prev().length > 0)
return _subject.prev();
return this.getPrev(_subject.parent());
}
searchFor(_selector, _subject, reverse) {
if (_subject.is(_selector))
return _subject;
else {
let found = null;
let _children = _subject.children().get();
if (reverse) {
_children = _children.reverse();
}
$(_children).each((i, child) => {
found = this.searchFor(_selector, $(child), reverse);
if (found)
return false;
else
return;
});
return found;
}
}
}
//# sourceMappingURL=dom-service.js.map