aboutsummaryrefslogtreecommitdiffstats
path: root/modules/fileicon/render.go
diff options
context:
space:
mode:
Diffstat (limited to 'modules/fileicon/render.go')
-rw-r--r--modules/fileicon/render.go41
1 files changed, 41 insertions, 0 deletions
diff --git a/modules/fileicon/render.go b/modules/fileicon/render.go
new file mode 100644
index 0000000000..8ed86b9ac0
--- /dev/null
+++ b/modules/fileicon/render.go
@@ -0,0 +1,41 @@
+// Copyright 2025 The Gitea Authors. All rights reserved.
+// SPDX-License-Identifier: MIT
+
+package fileicon
+
+import (
+ "html/template"
+ "strings"
+
+ "code.gitea.io/gitea/modules/setting"
+)
+
+type RenderedIconPool struct {
+ IconSVGs map[string]template.HTML
+}
+
+func NewRenderedIconPool() *RenderedIconPool {
+ return &RenderedIconPool{
+ IconSVGs: make(map[string]template.HTML),
+ }
+}
+
+func (p *RenderedIconPool) RenderToHTML() template.HTML {
+ if len(p.IconSVGs) == 0 {
+ return ""
+ }
+ sb := &strings.Builder{}
+ sb.WriteString(`<div class=tw-hidden>`)
+ for _, icon := range p.IconSVGs {
+ sb.WriteString(string(icon))
+ }
+ sb.WriteString(`</div>`)
+ return template.HTML(sb.String())
+}
+
+func RenderEntryIconHTML(renderedIconPool *RenderedIconPool, entry *EntryInfo) template.HTML {
+ if setting.UI.FileIconTheme == "material" {
+ return DefaultMaterialIconProvider().EntryIconHTML(renderedIconPool, entry)
+ }
+ return BasicEntryIconHTML(entry)
+}