From 14245a02f58730090a0f76f4c0fa06ce16a0c24a Mon Sep 17 00:00:00 2001 From: joerdav Date: Thu, 27 Apr 2023 09:32:12 +0100 Subject: [PATCH] feat: lazy loading --- lazyload/bars.svg | 52 +++++++++ lazyload/handlers.go | 39 +++++++ lazyload/templates.templ | 27 +++++ lazyload/templates_templ.go | 212 ++++++++++++++++++++++++++++++++++++ lazyload/tokyo.png | Bin 0 -> 34557 bytes main.go | 7 ++ 6 files changed, 337 insertions(+) create mode 100644 lazyload/bars.svg create mode 100644 lazyload/handlers.go create mode 100644 lazyload/templates.templ create mode 100644 lazyload/templates_templ.go create mode 100644 lazyload/tokyo.png diff --git a/lazyload/bars.svg b/lazyload/bars.svg new file mode 100644 index 0000000..7cb07e6 --- /dev/null +++ b/lazyload/bars.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/lazyload/handlers.go b/lazyload/handlers.go new file mode 100644 index 0000000..5fe3eef --- /dev/null +++ b/lazyload/handlers.go @@ -0,0 +1,39 @@ +package lazyload + +import ( + _ "embed" + "net/http" + "time" +) + +var ( + //go:embed tokyo.png + graphBytes []byte + //go:embed bars.svg + barsBytes []byte +) + +func Handlers(prefix string, mux *http.ServeMux) { + mux.HandleFunc(prefix+"/", index) + mux.HandleFunc(prefix+"/graph", graph) + mux.HandleFunc(prefix+"/bars.svg", bars) + mux.HandleFunc(prefix+"/tokyo.png", tokyo) +} + +func index(w http.ResponseWriter, r *http.Request) { + Index().Render(r.Context(), w) +} + +func graph(w http.ResponseWriter, r *http.Request) { + time.Sleep(2 * time.Second) + graphImage().Render(r.Context(), w) +} + +func bars(w http.ResponseWriter, r *http.Request) { + w.Header().Set("Content-Type", "image/svg+xml") + w.Write(barsBytes) +} + +func tokyo(w http.ResponseWriter, r *http.Request) { + w.Write(graphBytes) +} diff --git a/lazyload/templates.templ b/lazyload/templates.templ new file mode 100644 index 0000000..8ff587f --- /dev/null +++ b/lazyload/templates.templ @@ -0,0 +1,27 @@ +package lazyload + +import "examples/shared" + +templ demo() { + +
Result loading...
+} + +templ graphImage() { + Tokyo Climate +} + +templ Index() { + @shared.Layout("Lazy Loading") { +

Lazy Loading

+ @demo() + } +} + diff --git a/lazyload/templates_templ.go b/lazyload/templates_templ.go new file mode 100644 index 0000000..359ef59 --- /dev/null +++ b/lazyload/templates_templ.go @@ -0,0 +1,212 @@ +// Code generated by templ@(devel) DO NOT EDIT. + +package lazyload + +//lint:file-ignore SA4006 This context is only used if a nested component is present. + +import "github.com/a-h/templ" +import "context" +import "io" +import "bytes" + +// GoExpression +import "examples/shared" + +func demo() templ.Component { + return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { + templBuffer, templIsBuffer := w.(*bytes.Buffer) + if !templIsBuffer { + templBuffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templBuffer) + } + ctx = templ.InitializeContext(ctx) + var_1 := templ.GetChildren(ctx) + if var_1 == nil { + var_1 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) +// RawElement + _, err = templBuffer.WriteString("") + if err != nil { + return err + } + // Element (standard) + _, err = templBuffer.WriteString("") + if err != nil { + return err + } + // Element (void) + _, err = templBuffer.WriteString("") + if err != nil { + return err + } + _, err = templBuffer.WriteString("") + if err != nil { + return err + } + if !templIsBuffer { + _, err = io.Copy(w, templBuffer) + } + return err + }) +} + +func graphImage() templ.Component { + return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { + templBuffer, templIsBuffer := w.(*bytes.Buffer) + if !templIsBuffer { + templBuffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templBuffer) + } + ctx = templ.InitializeContext(ctx) + var_3 := templ.GetChildren(ctx) + if var_3 == nil { + var_3 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + // Element (void) + _, err = templBuffer.WriteString("") + if err != nil { + return err + } + if !templIsBuffer { + _, err = io.Copy(w, templBuffer) + } + return err + }) +} + +func Index() templ.Component { + return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { + templBuffer, templIsBuffer := w.(*bytes.Buffer) + if !templIsBuffer { + templBuffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templBuffer) + } + ctx = templ.InitializeContext(ctx) + var_4 := templ.GetChildren(ctx) + if var_4 == nil { + var_4 = templ.NopComponent + } + ctx = templ.ClearChildren(ctx) + // TemplElement + var_5 := templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { + templBuffer, templIsBuffer := w.(*bytes.Buffer) + if !templIsBuffer { + templBuffer = templ.GetBuffer() + defer templ.ReleaseBuffer(templBuffer) + } + // Element (standard) + _, err = templBuffer.WriteString("") + if err != nil { + return err + } + // Text + var_6 := `Lazy Loading` + _, err = templBuffer.WriteString(var_6) + if err != nil { + return err + } + _, err = templBuffer.WriteString("") + if err != nil { + return err + } + // Whitespace (normalised) + _, err = templBuffer.WriteString(` `) + if err != nil { + return err + } + // TemplElement + err = demo().Render(ctx, templBuffer) + if err != nil { + return err + } + if !templIsBuffer { + _, err = io.Copy(w, templBuffer) + } + return err + }) + err = shared.Layout("Lazy Loading").Render(templ.WithChildren(ctx, var_5), templBuffer) + if err != nil { + return err + } + if !templIsBuffer { + _, err = io.Copy(w, templBuffer) + } + return err + }) +} + diff --git a/lazyload/tokyo.png b/lazyload/tokyo.png new file mode 100644 index 0000000000000000000000000000000000000000..6ccc936b091087441803ccecbf47078dd1aa682e GIT binary patch literal 34557 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