/* * Copyright (C) 2024 Jonni Liljamo * * This file is licensed under AGPL-3.0-or-later, see NOTICE and LICENSE for * more information. */ // Package renderer implements templ rendering. package renderer import ( "context" "net/http" "github.com/a-h/templ" "github.com/gin-gonic/gin/render" ) // TemplRender holds the required info for rendering templ components. type TemplRender struct { Code int Data templ.Component } // Render renders templ templates to HTML (and friends). func (t TemplRender) Render(w http.ResponseWriter) error { w.WriteHeader(t.Code) if t.Data != nil { return t.Data.Render(context.Background(), w) } return nil } // WriteContentType sets the Content-Type header. func (t TemplRender) WriteContentType(w http.ResponseWriter) { w.Header().Set("Content-Type", "text/html; charset=utf-8") } // Instance returns an instance of the templ renderer. func (t *TemplRender) Instance( /* name */ _ string, data interface{}) render.Render { if templData, ok := data.(templ.Component); ok { return &TemplRender{ Code: http.StatusOK, Data: templData, } } return nil }