package test import ( "context" "fmt" "github.com/doors-dev/doors" "net/http" ) templ Report(value string) { @ReportId(0, value) } templ ReportId(id int, value string) {
{ value }
} templ Marker(id string) {
} type page[P any] interface { h1() string content(doors.SourceBeam[P]) templ.Component head(doors.SourceBeam[P]) templ.Component } templ Document[P any](p page[P], b doors.SourceBeam[P]) { @doors.Include() @doors.ARawFileHref{ Handler: func(w http.ResponseWriter, r *http.Request) { }, } @p.head(b)

{ p.h1() }

@p.content(b) } func NewReporter(size int) *Reporter { reports := make([]*doors.Door, size) for i := range size { reports[i] = &doors.Door{} } return &Reporter{ reports: reports, } } type Reporter struct { reports []*doors.Door } func (r *Reporter) Update(ctx context.Context, i int, content string) { r.reports[i].Update(ctx, ReportId(i, content)) } templ (r *Reporter) Render() { for _, report := range r.reports { @report } } templ Button(id string, handler func(context.Context) bool) { @doors.AClick{ On: func(ctx context.Context, _ doors.REvent[doors.PointerEvent]) bool { return handler(ctx) }, } }