27 lines
888 B
JavaScript
27 lines
888 B
JavaScript
export function findNextSibling(el, selector) {
|
|
let sibling = el.nextElementSibling;
|
|
while (sibling) {
|
|
if (sibling.matches(selector))
|
|
return sibling;
|
|
sibling = sibling.nextElementSibling;
|
|
}
|
|
}
|
|
export function findPreviousSibling(el, selector) {
|
|
let sibling = el.previousElementSibling;
|
|
while (sibling) {
|
|
if (sibling.matches(selector))
|
|
return sibling;
|
|
sibling = sibling.previousElementSibling;
|
|
}
|
|
}
|
|
export function findFirstStartMarkerWithImmediateSiblingAsEnd(el, type) {
|
|
const startMarkers = el.querySelectorAll(`[data-bits-command-${type}-start]`);
|
|
for (const startMarker of startMarkers) {
|
|
const endMarker = startMarker.nextElementSibling;
|
|
if (endMarker && endMarker.hasAttribute(`data-bits-command-${type}-end`)) {
|
|
return startMarker;
|
|
}
|
|
}
|
|
return null;
|
|
}
|