protected function __siblingOf($elements, $value)
{
$value = $this->_getBlock($value);
if (!$value) {
return $elements;
}
$newElements = [];
$mid = $this->_indexOfBlock($elements, $value);
$total = count($elements);
if ($mid < 0) {
return [];
}
// Previous siblings
for ($i = $mid - 1; $i >= 0; $i--) {
$element = $elements[$i];
if ($element->level < $value->level) {
break;
}
if ($element->level == $value->level) {
array_unshift($newElements, $element);
}
}
// Next siblings
for ($i = $mid + 1; $i < $total; $i++) {
$element = $elements[$i];
if ($element->level < $value->level) {
break;
}
if ($element->level == $value->level) {
$newElements[] = $element;
}
}
return $newElements;
}