v0.1.0 3f267b5

fragments_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// The fragments of the live updates (events.go). Each is a top-level element
14// with an id: the page swaps the element that has the same id.
15
16// FactValue is the value of a fact; its id, when it has one, is the target of
17// the live updates ("last push").
18func FactValue(f Fact) templ.Component {
19	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
20		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
21		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
22			return templ_7745c5c3_CtxErr
23		}
24		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
25		if !templ_7745c5c3_IsBuffer {
26			defer func() {
27				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
28				if templ_7745c5c3_Err == nil {
29					templ_7745c5c3_Err = templ_7745c5c3_BufErr
30				}
31			}()
32		}
33		ctx = templ.InitializeContext(ctx)
34		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
35		if templ_7745c5c3_Var1 == nil {
36			templ_7745c5c3_Var1 = templ.NopComponent
37		}
38		ctx = templ.ClearChildren(ctx)
39		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<dd")
40		if templ_7745c5c3_Err != nil {
41			return templ_7745c5c3_Err
42		}
43		if f.ID != "" {
44			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, " id=\"")
45			if templ_7745c5c3_Err != nil {
46				return templ_7745c5c3_Err
47			}
48			var templ_7745c5c3_Var2 string
49			templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID)
50			if templ_7745c5c3_Err != nil {
51				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 13, Col: 12}
52			}
53			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var2)
54			if templ_7745c5c3_Err != nil {
55				return templ_7745c5c3_Err
56			}
57			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\"")
58			if templ_7745c5c3_Err != nil {
59				return templ_7745c5c3_Err
60			}
61		}
62		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, ">")
63		if templ_7745c5c3_Err != nil {
64			return templ_7745c5c3_Err
65		}
66		if f.Time != "" {
67			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<time datetime=\"")
68			if templ_7745c5c3_Err != nil {
69				return templ_7745c5c3_Err
70			}
71			var templ_7745c5c3_Var3 string
72			templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Time)
73			if templ_7745c5c3_Err != nil {
74				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 17, Col: 26}
75			}
76			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var3)
77			if templ_7745c5c3_Err != nil {
78				return templ_7745c5c3_Err
79			}
80			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "\">")
81			if templ_7745c5c3_Err != nil {
82				return templ_7745c5c3_Err
83			}
84			var templ_7745c5c3_Var4 string
85			templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(f.Val)
86			if templ_7745c5c3_Err != nil {
87				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 17, Col: 36}
88			}
89			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
90			if templ_7745c5c3_Err != nil {
91				return templ_7745c5c3_Err
92			}
93			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</time>")
94			if templ_7745c5c3_Err != nil {
95				return templ_7745c5c3_Err
96			}
97		} else {
98			var templ_7745c5c3_Var5 string
99			templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(f.Val)
100			if templ_7745c5c3_Err != nil {
101				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 19, Col: 10}
102			}
103			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
104			if templ_7745c5c3_Err != nil {
105				return templ_7745c5c3_Err
106			}
107		}
108		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</dd>")
109		if templ_7745c5c3_Err != nil {
110			return templ_7745c5c3_Err
111		}
112		return nil
113	})
114}
115
116// RepoGone replaces the row of a repository that is deleted or not visible
117// any more; the page removes the element.
118func RepoGone(id string) templ.Component {
119	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
120		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
121		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
122			return templ_7745c5c3_CtxErr
123		}
124		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
125		if !templ_7745c5c3_IsBuffer {
126			defer func() {
127				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
128				if templ_7745c5c3_Err == nil {
129					templ_7745c5c3_Err = templ_7745c5c3_BufErr
130				}
131			}()
132		}
133		ctx = templ.InitializeContext(ctx)
134		templ_7745c5c3_Var6 := templ.GetChildren(ctx)
135		if templ_7745c5c3_Var6 == nil {
136			templ_7745c5c3_Var6 = templ.NopComponent
137		}
138		ctx = templ.ClearChildren(ctx)
139		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<tr id=\"")
140		if templ_7745c5c3_Err != nil {
141			return templ_7745c5c3_Err
142		}
143		var templ_7745c5c3_Var7 string
144		templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.ResolveAttributeValue(id)
145		if templ_7745c5c3_Err != nil {
146			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 27, Col: 12}
147		}
148		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7)
149		if templ_7745c5c3_Err != nil {
150			return templ_7745c5c3_Err
151		}
152		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "\" data-gone hidden></tr>")
153		if templ_7745c5c3_Err != nil {
154			return templ_7745c5c3_Err
155		}
156		return nil
157	})
158}
159
160// RefsBody is the rows of the refs table.
161func RefsBody(p RefsPage) templ.Component {
162	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
163		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
164		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
165			return templ_7745c5c3_CtxErr
166		}
167		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
168		if !templ_7745c5c3_IsBuffer {
169			defer func() {
170				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
171				if templ_7745c5c3_Err == nil {
172					templ_7745c5c3_Err = templ_7745c5c3_BufErr
173				}
174			}()
175		}
176		ctx = templ.InitializeContext(ctx)
177		templ_7745c5c3_Var8 := templ.GetChildren(ctx)
178		if templ_7745c5c3_Var8 == nil {
179			templ_7745c5c3_Var8 = templ.NopComponent
180		}
181		ctx = templ.ClearChildren(ctx)
182		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "<tbody id=\"ref-rows\" data-rows>")
183		if templ_7745c5c3_Err != nil {
184			return templ_7745c5c3_Err
185		}
186		for _, b := range p.Branches {
187			templ_7745c5c3_Err = refRow("branch", b).Render(ctx, templ_7745c5c3_Buffer)
188			if templ_7745c5c3_Err != nil {
189				return templ_7745c5c3_Err
190			}
191		}
192		for _, t := range p.Tags {
193			templ_7745c5c3_Err = refRow("tag", t).Render(ctx, templ_7745c5c3_Buffer)
194			if templ_7745c5c3_Err != nil {
195				return templ_7745c5c3_Err
196			}
197		}
198		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</tbody>")
199		if templ_7745c5c3_Err != nil {
200			return templ_7745c5c3_Err
201		}
202		return nil
203	})
204}
205
206// RefsKV is the facts of the rail of the refs page.
207func RefsKV(p RefsPage) templ.Component {
208	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
209		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
210		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
211			return templ_7745c5c3_CtxErr
212		}
213		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
214		if !templ_7745c5c3_IsBuffer {
215			defer func() {
216				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
217				if templ_7745c5c3_Err == nil {
218					templ_7745c5c3_Err = templ_7745c5c3_BufErr
219				}
220			}()
221		}
222		ctx = templ.InitializeContext(ctx)
223		templ_7745c5c3_Var9 := templ.GetChildren(ctx)
224		if templ_7745c5c3_Var9 == nil {
225			templ_7745c5c3_Var9 = templ.NopComponent
226		}
227		ctx = templ.ClearChildren(ctx)
228		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<dl class=\"kv\" id=\"refs-kv\"><dt>default</dt><dd>")
229		if templ_7745c5c3_Err != nil {
230			return templ_7745c5c3_Err
231		}
232		var templ_7745c5c3_Var10 string
233		templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(p.Default)
234		if templ_7745c5c3_Err != nil {
235			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 46, Col: 17}
236		}
237		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
238		if templ_7745c5c3_Err != nil {
239			return templ_7745c5c3_Err
240		}
241		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "</dd><dt>branches</dt><dd>")
242		if templ_7745c5c3_Err != nil {
243			return templ_7745c5c3_Err
244		}
245		var templ_7745c5c3_Var11 string
246		templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Branches)))
247		if templ_7745c5c3_Err != nil {
248			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 48, Col: 29}
249		}
250		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
251		if templ_7745c5c3_Err != nil {
252			return templ_7745c5c3_Err
253		}
254		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</dd><dt>tags</dt><dd>")
255		if templ_7745c5c3_Err != nil {
256			return templ_7745c5c3_Err
257		}
258		var templ_7745c5c3_Var12 string
259		templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Tags)))
260		if templ_7745c5c3_Err != nil {
261			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 50, Col: 25}
262		}
263		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
264		if templ_7745c5c3_Err != nil {
265			return templ_7745c5c3_Err
266		}
267		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "</dd>")
268		if templ_7745c5c3_Err != nil {
269			return templ_7745c5c3_Err
270		}
271		if p.Latest != "" {
272			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<dt>latest tag</dt><dd>")
273			if templ_7745c5c3_Err != nil {
274				return templ_7745c5c3_Err
275			}
276			var templ_7745c5c3_Var13 string
277			templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(p.Latest)
278			if templ_7745c5c3_Err != nil {
279				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 53, Col: 17}
280			}
281			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
282			if templ_7745c5c3_Err != nil {
283				return templ_7745c5c3_Err
284			}
285			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</dd>")
286			if templ_7745c5c3_Err != nil {
287				return templ_7745c5c3_Err
288			}
289		}
290		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</dl>")
291		if templ_7745c5c3_Err != nil {
292			return templ_7745c5c3_Err
293		}
294		return nil
295	})
296}
297
298// CommitsSlot is the place of the banner of the commits page, empty.
299func CommitsSlot() templ.Component {
300	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
301		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
302		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
303			return templ_7745c5c3_CtxErr
304		}
305		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
306		if !templ_7745c5c3_IsBuffer {
307			defer func() {
308				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
309				if templ_7745c5c3_Err == nil {
310					templ_7745c5c3_Err = templ_7745c5c3_BufErr
311				}
312			}()
313		}
314		ctx = templ.InitializeContext(ctx)
315		templ_7745c5c3_Var14 := templ.GetChildren(ctx)
316		if templ_7745c5c3_Var14 == nil {
317			templ_7745c5c3_Var14 = templ.NopComponent
318		}
319		ctx = templ.ClearChildren(ctx)
320		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<div id=\"commits-head\"></div>")
321		if templ_7745c5c3_Err != nil {
322			return templ_7745c5c3_Err
323		}
324		return nil
325	})
326}
327
328// CommitsBanner announces new commits on the branch the page lists. It links
329// to the first page of the branch.
330func CommitsBanner(text, href string) templ.Component {
331	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
332		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
333		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
334			return templ_7745c5c3_CtxErr
335		}
336		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
337		if !templ_7745c5c3_IsBuffer {
338			defer func() {
339				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
340				if templ_7745c5c3_Err == nil {
341					templ_7745c5c3_Err = templ_7745c5c3_BufErr
342				}
343			}()
344		}
345		ctx = templ.InitializeContext(ctx)
346		templ_7745c5c3_Var15 := templ.GetChildren(ctx)
347		if templ_7745c5c3_Var15 == nil {
348			templ_7745c5c3_Var15 = templ.NopComponent
349		}
350		ctx = templ.ClearChildren(ctx)
351		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<div id=\"commits-head\" class=\"live-banner\" role=\"status\"><a href=\"")
352		if templ_7745c5c3_Err != nil {
353			return templ_7745c5c3_Err
354		}
355		var templ_7745c5c3_Var16 templ.SafeURL
356		templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
357		if templ_7745c5c3_Err != nil {
358			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 67, Col: 31}
359		}
360		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
361		if templ_7745c5c3_Err != nil {
362			return templ_7745c5c3_Err
363		}
364		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\">")
365		if templ_7745c5c3_Err != nil {
366			return templ_7745c5c3_Err
367		}
368		var templ_7745c5c3_Var17 string
369		templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(text)
370		if templ_7745c5c3_Err != nil {
371			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 67, Col: 40}
372		}
373		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
374		if templ_7745c5c3_Err != nil {
375			return templ_7745c5c3_Err
376		}
377		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</a></div>")
378		if templ_7745c5c3_Err != nil {
379			return templ_7745c5c3_Err
380		}
381		return nil
382	})
383}
384
385// Live is the connection state of the event stream, in the status bar.
386// Without a stream it reads "offline" and does nothing. The events of the
387// stream are fragments that ermiteLive (ermite.js) swaps in the page.
388func Live(l Layout) templ.Component {
389	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
390		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
391		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
392			return templ_7745c5c3_CtxErr
393		}
394		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
395		if !templ_7745c5c3_IsBuffer {
396			defer func() {
397				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
398				if templ_7745c5c3_Err == nil {
399					templ_7745c5c3_Err = templ_7745c5c3_BufErr
400				}
401			}()
402		}
403		ctx = templ.InitializeContext(ctx)
404		templ_7745c5c3_Var18 := templ.GetChildren(ctx)
405		if templ_7745c5c3_Var18 == nil {
406			templ_7745c5c3_Var18 = templ.NopComponent
407		}
408		ctx = templ.ClearChildren(ctx)
409		if l.Live && l.LiveURL != "" {
410			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<span class=\"st-live\" data-state=\"offline\" role=\"status\" hx-sse:connect=\"")
411			if templ_7745c5c3_Err != nil {
412				return templ_7745c5c3_Err
413			}
414			var templ_7745c5c3_Var19 string
415			templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.ResolveAttributeValue(l.LiveURL)
416			if templ_7745c5c3_Err != nil {
417				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 80, Col: 29}
418			}
419			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var19)
420			if templ_7745c5c3_Err != nil {
421				return templ_7745c5c3_Err
422			}
423			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "\" hx-swap=\"none\" :text=\"data.state\" :title=\"data.state === 'live' ? 'receiving updates over SSE' : 'not connected to the event stream'\" hx-on=\"htmx:sse:after:connection -> data.state = 'live';\n           htmx:sse:close, htmx:sse:error -> data.state = 'offline';\n           home-list, repo-last-push, refs-list, commits-head -> ermiteLive.swap(event.detail.data);\n           gap -> ermiteLive.reload()\">offline</span>")
424			if templ_7745c5c3_Err != nil {
425				return templ_7745c5c3_Err
426			}
427		} else {
428			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<span class=\"st-live\" data-state=\"offline\" role=\"status\" title=\"not connected to the event stream\">offline</span>")
429			if templ_7745c5c3_Err != nil {
430				return templ_7745c5c3_Err
431			}
432		}
433		return nil
434	})
435}
436
437var _ = 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 2

Tags 45

↑↓ moveenter openesc close