owncast-webhook/assets/view.go

80 lines
1.2 KiB
Go

package assets
import (
"embed"
"encoding/json"
. "maragu.dev/gomponents"
. "maragu.dev/gomponents/html"
)
var (
//go:embed dist/*
statics embed.FS
manifest map[string]string
entrypoints map[string]map[string]map[string][]string
)
func entrypointFiles(app, category string) []string {
if entrypoints == nil {
value, _ := statics.ReadFile("dist/entrypoints.json")
json.Unmarshal(value, &entrypoints)
}
entry, ok := entrypoints["entrypoints"][app]
if !ok {
return []string{}
}
files, ok := entry[category]
if !ok {
return []string{}
}
return files
}
func Asset(name string) string {
if manifest == nil {
value, _ := statics.ReadFile("dist/manifest.json")
json.Unmarshal(value, &manifest)
}
path, ok := manifest[name]
if !ok {
return ""
}
return path
}
func EntrypointJs(app string) []Node {
files := entrypointFiles(app, "js")
var results []Node
for _, file := range files {
results = append(
results,
Script(Src(file)),
)
}
return results
}
func EntrypointCss(app string) []Node {
files := entrypointFiles(app, "css")
var results []Node
for _, file := range files {
results = append(
results,
Link(Rel("stylesheet"), Href(file)),
)
}
return results
}