/**
* @param callable $callable
*
* @return $this
*/
public function setActiveFromCallable(callable $callable)
{
$this->applyToAll(function (Menu $menu) use($callable) {
$menu->setActiveFromCallable($callable);
});
$type = Reflection::firstParameterType($callable);
$this->applyToAll(function (Activatable $item) use($callable, $type) {
if (!Reflection::itemMatchesType($item, $type)) {
return;
}
if ($callable($item)) {
$item->setActive();
}
});
return $this;
}