$fragmentNames Fragment names to extract (e.g., ['user-stats', 'recent-activity']) * @return FragmentCollection Collection of extracted fragments */ public function renderFragments( LiveComponentContract $component, array $fragmentNames ): FragmentCollection { if (empty($fragmentNames)) { return FragmentCollection::empty(); } // Render full component HTML $renderData = $component->getRenderData(); $fullHtml = $this->componentRenderer->render( templatePath: $renderData->templatePath, data: $renderData->data, componentId: $component->id->toString() ); // Extract requested fragments return $this->fragmentExtractor->extract($fullHtml, $fragmentNames); } /** * Check if component has specific fragment * * Useful for validating fragment names before attempting to render. * * @param LiveComponentContract $component Component to check * @param string $fragmentName Fragment name to look for * @return bool True if fragment exists in component template */ public function hasFragment(LiveComponentContract $component, string $fragmentName): bool { $renderData = $component->getRenderData(); $fullHtml = $this->componentRenderer->render( templatePath: $renderData->templatePath, data: $renderData->data, componentId: $component->id->toString() ); return $this->fragmentExtractor->hasFragment($fullHtml, $fragmentName); } /** * Get all available fragment names from component * * Useful for debugging and introspection. * * @param LiveComponentContract $component Component to analyze * @return array Available fragment names */ public function getAvailableFragments(LiveComponentContract $component): array { $renderData = $component->getRenderData(); $fullHtml = $this->componentRenderer->render( templatePath: $renderData->templatePath, data: $renderData->data, componentId: $component->id->toString() ); return $this->fragmentExtractor->getFragmentNames($fullHtml); } }