v0.5.0 bfab294

tree_templ.go RawHistoryFolder

1// Code generated by templ - DO NOT EDIT.
2
3// templ: version: v0.3.1020
4// SPDX-License-Identifier: AGPL-3.0-or-later
5
6package web
7
8//lint:file-ignore SA4006 This context is only used if a nested component is present.
9
10import "github.com/a-h/templ"
11import templruntime "github.com/a-h/templ/runtime"
12
13// Tree is a directory: the filter, the entries with their last commit, the
14// notes on what is left out, and the README of the directory below.
15func Tree(l Layout, p TreePage) templ.Component {
16	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
17		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
18		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
19			return templ_7745c5c3_CtxErr
20		}
21		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
22		if !templ_7745c5c3_IsBuffer {
23			defer func() {
24				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
25				if templ_7745c5c3_Err == nil {
26					templ_7745c5c3_Err = templ_7745c5c3_BufErr
27				}
28			}()
29		}
30		ctx = templ.InitializeContext(ctx)
31		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
32		if templ_7745c5c3_Var1 == nil {
33			templ_7745c5c3_Var1 = templ.NopComponent
34		}
35		ctx = templ.ClearChildren(ctx)
36		templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
37			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
38			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
39			if !templ_7745c5c3_IsBuffer {
40				defer func() {
41					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
42					if templ_7745c5c3_Err == nil {
43						templ_7745c5c3_Err = templ_7745c5c3_BufErr
44					}
45				}()
46			}
47			ctx = templ.InitializeContext(ctx)
48			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"filter\"><label for=\"tree-filter\" class=\"sr\">filter</label> <input id=\"tree-filter\" type=\"search\" data-filter placeholder=\"Filter this directory…\" autocomplete=\"off\" hx-on:input=\"let t = this.value.toLowerCase(); q('#tree-rows > tr').arr().forEach(r => r.hidden = !r.textContent.toLowerCase().includes(t)); take('data-cursor', '#tree-rows > tr:not([hidden])')\"></div><table class=\"list tree\" aria-label=\"Entries\"><thead><tr><th class=\"cur\"></th><th class=\"c-kind\"></th><th class=\"c-name\">name</th><th class=\"c-size\">size</th><th class=\"c-sub\">last commit</th><th class=\"c-who\">author</th><th class=\"c-when\">date</th></tr></thead> <tbody id=\"tree-rows\" data-rows>")
49			if templ_7745c5c3_Err != nil {
50				return templ_7745c5c3_Err
51			}
52			for _, r := range p.Rows {
53				templ_7745c5c3_Err = TreeRowView(r).Render(ctx, templ_7745c5c3_Buffer)
54				if templ_7745c5c3_Err != nil {
55					return templ_7745c5c3_Err
56				}
57			}
58			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</tbody></table>")
59			if templ_7745c5c3_Err != nil {
60				return templ_7745c5c3_Err
61			}
62			if len(p.Rows) == 0 {
63				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<p class=\"lede dim\">this directory is empty.</p>")
64				if templ_7745c5c3_Err != nil {
65					return templ_7745c5c3_Err
66				}
67			}
68			for _, n := range p.Notes {
69				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<p class=\"note\">")
70				if templ_7745c5c3_Err != nil {
71					return templ_7745c5c3_Err
72				}
73				var templ_7745c5c3_Var3 string
74				templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(n)
75				if templ_7745c5c3_Err != nil {
76					return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 34, Col: 22}
77				}
78				_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
79				if templ_7745c5c3_Err != nil {
80					return templ_7745c5c3_Err
81				}
82				templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</p>")
83				if templ_7745c5c3_Err != nil {
84					return templ_7745c5c3_Err
85				}
86			}
87			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, " ")
88			if templ_7745c5c3_Err != nil {
89				return templ_7745c5c3_Err
90			}
91			if p.Readme != nil {
92				templ_7745c5c3_Err = ReadmeCard(*p.Readme).Render(ctx, templ_7745c5c3_Buffer)
93				if templ_7745c5c3_Err != nil {
94					return templ_7745c5c3_Err
95				}
96			}
97			return nil
98		})
99		templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
100		if templ_7745c5c3_Err != nil {
101			return templ_7745c5c3_Err
102		}
103		return nil
104	})
105}
106
107// TreeRowView is one entry of a directory. Glyph: ▾ directory, @ symbolic
108// link, + submodule, · file.
109func TreeRowView(r TreeRow) templ.Component {
110	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
111		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
112		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
113			return templ_7745c5c3_CtxErr
114		}
115		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
116		if !templ_7745c5c3_IsBuffer {
117			defer func() {
118				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
119				if templ_7745c5c3_Err == nil {
120					templ_7745c5c3_Err = templ_7745c5c3_BufErr
121				}
122			}()
123		}
124		ctx = templ.InitializeContext(ctx)
125		templ_7745c5c3_Var4 := templ.GetChildren(ctx)
126		if templ_7745c5c3_Var4 == nil {
127			templ_7745c5c3_Var4 = templ.NopComponent
128		}
129		ctx = templ.ClearChildren(ctx)
130		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<tr")
131		if templ_7745c5c3_Err != nil {
132			return templ_7745c5c3_Err
133		}
134		if r.Cursor {
135			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, " data-cursor")
136			if templ_7745c5c3_Err != nil {
137				return templ_7745c5c3_Err
138			}
139		}
140		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind\" aria-hidden=\"true\">")
141		if templ_7745c5c3_Err != nil {
142			return templ_7745c5c3_Err
143		}
144		var templ_7745c5c3_Var5 string
145		templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(r.Glyph)
146		if templ_7745c5c3_Err != nil {
147			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 47, Col: 49}
148		}
149		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
150		if templ_7745c5c3_Err != nil {
151			return templ_7745c5c3_Err
152		}
153		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "</td><td class=\"c-name\">")
154		if templ_7745c5c3_Err != nil {
155			return templ_7745c5c3_Err
156		}
157		if r.Href != "" {
158			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<a href=\"")
159			if templ_7745c5c3_Err != nil {
160				return templ_7745c5c3_Err
161			}
162			var templ_7745c5c3_Var6 templ.SafeURL
163			templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
164			if templ_7745c5c3_Err != nil {
165				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 50, Col: 35}
166			}
167			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
168			if templ_7745c5c3_Err != nil {
169				return templ_7745c5c3_Err
170			}
171			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\">")
172			if templ_7745c5c3_Err != nil {
173				return templ_7745c5c3_Err
174			}
175			var templ_7745c5c3_Var7 string
176			templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
177			if templ_7745c5c3_Err != nil {
178				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 50, Col: 46}
179			}
180			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
181			if templ_7745c5c3_Err != nil {
182				return templ_7745c5c3_Err
183			}
184			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</a>")
185			if templ_7745c5c3_Err != nil {
186				return templ_7745c5c3_Err
187			}
188		} else {
189			var templ_7745c5c3_Var8 string
190			templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
191			if templ_7745c5c3_Err != nil {
192				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 52, Col: 12}
193			}
194			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
195			if templ_7745c5c3_Err != nil {
196				return templ_7745c5c3_Err
197			}
198		}
199		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</td><td class=\"c-size num dim\">")
200		if templ_7745c5c3_Err != nil {
201			return templ_7745c5c3_Err
202		}
203		var templ_7745c5c3_Var9 string
204		templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(r.Size)
205		if templ_7745c5c3_Err != nil {
206			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 55, Col: 37}
207		}
208		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
209		if templ_7745c5c3_Err != nil {
210			return templ_7745c5c3_Err
211		}
212		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</td><td class=\"c-sub dim\">")
213		if templ_7745c5c3_Err != nil {
214			return templ_7745c5c3_Err
215		}
216		if r.CHref != "" {
217			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<a href=\"")
218			if templ_7745c5c3_Err != nil {
219				return templ_7745c5c3_Err
220			}
221			var templ_7745c5c3_Var10 templ.SafeURL
222			templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
223			if templ_7745c5c3_Err != nil {
224				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 58, Col: 36}
225			}
226			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
227			if templ_7745c5c3_Err != nil {
228				return templ_7745c5c3_Err
229			}
230			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "\">")
231			if templ_7745c5c3_Err != nil {
232				return templ_7745c5c3_Err
233			}
234			var templ_7745c5c3_Var11 string
235			templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject)
236			if templ_7745c5c3_Err != nil {
237				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 58, Col: 50}
238			}
239			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
240			if templ_7745c5c3_Err != nil {
241				return templ_7745c5c3_Err
242			}
243			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</a>")
244			if templ_7745c5c3_Err != nil {
245				return templ_7745c5c3_Err
246			}
247		}
248		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</td><td class=\"c-who dim\">")
249		if templ_7745c5c3_Err != nil {
250			return templ_7745c5c3_Err
251		}
252		var templ_7745c5c3_Var12 string
253		templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(r.Author)
254		if templ_7745c5c3_Err != nil {
255			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 61, Col: 34}
256		}
257		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
258		if templ_7745c5c3_Err != nil {
259			return templ_7745c5c3_Err
260		}
261		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</td><td class=\"c-when nowrap dim\">")
262		if templ_7745c5c3_Err != nil {
263			return templ_7745c5c3_Err
264		}
265		if r.WhenAt != "" {
266			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<time datetime=\"")
267			if templ_7745c5c3_Err != nil {
268				return templ_7745c5c3_Err
269			}
270			var templ_7745c5c3_Var13 string
271			templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
272			if templ_7745c5c3_Err != nil {
273				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 64, Col: 29}
274			}
275			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13)
276			if templ_7745c5c3_Err != nil {
277				return templ_7745c5c3_Err
278			}
279			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\" title=\"")
280			if templ_7745c5c3_Err != nil {
281				return templ_7745c5c3_Err
282			}
283			var templ_7745c5c3_Var14 string
284			templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
285			if templ_7745c5c3_Err != nil {
286				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 64, Col: 48}
287			}
288			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14)
289			if templ_7745c5c3_Err != nil {
290				return templ_7745c5c3_Err
291			}
292			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\">")
293			if templ_7745c5c3_Err != nil {
294				return templ_7745c5c3_Err
295			}
296			var templ_7745c5c3_Var15 string
297			templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
298			if templ_7745c5c3_Err != nil {
299				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 64, Col: 59}
300			}
301			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
302			if templ_7745c5c3_Err != nil {
303				return templ_7745c5c3_Err
304			}
305			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</time>")
306			if templ_7745c5c3_Err != nil {
307				return templ_7745c5c3_Err
308			}
309		}
310		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</td></tr>")
311		if templ_7745c5c3_Err != nil {
312			return templ_7745c5c3_Err
313		}
314		return nil
315	})
316}
317
318var _ = templruntime.GeneratedTemplate

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 4

Tags 45

↑↓ moveenter openesc close