v0.8.0 eaf4295

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// LiveSlot is the place of a live banner, empty: a status region that stays
299// in the page. The live updates (ermiteLive in ermite.js) replace its children,
300// never the element, so that a screen reader announces the new banner (a
301// region that is inserted with its content is not announced).
302func LiveSlot(id string) templ.Component {
303	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
304		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
305		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
306			return templ_7745c5c3_CtxErr
307		}
308		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
309		if !templ_7745c5c3_IsBuffer {
310			defer func() {
311				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
312				if templ_7745c5c3_Err == nil {
313					templ_7745c5c3_Err = templ_7745c5c3_BufErr
314				}
315			}()
316		}
317		ctx = templ.InitializeContext(ctx)
318		templ_7745c5c3_Var14 := templ.GetChildren(ctx)
319		if templ_7745c5c3_Var14 == nil {
320			templ_7745c5c3_Var14 = templ.NopComponent
321		}
322		ctx = templ.ClearChildren(ctx)
323		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<div id=\"")
324		if templ_7745c5c3_Err != nil {
325			return templ_7745c5c3_Err
326		}
327		var templ_7745c5c3_Var15 string
328		templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.ResolveAttributeValue(id)
329		if templ_7745c5c3_Err != nil {
330			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 63, Col: 13}
331		}
332		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var15)
333		if templ_7745c5c3_Err != nil {
334			return templ_7745c5c3_Err
335		}
336		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "\" class=\"live-slot\" role=\"status\" data-slot></div>")
337		if templ_7745c5c3_Err != nil {
338			return templ_7745c5c3_Err
339		}
340		return nil
341	})
342}
343
344// liveBanner is the slot with its banner: a link that reloads or opens the
345// page. Only the children of the element reach the page that has the slot.
346func liveBanner(id, text, href string) templ.Component {
347	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
348		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
349		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
350			return templ_7745c5c3_CtxErr
351		}
352		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
353		if !templ_7745c5c3_IsBuffer {
354			defer func() {
355				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
356				if templ_7745c5c3_Err == nil {
357					templ_7745c5c3_Err = templ_7745c5c3_BufErr
358				}
359			}()
360		}
361		ctx = templ.InitializeContext(ctx)
362		templ_7745c5c3_Var16 := templ.GetChildren(ctx)
363		if templ_7745c5c3_Var16 == nil {
364			templ_7745c5c3_Var16 = templ.NopComponent
365		}
366		ctx = templ.ClearChildren(ctx)
367		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<div id=\"")
368		if templ_7745c5c3_Err != nil {
369			return templ_7745c5c3_Err
370		}
371		var templ_7745c5c3_Var17 string
372		templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.ResolveAttributeValue(id)
373		if templ_7745c5c3_Err != nil {
374			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 69, Col: 13}
375		}
376		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var17)
377		if templ_7745c5c3_Err != nil {
378			return templ_7745c5c3_Err
379		}
380		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\" class=\"live-slot\" role=\"status\" data-slot><a href=\"")
381		if templ_7745c5c3_Err != nil {
382			return templ_7745c5c3_Err
383		}
384		var templ_7745c5c3_Var18 templ.SafeURL
385		templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
386		if templ_7745c5c3_Err != nil {
387			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 69, Col: 87}
388		}
389		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
390		if templ_7745c5c3_Err != nil {
391			return templ_7745c5c3_Err
392		}
393		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "\">")
394		if templ_7745c5c3_Err != nil {
395			return templ_7745c5c3_Err
396		}
397		var templ_7745c5c3_Var19 string
398		templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(text)
399		if templ_7745c5c3_Err != nil {
400			return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 69, Col: 96}
401		}
402		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
403		if templ_7745c5c3_Err != nil {
404			return templ_7745c5c3_Err
405		}
406		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</a></div>")
407		if templ_7745c5c3_Err != nil {
408			return templ_7745c5c3_Err
409		}
410		return nil
411	})
412}
413
414// CommitsBanner announces new commits on the branch the page lists. It links
415// to the first page of the branch.
416func CommitsBanner(text, href string) templ.Component {
417	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
418		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
419		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
420			return templ_7745c5c3_CtxErr
421		}
422		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
423		if !templ_7745c5c3_IsBuffer {
424			defer func() {
425				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
426				if templ_7745c5c3_Err == nil {
427					templ_7745c5c3_Err = templ_7745c5c3_BufErr
428				}
429			}()
430		}
431		ctx = templ.InitializeContext(ctx)
432		templ_7745c5c3_Var20 := templ.GetChildren(ctx)
433		if templ_7745c5c3_Var20 == nil {
434			templ_7745c5c3_Var20 = templ.NopComponent
435		}
436		ctx = templ.ClearChildren(ctx)
437		templ_7745c5c3_Err = liveBanner("commits-head", text, href).Render(ctx, templ_7745c5c3_Buffer)
438		if templ_7745c5c3_Err != nil {
439			return templ_7745c5c3_Err
440		}
441		return nil
442	})
443}
444
445// MRNotice tells a merge request page that it is out of date, or the list that
446// its content changed.
447func MRNotice(text, href string) templ.Component {
448	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
449		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
450		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
451			return templ_7745c5c3_CtxErr
452		}
453		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
454		if !templ_7745c5c3_IsBuffer {
455			defer func() {
456				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
457				if templ_7745c5c3_Err == nil {
458					templ_7745c5c3_Err = templ_7745c5c3_BufErr
459				}
460			}()
461		}
462		ctx = templ.InitializeContext(ctx)
463		templ_7745c5c3_Var21 := templ.GetChildren(ctx)
464		if templ_7745c5c3_Var21 == nil {
465			templ_7745c5c3_Var21 = templ.NopComponent
466		}
467		ctx = templ.ClearChildren(ctx)
468		templ_7745c5c3_Err = liveBanner("mr-notice", text, href).Render(ctx, templ_7745c5c3_Buffer)
469		if templ_7745c5c3_Err != nil {
470			return templ_7745c5c3_Err
471		}
472		return nil
473	})
474}
475
476// Live is the connection to the event stream, in the hint badge. It shows
477// only once a connection was lost: a page that never connected, or that is
478// live, says nothing. The events of the stream are fragments that ermiteLive
479// (ermite.js) swaps in the page. A page without a stream renders nothing.
480//
481// hx-sse retries a lost connection for ever, with a growing delay. A refusal
482// that will not change (404: the repository is gone or hidden; 401) is handled
483// by ermiteLive.error, which has the page fetch itself again.
484func Live(l Layout) templ.Component {
485	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
486		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
487		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
488			return templ_7745c5c3_CtxErr
489		}
490		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
491		if !templ_7745c5c3_IsBuffer {
492			defer func() {
493				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
494				if templ_7745c5c3_Err == nil {
495					templ_7745c5c3_Err = templ_7745c5c3_BufErr
496				}
497			}()
498		}
499		ctx = templ.InitializeContext(ctx)
500		templ_7745c5c3_Var22 := templ.GetChildren(ctx)
501		if templ_7745c5c3_Var22 == nil {
502			templ_7745c5c3_Var22 = templ.NopComponent
503		}
504		ctx = templ.ClearChildren(ctx)
505		if l.Live && l.LiveURL != "" {
506			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<span class=\"hint-live\" data-state=\"connecting\" hx-sse:connect=\"")
507			if templ_7745c5c3_Err != nil {
508				return templ_7745c5c3_Err
509			}
510			var templ_7745c5c3_Var23 string
511			templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.ResolveAttributeValue(l.LiveURL)
512			if templ_7745c5c3_Err != nil {
513				return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/fragments.templ`, Line: 97, Col: 29}
514			}
515			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var23)
516			if templ_7745c5c3_Err != nil {
517				return templ_7745c5c3_Err
518			}
519			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "\" hx-swap=\"none\" :text=\"data.state === 'offline' ? 'live updates paused' : ''\" hx-on=\"htmx:sse:after:connection -> data.state = 'live';\n           htmx:sse:close, htmx:sse:error -> data.state = 'offline';\n           htmx:sse:error -> ermiteLive.error(event.detail.status);\n           htmx:sse:before:connection -> ermiteLive.gate(event);\n           home-list, repo-last-push, refs-list, commits-head, mr-notice, ci-run, ci-job -> ermiteLive.swap(event.detail.data);\n           gap -> ermiteLive.reload()\"></span>")
520			if templ_7745c5c3_Err != nil {
521				return templ_7745c5c3_Err
522			}
523		}
524		return nil
525	})
526}
527
528var _ = 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