<?php
namespace Livewire\ComponentConcerns;
trait TracksRenderedChildren
{
protected $renderedChildren = [];
protected $previouslyRenderedChildren = [];
public function getRenderedChildComponentId($id)
{
return $this->previouslyRenderedChildren[$id]['id'];
}
public function getRenderedChildComponentTagName($id)
{
return $this->previouslyRenderedChildren[$id]['tag'];
}
public function logRenderedChild($id, $componentId, $tagName)
{
$this->renderedChildren[$id] = ['id' => $componentId, 'tag' => $tagName];
}
public function preserveRenderedChild($id)
{
$this->renderedChildren[$id] = $this->previouslyRenderedChildren[$id];
}
public function childHasBeenRendered($id)
{
return in_array($id, array_keys($this->previouslyRenderedChildren), true);
}
public function setPreviouslyRenderedChildren($children)
{
$this->previouslyRenderedChildren = $children;
}
public function getRenderedChildren()
{
return $this->renderedChildren;
}
public function keepRenderedChildren()
{
$this->renderedChildren = $this->previouslyRenderedChildren;
}
}