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)
},
}
}