Files
ABSDEV/Modules/Builder/Services/BuilderRenderer.php
T
Mark Gregory 412e8134a1 Builder administration area
* Page builder foundation
* Form builder document type
* Dashboard builder document type
* Report builder document type
* Menu builder document type
* Email builder document type
* Query builder document type
* Workflow builder document type
* Reusable component registry
* Form-field registry
* Dashboard-widget registry
* Hero, heading, and rich-content components
* JSON document schema
* Saved builder documents
* Draft, published, and archived states
* Document version history
* Reusable builder templates
* Component rendering service
* Extensible BuilderComponent contract
* Authenticated Builder REST endpoints
* Administration navigation
* Builder permissions
* Module registration and test
2026-07-24 13:29:58 +01:00

14 lines
621 B
PHP

<?php
namespace Modules\Builder\Services;
final class BuilderRenderer
{
public function __construct(private BuilderRegistry $registry) {}
public function render(array $document, array $context=[]): string
{
return collect($document['nodes'] ?? [])->map(function(array $node) use ($context) {
if (($node['kind'] ?? 'component') === 'container') return '<div class="builder-container">'.$this->render($node,$context).'</div>';
return $this->registry->component((string)($node['type'] ?? 'content'))->render($node['properties'] ?? [],$context);
})->implode("\n");
}
}