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// Commit is a commit: the message and facts, the diff tools, the diff.
14func Commit(l Layout, p CommitPage) templ.Component {
15 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
16 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
17 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
18 return templ_7745c5c3_CtxErr
19 }
20 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
21 if !templ_7745c5c3_IsBuffer {
22 defer func() {
23 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
24 if templ_7745c5c3_Err == nil {
25 templ_7745c5c3_Err = templ_7745c5c3_BufErr
26 }
27 }()
28 }
29 ctx = templ.InitializeContext(ctx)
30 templ_7745c5c3_Var1 := templ.GetChildren(ctx)
31 if templ_7745c5c3_Var1 == nil {
32 templ_7745c5c3_Var1 = templ.NopComponent
33 }
34 ctx = templ.ClearChildren(ctx)
35 templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
36 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
37 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
38 if !templ_7745c5c3_IsBuffer {
39 defer func() {
40 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
41 if templ_7745c5c3_Err == nil {
42 templ_7745c5c3_Err = templ_7745c5c3_BufErr
43 }
44 }()
45 }
46 ctx = templ.InitializeContext(ctx)
47 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<header class=\"show\"><h1>")
48 if templ_7745c5c3_Err != nil {
49 return templ_7745c5c3_Err
50 }
51 var templ_7745c5c3_Var3 string
52 templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(p.Subject)
53 if templ_7745c5c3_Err != nil {
54 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 9, Col: 18}
55 }
56 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
57 if templ_7745c5c3_Err != nil {
58 return templ_7745c5c3_Err
59 }
60 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</h1>")
61 if templ_7745c5c3_Err != nil {
62 return templ_7745c5c3_Err
63 }
64 if p.Body != "" {
65 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<pre class=\"msg\">")
66 if templ_7745c5c3_Err != nil {
67 return templ_7745c5c3_Err
68 }
69 var templ_7745c5c3_Var4 string
70 templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(p.Body)
71 if templ_7745c5c3_Err != nil {
72 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 11, Col: 29}
73 }
74 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
75 if templ_7745c5c3_Err != nil {
76 return templ_7745c5c3_Err
77 }
78 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</pre>")
79 if templ_7745c5c3_Err != nil {
80 return templ_7745c5c3_Err
81 }
82 }
83 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "<dl class=\"kv show-kv\"><dt>commit</dt><dd>")
84 if templ_7745c5c3_Err != nil {
85 return templ_7745c5c3_Err
86 }
87 var templ_7745c5c3_Var5 string
88 templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(p.SHA)
89 if templ_7745c5c3_Err != nil {
90 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 15, Col: 15}
91 }
92 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
93 if templ_7745c5c3_Err != nil {
94 return templ_7745c5c3_Err
95 }
96 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "</dd><dt>author</dt><dd>")
97 if templ_7745c5c3_Err != nil {
98 return templ_7745c5c3_Err
99 }
100 templ_7745c5c3_Err = personView(p.Author).Render(ctx, templ_7745c5c3_Buffer)
101 if templ_7745c5c3_Err != nil {
102 return templ_7745c5c3_Err
103 }
104 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "</dd>")
105 if templ_7745c5c3_Err != nil {
106 return templ_7745c5c3_Err
107 }
108 if p.Committer != nil {
109 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<dt>committer</dt><dd>")
110 if templ_7745c5c3_Err != nil {
111 return templ_7745c5c3_Err
112 }
113 templ_7745c5c3_Err = personView(*p.Committer).Render(ctx, templ_7745c5c3_Buffer)
114 if templ_7745c5c3_Err != nil {
115 return templ_7745c5c3_Err
116 }
117 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</dd>")
118 if templ_7745c5c3_Err != nil {
119 return templ_7745c5c3_Err
120 }
121 }
122 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "<dt>")
123 if templ_7745c5c3_Err != nil {
124 return templ_7745c5c3_Err
125 }
126 if p.Merge {
127 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "merge of")
128 if templ_7745c5c3_Err != nil {
129 return templ_7745c5c3_Err
130 }
131 } else {
132 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "parent")
133 if templ_7745c5c3_Err != nil {
134 return templ_7745c5c3_Err
135 }
136 }
137 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</dt><dd>")
138 if templ_7745c5c3_Err != nil {
139 return templ_7745c5c3_Err
140 }
141 if p.Root {
142 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "none (root commit) ")
143 if templ_7745c5c3_Err != nil {
144 return templ_7745c5c3_Err
145 }
146 }
147 for i, par := range p.Parents {
148 if i > 0 {
149 var templ_7745c5c3_Var6 string
150 templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(" + ")
151 if templ_7745c5c3_Err != nil {
152 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 35, Col: 14}
153 }
154 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
155 if templ_7745c5c3_Err != nil {
156 return templ_7745c5c3_Err
157 }
158 }
159 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, " <a href=\"")
160 if templ_7745c5c3_Err != nil {
161 return templ_7745c5c3_Err
162 }
163 var templ_7745c5c3_Var7 templ.SafeURL
164 templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(par.Href))
165 if templ_7745c5c3_Err != nil {
166 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 37, Col: 39}
167 }
168 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
169 if templ_7745c5c3_Err != nil {
170 return templ_7745c5c3_Err
171 }
172 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\">")
173 if templ_7745c5c3_Err != nil {
174 return templ_7745c5c3_Err
175 }
176 var templ_7745c5c3_Var8 string
177 templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(par.Label)
178 if templ_7745c5c3_Err != nil {
179 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 37, Col: 53}
180 }
181 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
182 if templ_7745c5c3_Err != nil {
183 return templ_7745c5c3_Err
184 }
185 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "</a> ")
186 if templ_7745c5c3_Err != nil {
187 return templ_7745c5c3_Err
188 }
189 }
190 if p.Merge {
191 var templ_7745c5c3_Var9 string
192 templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(" · diff against the first parent")
193 if templ_7745c5c3_Err != nil {
194 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 40, Col: 43}
195 }
196 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9))
197 if templ_7745c5c3_Err != nil {
198 return templ_7745c5c3_Err
199 }
200 }
201 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</dd>")
202 if templ_7745c5c3_Err != nil {
203 return templ_7745c5c3_Err
204 }
205 if p.Sig != nil {
206 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<dt>signature</dt><dd>")
207 if templ_7745c5c3_Err != nil {
208 return templ_7745c5c3_Err
209 }
210 templ_7745c5c3_Err = signaturePill(p.Sig).Render(ctx, templ_7745c5c3_Buffer)
211 if templ_7745c5c3_Err != nil {
212 return templ_7745c5c3_Err
213 }
214 if p.Verification.Fingerprint != "" {
215 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<code>")
216 if templ_7745c5c3_Err != nil {
217 return templ_7745c5c3_Err
218 }
219 var templ_7745c5c3_Var10 string
220 templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(p.Verification.Fingerprint)
221 if templ_7745c5c3_Err != nil {
222 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 48, Col: 41}
223 }
224 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
225 if templ_7745c5c3_Err != nil {
226 return templ_7745c5c3_Err
227 }
228 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</code> ")
229 if templ_7745c5c3_Err != nil {
230 return templ_7745c5c3_Err
231 }
232 }
233 if p.Verification.KeyTitle != "" {
234 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "<span class=\"dim\">")
235 if templ_7745c5c3_Err != nil {
236 return templ_7745c5c3_Err
237 }
238 var templ_7745c5c3_Var11 string
239 templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs("· " + visibleText(p.Verification.KeyTitle))
240 if templ_7745c5c3_Err != nil {
241 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 51, Col: 71}
242 }
243 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
244 if templ_7745c5c3_Err != nil {
245 return templ_7745c5c3_Err
246 }
247 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</span> ")
248 if templ_7745c5c3_Err != nil {
249 return templ_7745c5c3_Err
250 }
251 }
252 if p.Sig.Class != "sig-none" {
253 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<span class=\"sig-why dim\">")
254 if templ_7745c5c3_Err != nil {
255 return templ_7745c5c3_Err
256 }
257 var templ_7745c5c3_Var12 string
258 templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(p.Sig.Reason)
259 if templ_7745c5c3_Err != nil {
260 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 54, Col: 47}
261 }
262 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
263 if templ_7745c5c3_Err != nil {
264 return templ_7745c5c3_Err
265 }
266 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</span>")
267 if templ_7745c5c3_Err != nil {
268 return templ_7745c5c3_Err
269 }
270 }
271 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</dd>")
272 if templ_7745c5c3_Err != nil {
273 return templ_7745c5c3_Err
274 }
275 }
276 if p.Checks.Total > 0 {
277 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "<dt>checks</dt><dd>")
278 if templ_7745c5c3_Err != nil {
279 return templ_7745c5c3_Err
280 }
281 templ_7745c5c3_Err = CommitChecks(p.Checks).Render(ctx, templ_7745c5c3_Buffer)
282 if templ_7745c5c3_Err != nil {
283 return templ_7745c5c3_Err
284 }
285 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</dd>")
286 if templ_7745c5c3_Err != nil {
287 return templ_7745c5c3_Err
288 }
289 }
290 if len(p.Refs) > 0 {
291 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "<dt>refs</dt><dd>")
292 if templ_7745c5c3_Err != nil {
293 return templ_7745c5c3_Err
294 }
295 for _, r := range p.Refs {
296 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<span class=\"pill\">")
297 if templ_7745c5c3_Err != nil {
298 return templ_7745c5c3_Err
299 }
300 var templ_7745c5c3_Var13 string
301 templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(r)
302 if templ_7745c5c3_Err != nil {
303 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 66, Col: 29}
304 }
305 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
306 if templ_7745c5c3_Err != nil {
307 return templ_7745c5c3_Err
308 }
309 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</span>")
310 if templ_7745c5c3_Err != nil {
311 return templ_7745c5c3_Err
312 }
313 }
314 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "</dd>")
315 if templ_7745c5c3_Err != nil {
316 return templ_7745c5c3_Err
317 }
318 }
319 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "</dl></header><div class=\"diff-tools\" role=\"group\" aria-label=\"Diff view\"><span class=\"dim\">")
320 if templ_7745c5c3_Err != nil {
321 return templ_7745c5c3_Err
322 }
323 var templ_7745c5c3_Var14 string
324 templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(plural(p.NFiles, "file", "files"))
325 if templ_7745c5c3_Err != nil {
326 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 73, Col: 56}
327 }
328 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
329 if templ_7745c5c3_Err != nil {
330 return templ_7745c5c3_Err
331 }
332 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, " · <span class=\"plus\">+")
333 if templ_7745c5c3_Err != nil {
334 return templ_7745c5c3_Err
335 }
336 var templ_7745c5c3_Var15 string
337 templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Adds))
338 if templ_7745c5c3_Err != nil {
339 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 73, Col: 96}
340 }
341 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
342 if templ_7745c5c3_Err != nil {
343 return templ_7745c5c3_Err
344 }
345 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "</span> <span class=\"minus\">-")
346 if templ_7745c5c3_Err != nil {
347 return templ_7745c5c3_Err
348 }
349 var templ_7745c5c3_Var16 string
350 templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Dels))
351 if templ_7745c5c3_Err != nil {
352 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 73, Col: 141}
353 }
354 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
355 if templ_7745c5c3_Err != nil {
356 return templ_7745c5c3_Err
357 }
358 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "</span></span> <span class=\"grow\"></span>")
359 if templ_7745c5c3_Err != nil {
360 return templ_7745c5c3_Err
361 }
362 templ_7745c5c3_Err = diffViewMenu(p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
363 if templ_7745c5c3_Err != nil {
364 return templ_7745c5c3_Err
365 }
366 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "</div>")
367 if templ_7745c5c3_Err != nil {
368 return templ_7745c5c3_Err
369 }
370 if p.Invisible {
371 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "<p class=\"notice\">this diff holds invisible characters (direction controls, zero-width characters). They are shown as <span class=\"inv\"><U+XXXX></span> markers, never applied.</p>")
372 if templ_7745c5c3_Err != nil {
373 return templ_7745c5c3_Err
374 }
375 }
376 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, " ")
377 if templ_7745c5c3_Err != nil {
378 return templ_7745c5c3_Err
379 }
380 if p.Note != "" {
381 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "<p class=\"notice\">")
382 if templ_7745c5c3_Err != nil {
383 return templ_7745c5c3_Err
384 }
385 var templ_7745c5c3_Var17 string
386 templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
387 if templ_7745c5c3_Err != nil {
388 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 84, Col: 29}
389 }
390 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
391 if templ_7745c5c3_Err != nil {
392 return templ_7745c5c3_Err
393 }
394 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "</p>")
395 if templ_7745c5c3_Err != nil {
396 return templ_7745c5c3_Err
397 }
398 }
399 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, " <div id=\"diffs\"")
400 if templ_7745c5c3_Err != nil {
401 return templ_7745c5c3_Err
402 }
403 if p.Both {
404 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, " data-diff=\"")
405 if templ_7745c5c3_Err != nil {
406 return templ_7745c5c3_Err
407 }
408 var templ_7745c5c3_Var18 string
409 templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)
410 if templ_7745c5c3_Err != nil {
411 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 89, Col: 22}
412 }
413 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var18)
414 if templ_7745c5c3_Err != nil {
415 return templ_7745c5c3_Err
416 }
417 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "\"")
418 if templ_7745c5c3_Err != nil {
419 return templ_7745c5c3_Err
420 }
421 } else {
422 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, " data-view=\"")
423 if templ_7745c5c3_Err != nil {
424 return templ_7745c5c3_Err
425 }
426 var templ_7745c5c3_Var19 string
427 templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)
428 if templ_7745c5c3_Err != nil {
429 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 91, Col: 22}
430 }
431 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var19)
432 if templ_7745c5c3_Err != nil {
433 return templ_7745c5c3_Err
434 }
435 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\"")
436 if templ_7745c5c3_Err != nil {
437 return templ_7745c5c3_Err
438 }
439 }
440 if p.Both && !p.Pinned {
441 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, " hx-live=\"this.dataset.diff = sessionStorage.getItem('diff') || this.dataset.diff\"")
442 if templ_7745c5c3_Err != nil {
443 return templ_7745c5c3_Err
444 }
445 }
446 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, ">")
447 if templ_7745c5c3_Err != nil {
448 return templ_7745c5c3_Err
449 }
450 for _, f := range p.Files {
451 templ_7745c5c3_Err = DiffFileView(f, p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
452 if templ_7745c5c3_Err != nil {
453 return templ_7745c5c3_Err
454 }
455 }
456 if len(p.Files) == 0 {
457 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, "<p class=\"note\">no changed files")
458 if templ_7745c5c3_Err != nil {
459 return templ_7745c5c3_Err
460 }
461 var templ_7745c5c3_Var20 string
462 templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
463 if templ_7745c5c3_Err != nil {
464 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 101, Col: 41}
465 }
466 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var20))
467 if templ_7745c5c3_Err != nil {
468 return templ_7745c5c3_Err
469 }
470 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, " ")
471 if templ_7745c5c3_Err != nil {
472 return templ_7745c5c3_Err
473 }
474 if p.Merge {
475 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "against the first parent.")
476 if templ_7745c5c3_Err != nil {
477 return templ_7745c5c3_Err
478 }
479 } else {
480 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, "in this commit.")
481 if templ_7745c5c3_Err != nil {
482 return templ_7745c5c3_Err
483 }
484 }
485 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "</p>")
486 if templ_7745c5c3_Err != nil {
487 return templ_7745c5c3_Err
488 }
489 }
490 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</div>")
491 if templ_7745c5c3_Err != nil {
492 return templ_7745c5c3_Err
493 }
494 return nil
495 })
496 templ_7745c5c3_Err = Shell(l, commitRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
497 if templ_7745c5c3_Err != nil {
498 return templ_7745c5c3_Err
499 }
500 return nil
501 })
502}
503
504// diffViewMenu is the layout of the diff (unified, the default, or split) and
505// the fold of its files, in one menu: a <details> that works without scripts;
506// u, d and x still act without opening it. Its button names the layout shown.
507func diffViewMenu(p DiffView) templ.Component {
508 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
509 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
510 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
511 return templ_7745c5c3_CtxErr
512 }
513 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
514 if !templ_7745c5c3_IsBuffer {
515 defer func() {
516 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
517 if templ_7745c5c3_Err == nil {
518 templ_7745c5c3_Err = templ_7745c5c3_BufErr
519 }
520 }()
521 }
522 ctx = templ.InitializeContext(ctx)
523 templ_7745c5c3_Var21 := templ.GetChildren(ctx)
524 if templ_7745c5c3_Var21 == nil {
525 templ_7745c5c3_Var21 = templ.NopComponent
526 }
527 ctx = templ.ClearChildren(ctx)
528 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<details class=\"menu vmenu\"><summary class=\"btn\" aria-label=\"Diff view\">")
529 if templ_7745c5c3_Err != nil {
530 return templ_7745c5c3_Err
531 }
532 if p.Both {
533 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, "<span hx-live=\"this.textContent = q('#diffs').attr['data-mobile'] !== 'true' && q('#diffs').attr['data-diff'] === 'split' ? 'Split' : 'Unified'\">")
534 if templ_7745c5c3_Err != nil {
535 return templ_7745c5c3_Err
536 }
537 var templ_7745c5c3_Var22 string
538 templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.JoinStringErrs(viewLabel(p.View))
539 if templ_7745c5c3_Err != nil {
540 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 120, Col: 168}
541 }
542 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var22))
543 if templ_7745c5c3_Err != nil {
544 return templ_7745c5c3_Err
545 }
546 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "</span>")
547 if templ_7745c5c3_Err != nil {
548 return templ_7745c5c3_Err
549 }
550 } else {
551 var templ_7745c5c3_Var23 string
552 templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(viewLabel(p.View))
553 if templ_7745c5c3_Err != nil {
554 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 122, Col: 23}
555 }
556 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
557 if templ_7745c5c3_Err != nil {
558 return templ_7745c5c3_Err
559 }
560 }
561 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "</summary><div class=\"menu-pop\" role=\"group\" aria-label=\"Diff view\">")
562 if templ_7745c5c3_Err != nil {
563 return templ_7745c5c3_Err
564 }
565 templ_7745c5c3_Err = viewLink(p, "unified", "Unified", "u", p.UnifiedHref).Render(ctx, templ_7745c5c3_Buffer)
566 if templ_7745c5c3_Err != nil {
567 return templ_7745c5c3_Err
568 }
569 templ_7745c5c3_Err = viewLink(p, "split", "Split", "d", p.SplitHref).Render(ctx, templ_7745c5c3_Buffer)
570 if templ_7745c5c3_Err != nil {
571 return templ_7745c5c3_Err
572 }
573 templ_7745c5c3_Err = collapseButton().Render(ctx, templ_7745c5c3_Buffer)
574 if templ_7745c5c3_Err != nil {
575 return templ_7745c5c3_Err
576 }
577 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "</div></details>")
578 if templ_7745c5c3_Err != nil {
579 return templ_7745c5c3_Err
580 }
581 return nil
582 })
583}
584
585// viewLink is a button of the diff tools. It is a link, so that the split
586// layout works without JavaScript; with it, and when both layouts are in the
587// page, a click only flips the layout.
588func viewLink(p DiffView, view, label, key, href string) templ.Component {
589 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
590 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
591 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
592 return templ_7745c5c3_CtxErr
593 }
594 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
595 if !templ_7745c5c3_IsBuffer {
596 defer func() {
597 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
598 if templ_7745c5c3_Err == nil {
599 templ_7745c5c3_Err = templ_7745c5c3_BufErr
600 }
601 }()
602 }
603 ctx = templ.InitializeContext(ctx)
604 templ_7745c5c3_Var24 := templ.GetChildren(ctx)
605 if templ_7745c5c3_Var24 == nil {
606 templ_7745c5c3_Var24 = templ.NopComponent
607 }
608 ctx = templ.ClearChildren(ctx)
609 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "<a href=\"")
610 if templ_7745c5c3_Err != nil {
611 return templ_7745c5c3_Err
612 }
613 var templ_7745c5c3_Var25 templ.SafeURL
614 templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
615 if templ_7745c5c3_Err != nil {
616 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 138, Col: 28}
617 }
618 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var25))
619 if templ_7745c5c3_Err != nil {
620 return templ_7745c5c3_Err
621 }
622 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "\" class=\"btn vbtn\" data-view=\"")
623 if templ_7745c5c3_Err != nil {
624 return templ_7745c5c3_Err
625 }
626 var templ_7745c5c3_Var26 string
627 templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.ResolveAttributeValue(view)
628 if templ_7745c5c3_Err != nil {
629 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 140, Col: 18}
630 }
631 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26)
632 if templ_7745c5c3_Err != nil {
633 return templ_7745c5c3_Err
634 }
635 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "\" aria-keyshortcuts=\"")
636 if templ_7745c5c3_Err != nil {
637 return templ_7745c5c3_Err
638 }
639 var templ_7745c5c3_Var27 string
640 templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.ResolveAttributeValue(key)
641 if templ_7745c5c3_Err != nil {
642 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 141, Col: 25}
643 }
644 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var27)
645 if templ_7745c5c3_Err != nil {
646 return templ_7745c5c3_Err
647 }
648 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "\"")
649 if templ_7745c5c3_Err != nil {
650 return templ_7745c5c3_Err
651 }
652 if view == "split" {
653 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, " :aria-disabled=\"q('#diffs').attr['data-mobile'] === 'true' ? 'true' : false\" :title=\"q('#diffs').attr['data-mobile'] === 'true' ? 'Split view requires a wider screen' : 'Split view'\"")
654 if templ_7745c5c3_Err != nil {
655 return templ_7745c5c3_Err
656 }
657 }
658 if p.View == view {
659 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, " aria-current=\"true\"")
660 if templ_7745c5c3_Err != nil {
661 return templ_7745c5c3_Err
662 }
663 }
664 if p.Both {
665 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, " data-fire=\"")
666 if templ_7745c5c3_Err != nil {
667 return templ_7745c5c3_Err
668 }
669 var templ_7745c5c3_Var28 string
670 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(view)
671 if templ_7745c5c3_Err != nil {
672 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 150, Col: 19}
673 }
674 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)
675 if templ_7745c5c3_Err != nil {
676 return templ_7745c5c3_Err
677 }
678 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\" :aria-current=\"(q('#diffs').attr['data-mobile'] === 'true' ? 'unified' : q('#diffs').attr['data-diff']) === this.dataset.view ? 'true' : false\"")
679 if templ_7745c5c3_Err != nil {
680 return templ_7745c5c3_Err
681 }
682 }
683 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, ">")
684 if templ_7745c5c3_Err != nil {
685 return templ_7745c5c3_Err
686 }
687 var templ_7745c5c3_Var29 string
688 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(label)
689 if templ_7745c5c3_Err != nil {
690 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 153, Col: 9}
691 }
692 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
693 if templ_7745c5c3_Err != nil {
694 return templ_7745c5c3_Err
695 }
696 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "<kbd aria-hidden=\"true\">")
697 if templ_7745c5c3_Err != nil {
698 return templ_7745c5c3_Err
699 }
700 var templ_7745c5c3_Var30 string
701 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(key)
702 if templ_7745c5c3_Err != nil {
703 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 153, Col: 40}
704 }
705 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
706 if templ_7745c5c3_Err != nil {
707 return templ_7745c5c3_Err
708 }
709 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "</kbd></a>")
710 if templ_7745c5c3_Err != nil {
711 return templ_7745c5c3_Err
712 }
713 return nil
714 })
715}
716
717// collapseButton folds every file of the diff, or opens them all again when
718// none is open; its label follows the state.
719func collapseButton() templ.Component {
720 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
721 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
722 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
723 return templ_7745c5c3_CtxErr
724 }
725 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
726 if !templ_7745c5c3_IsBuffer {
727 defer func() {
728 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
729 if templ_7745c5c3_Err == nil {
730 templ_7745c5c3_Err = templ_7745c5c3_BufErr
731 }
732 }()
733 }
734 ctx = templ.InitializeContext(ctx)
735 templ_7745c5c3_Var31 := templ.GetChildren(ctx)
736 if templ_7745c5c3_Var31 == nil {
737 templ_7745c5c3_Var31 = templ.NopComponent
738 }
739 ctx = templ.ClearChildren(ctx)
740 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "<button type=\"button\" aria-keyshortcuts=\"x\" data-js data-fire=\"collapse\" class=\"btn\"><span hx-live=\"this.textContent = q('[data-file][open]').count || !q('[data-file]').count ? 'Collapse all' : 'Expand all'\">Collapse all</span><kbd aria-hidden=\"true\">x</kbd></button>")
741 if templ_7745c5c3_Err != nil {
742 return templ_7745c5c3_Err
743 }
744 return nil
745 })
746}
747
748func personView(pr Person) templ.Component {
749 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
750 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
751 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
752 return templ_7745c5c3_CtxErr
753 }
754 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
755 if !templ_7745c5c3_IsBuffer {
756 defer func() {
757 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
758 if templ_7745c5c3_Err == nil {
759 templ_7745c5c3_Err = templ_7745c5c3_BufErr
760 }
761 }()
762 }
763 ctx = templ.InitializeContext(ctx)
764 templ_7745c5c3_Var32 := templ.GetChildren(ctx)
765 if templ_7745c5c3_Var32 == nil {
766 templ_7745c5c3_Var32 = templ.NopComponent
767 }
768 ctx = templ.ClearChildren(ctx)
769 var templ_7745c5c3_Var33 string
770 templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(pr.Name)
771 if templ_7745c5c3_Err != nil {
772 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 165, Col: 10}
773 }
774 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
775 if templ_7745c5c3_Err != nil {
776 return templ_7745c5c3_Err
777 }
778 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, " ")
779 if templ_7745c5c3_Err != nil {
780 return templ_7745c5c3_Err
781 }
782 if pr.WhenAt != "" {
783 var templ_7745c5c3_Var34 string
784 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
785 if templ_7745c5c3_Err != nil {
786 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 167, Col: 10}
787 }
788 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
789 if templ_7745c5c3_Err != nil {
790 return templ_7745c5c3_Err
791 }
792 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "<time datetime=\"")
793 if templ_7745c5c3_Err != nil {
794 return templ_7745c5c3_Err
795 }
796 var templ_7745c5c3_Var35 string
797 templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.ResolveAttributeValue(pr.WhenAt)
798 if templ_7745c5c3_Err != nil {
799 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 167, Col: 38}
800 }
801 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var35)
802 if templ_7745c5c3_Err != nil {
803 return templ_7745c5c3_Err
804 }
805 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "\" title=\"")
806 if templ_7745c5c3_Err != nil {
807 return templ_7745c5c3_Err
808 }
809 var templ_7745c5c3_Var36 string
810 templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.ResolveAttributeValue(pr.Abs)
811 if templ_7745c5c3_Err != nil {
812 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 167, Col: 55}
813 }
814 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var36)
815 if templ_7745c5c3_Err != nil {
816 return templ_7745c5c3_Err
817 }
818 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "\">")
819 if templ_7745c5c3_Err != nil {
820 return templ_7745c5c3_Err
821 }
822 var templ_7745c5c3_Var37 string
823 templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(pr.When)
824 if templ_7745c5c3_Err != nil {
825 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 167, Col: 67}
826 }
827 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
828 if templ_7745c5c3_Err != nil {
829 return templ_7745c5c3_Err
830 }
831 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "</time>")
832 if templ_7745c5c3_Err != nil {
833 return templ_7745c5c3_Err
834 }
835 var templ_7745c5c3_Var38 string
836 templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(" · " + pr.Abs)
837 if templ_7745c5c3_Err != nil {
838 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 167, Col: 93}
839 }
840 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
841 if templ_7745c5c3_Err != nil {
842 return templ_7745c5c3_Err
843 }
844 }
845 return nil
846 })
847}
848
849func commitRail(p CommitPage) templ.Component {
850 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
851 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
852 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
853 return templ_7745c5c3_CtxErr
854 }
855 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
856 if !templ_7745c5c3_IsBuffer {
857 defer func() {
858 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
859 if templ_7745c5c3_Err == nil {
860 templ_7745c5c3_Err = templ_7745c5c3_BufErr
861 }
862 }()
863 }
864 ctx = templ.InitializeContext(ctx)
865 templ_7745c5c3_Var39 := templ.GetChildren(ctx)
866 if templ_7745c5c3_Var39 == nil {
867 templ_7745c5c3_Var39 = templ.NopComponent
868 }
869 ctx = templ.ClearChildren(ctx)
870 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "<section aria-labelledby=\"r-files\"><h2 id=\"r-files\">Files <span class=\"count\">")
871 if templ_7745c5c3_Err != nil {
872 return templ_7745c5c3_Err
873 }
874 var templ_7745c5c3_Var40 string
875 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Files)))
876 if templ_7745c5c3_Err != nil {
877 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 173, Col: 65}
878 }
879 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
880 if templ_7745c5c3_Err != nil {
881 return templ_7745c5c3_Err
882 }
883 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</span></h2>")
884 if templ_7745c5c3_Err != nil {
885 return templ_7745c5c3_Err
886 }
887 templ_7745c5c3_Err = FileList(p.Files).Render(ctx, templ_7745c5c3_Buffer)
888 if templ_7745c5c3_Err != nil {
889 return templ_7745c5c3_Err
890 }
891 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "</section>")
892 if templ_7745c5c3_Err != nil {
893 return templ_7745c5c3_Err
894 }
895 return nil
896 })
897}
898
899// FileList is the table of contents of a diff: status letter, path, +n -m
900// and an ASCII bar. The row of the file in view is marked.
901func FileList(files []DiffFile) templ.Component {
902 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
903 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
904 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
905 return templ_7745c5c3_CtxErr
906 }
907 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
908 if !templ_7745c5c3_IsBuffer {
909 defer func() {
910 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
911 if templ_7745c5c3_Err == nil {
912 templ_7745c5c3_Err = templ_7745c5c3_BufErr
913 }
914 }()
915 }
916 ctx = templ.InitializeContext(ctx)
917 templ_7745c5c3_Var41 := templ.GetChildren(ctx)
918 if templ_7745c5c3_Var41 == nil {
919 templ_7745c5c3_Var41 = templ.NopComponent
920 }
921 ctx = templ.ClearChildren(ctx)
922 if len(files) > fileFilterMin {
923 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "<div class=\"ffilter\"><label for=\"files-filter\" class=\"sr\">filter the changed files</label> <input id=\"files-filter\" type=\"search\" placeholder=\"Filter files…\" autocomplete=\"off\" data-pick=\".files > li\" hx-on:input=\"ermite.filter(this)\"></div>")
924 if templ_7745c5c3_Err != nil {
925 return templ_7745c5c3_Err
926 }
927 }
928 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "<ol class=\"files\" aria-label=\"Changed files\">")
929 if templ_7745c5c3_Err != nil {
930 return templ_7745c5c3_Err
931 }
932 for _, f := range files {
933 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "<li><a href=\"")
934 if templ_7745c5c3_Err != nil {
935 return templ_7745c5c3_Err
936 }
937 var templ_7745c5c3_Var42 templ.SafeURL
938 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("#" + f.ID))
939 if templ_7745c5c3_Err != nil {
940 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 198, Col: 37}
941 }
942 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
943 if templ_7745c5c3_Err != nil {
944 return templ_7745c5c3_Err
945 }
946 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "\" title=\"")
947 if templ_7745c5c3_Err != nil {
948 return templ_7745c5c3_Err
949 }
950 var templ_7745c5c3_Var43 string
951 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path)
952 if templ_7745c5c3_Err != nil {
953 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 199, Col: 19}
954 }
955 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var43)
956 if templ_7745c5c3_Err != nil {
957 return templ_7745c5c3_Err
958 }
959 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "\" hx-on:click=\"(window.ermiteMR?.openFile || ermite.openFile)(this.hash.slice(1))\"><span class=\"st\" data-st=\"")
960 if templ_7745c5c3_Err != nil {
961 return templ_7745c5c3_Err
962 }
963 var templ_7745c5c3_Var44 string
964 templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Status)
965 if templ_7745c5c3_Err != nil {
966 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 202, Col: 40}
967 }
968 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var44)
969 if templ_7745c5c3_Err != nil {
970 return templ_7745c5c3_Err
971 }
972 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "\" title=\"")
973 if templ_7745c5c3_Err != nil {
974 return templ_7745c5c3_Err
975 }
976 var templ_7745c5c3_Var45 string
977 templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.ResolveAttributeValue(statusName(f.Status))
978 if templ_7745c5c3_Err != nil {
979 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 202, Col: 71}
980 }
981 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var45)
982 if templ_7745c5c3_Err != nil {
983 return templ_7745c5c3_Err
984 }
985 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "\">")
986 if templ_7745c5c3_Err != nil {
987 return templ_7745c5c3_Err
988 }
989 var templ_7745c5c3_Var46 string
990 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(f.Status)
991 if templ_7745c5c3_Err != nil {
992 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 202, Col: 84}
993 }
994 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
995 if templ_7745c5c3_Err != nil {
996 return templ_7745c5c3_Err
997 }
998 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</span> <span class=\"nm\"><span class=\"p\">")
999 if templ_7745c5c3_Err != nil {
1000 return templ_7745c5c3_Err
1001 }
1002 var templ_7745c5c3_Var47 string
1003 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(f.Name)
1004 if templ_7745c5c3_Err != nil {
1005 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 203, Col: 46}
1006 }
1007 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
1008 if templ_7745c5c3_Err != nil {
1009 return templ_7745c5c3_Err
1010 }
1011 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</span>")
1012 if templ_7745c5c3_Err != nil {
1013 return templ_7745c5c3_Err
1014 }
1015 var templ_7745c5c3_Var48 string
1016 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1017 if templ_7745c5c3_Err != nil {
1018 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 203, Col: 60}
1019 }
1020 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
1021 if templ_7745c5c3_Err != nil {
1022 return templ_7745c5c3_Err
1023 }
1024 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<span class=\"d\"><bdi>")
1025 if templ_7745c5c3_Err != nil {
1026 return templ_7745c5c3_Err
1027 }
1028 var templ_7745c5c3_Var49 string
1029 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(f.Dir)
1030 if templ_7745c5c3_Err != nil {
1031 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 203, Col: 90}
1032 }
1033 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
1034 if templ_7745c5c3_Err != nil {
1035 return templ_7745c5c3_Err
1036 }
1037 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "</bdi></span></span> ")
1038 if templ_7745c5c3_Err != nil {
1039 return templ_7745c5c3_Err
1040 }
1041 if f.OpenNotes > 0 {
1042 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "<span class=\"cn\" title=\"")
1043 if templ_7745c5c3_Err != nil {
1044 return templ_7745c5c3_Err
1045 }
1046 var templ_7745c5c3_Var50 string
1047 templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.ResolveAttributeValue(plural(f.OpenNotes, "open comment", "open comments"))
1048 if templ_7745c5c3_Err != nil {
1049 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 205, Col: 83}
1050 }
1051 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var50)
1052 if templ_7745c5c3_Err != nil {
1053 return templ_7745c5c3_Err
1054 }
1055 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "\">")
1056 if templ_7745c5c3_Err != nil {
1057 return templ_7745c5c3_Err
1058 }
1059 var templ_7745c5c3_Var51 string
1060 templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.OpenNotes))
1061 if templ_7745c5c3_Err != nil {
1062 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 205, Col: 105}
1063 }
1064 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
1065 if templ_7745c5c3_Err != nil {
1066 return templ_7745c5c3_Err
1067 }
1068 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "</span> ")
1069 if templ_7745c5c3_Err != nil {
1070 return templ_7745c5c3_Err
1071 }
1072 } else if f.Notes > 0 {
1073 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "<span class=\"cn done\" title=\"")
1074 if templ_7745c5c3_Err != nil {
1075 return templ_7745c5c3_Err
1076 }
1077 var templ_7745c5c3_Var52 string
1078 templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.ResolveAttributeValue(plural(f.Notes, "resolved comment", "resolved comments"))
1079 if templ_7745c5c3_Err != nil {
1080 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 207, Col: 92}
1081 }
1082 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var52)
1083 if templ_7745c5c3_Err != nil {
1084 return templ_7745c5c3_Err
1085 }
1086 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "\">")
1087 if templ_7745c5c3_Err != nil {
1088 return templ_7745c5c3_Err
1089 }
1090 var templ_7745c5c3_Var53 string
1091 templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Notes))
1092 if templ_7745c5c3_Err != nil {
1093 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 207, Col: 110}
1094 }
1095 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53))
1096 if templ_7745c5c3_Err != nil {
1097 return templ_7745c5c3_Err
1098 }
1099 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</span> ")
1100 if templ_7745c5c3_Err != nil {
1101 return templ_7745c5c3_Err
1102 }
1103 }
1104 if f.Bin {
1105 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<span class=\"n mute\">bin</span>")
1106 if templ_7745c5c3_Err != nil {
1107 return templ_7745c5c3_Err
1108 }
1109 } else {
1110 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "<span class=\"n\"><span class=\"plus\">+")
1111 if templ_7745c5c3_Err != nil {
1112 return templ_7745c5c3_Err
1113 }
1114 var templ_7745c5c3_Var54 string
1115 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Add))
1116 if templ_7745c5c3_Err != nil {
1117 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 212, Col: 55}
1118 }
1119 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
1120 if templ_7745c5c3_Err != nil {
1121 return templ_7745c5c3_Err
1122 }
1123 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "</span> <span class=\"minus\">-")
1124 if templ_7745c5c3_Err != nil {
1125 return templ_7745c5c3_Err
1126 }
1127 var templ_7745c5c3_Var55 string
1128 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Del))
1129 if templ_7745c5c3_Err != nil {
1130 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 212, Col: 99}
1131 }
1132 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1133 if templ_7745c5c3_Err != nil {
1134 return templ_7745c5c3_Err
1135 }
1136 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "</span></span>")
1137 if templ_7745c5c3_Err != nil {
1138 return templ_7745c5c3_Err
1139 }
1140 }
1141 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "</a></li>")
1142 if templ_7745c5c3_Err != nil {
1143 return templ_7745c5c3_Err
1144 }
1145 }
1146 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</ol>")
1147 if templ_7745c5c3_Err != nil {
1148 return templ_7745c5c3_Err
1149 }
1150 return nil
1151 })
1152}
1153
1154// DiffFileView is one file of the diff: a <details> (per-file collapse). The
1155// unified and the split tables are both in it; #diffs[data-diff] shows one.
1156// Every changed line keeps its +/- marker, so a change is never conveyed by
1157// colour alone.
1158func DiffFileView(f DiffFile, p DiffView) templ.Component {
1159 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1160 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1161 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1162 return templ_7745c5c3_CtxErr
1163 }
1164 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1165 if !templ_7745c5c3_IsBuffer {
1166 defer func() {
1167 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1168 if templ_7745c5c3_Err == nil {
1169 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1170 }
1171 }()
1172 }
1173 ctx = templ.InitializeContext(ctx)
1174 templ_7745c5c3_Var56 := templ.GetChildren(ctx)
1175 if templ_7745c5c3_Var56 == nil {
1176 templ_7745c5c3_Var56 = templ.NopComponent
1177 }
1178 ctx = templ.ClearChildren(ctx)
1179 var templ_7745c5c3_Var57 = []any{"dfile", "lnw-" + itoa(f.Digits)}
1180 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var57...)
1181 if templ_7745c5c3_Err != nil {
1182 return templ_7745c5c3_Err
1183 }
1184 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<details class=\"")
1185 if templ_7745c5c3_Err != nil {
1186 return templ_7745c5c3_Err
1187 }
1188 var templ_7745c5c3_Var58 string
1189 templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var57).String())
1190 if templ_7745c5c3_Err != nil {
1191 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1192 }
1193 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var58)
1194 if templ_7745c5c3_Err != nil {
1195 return templ_7745c5c3_Err
1196 }
1197 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "\" id=\"")
1198 if templ_7745c5c3_Err != nil {
1199 return templ_7745c5c3_Err
1200 }
1201 var templ_7745c5c3_Var59 string
1202 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID)
1203 if templ_7745c5c3_Err != nil {
1204 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 227, Col: 11}
1205 }
1206 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59)
1207 if templ_7745c5c3_Err != nil {
1208 return templ_7745c5c3_Err
1209 }
1210 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "\" data-file=\"")
1211 if templ_7745c5c3_Err != nil {
1212 return templ_7745c5c3_Err
1213 }
1214 var templ_7745c5c3_Var60 string
1215 templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Key)
1216 if templ_7745c5c3_Err != nil {
1217 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 228, Col: 19}
1218 }
1219 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60)
1220 if templ_7745c5c3_Err != nil {
1221 return templ_7745c5c3_Err
1222 }
1223 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "\"")
1224 if templ_7745c5c3_Err != nil {
1225 return templ_7745c5c3_Err
1226 }
1227 if f.Open {
1228 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, " open")
1229 if templ_7745c5c3_Err != nil {
1230 return templ_7745c5c3_Err
1231 }
1232 }
1233 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "><summary><span class=\"st\">")
1234 if templ_7745c5c3_Err != nil {
1235 return templ_7745c5c3_Err
1236 }
1237 var templ_7745c5c3_Var61 string
1238 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(f.Status)
1239 if templ_7745c5c3_Err != nil {
1240 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 234, Col: 30}
1241 }
1242 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61))
1243 if templ_7745c5c3_Err != nil {
1244 return templ_7745c5c3_Err
1245 }
1246 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "</span>")
1247 if templ_7745c5c3_Err != nil {
1248 return templ_7745c5c3_Err
1249 }
1250 var templ_7745c5c3_Var62 string
1251 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1252 if templ_7745c5c3_Err != nil {
1253 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 234, Col: 44}
1254 }
1255 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1256 if templ_7745c5c3_Err != nil {
1257 return templ_7745c5c3_Err
1258 }
1259 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "<span class=\"p\">")
1260 if templ_7745c5c3_Err != nil {
1261 return templ_7745c5c3_Err
1262 }
1263 var templ_7745c5c3_Var63 string
1264 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(f.Path)
1265 if templ_7745c5c3_Err != nil {
1266 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 234, Col: 70}
1267 }
1268 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63))
1269 if templ_7745c5c3_Err != nil {
1270 return templ_7745c5c3_Err
1271 }
1272 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "</span>")
1273 if templ_7745c5c3_Err != nil {
1274 return templ_7745c5c3_Err
1275 }
1276 var templ_7745c5c3_Var64 string
1277 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1278 if templ_7745c5c3_Err != nil {
1279 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 234, Col: 84}
1280 }
1281 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64))
1282 if templ_7745c5c3_Err != nil {
1283 return templ_7745c5c3_Err
1284 }
1285 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "<span class=\"plus\">+")
1286 if templ_7745c5c3_Err != nil {
1287 return templ_7745c5c3_Err
1288 }
1289 var templ_7745c5c3_Var65 string
1290 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Add))
1291 if templ_7745c5c3_Err != nil {
1292 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 234, Col: 119}
1293 }
1294 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1295 if templ_7745c5c3_Err != nil {
1296 return templ_7745c5c3_Err
1297 }
1298 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "</span>")
1299 if templ_7745c5c3_Err != nil {
1300 return templ_7745c5c3_Err
1301 }
1302 var templ_7745c5c3_Var66 string
1303 templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1304 if templ_7745c5c3_Err != nil {
1305 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 234, Col: 133}
1306 }
1307 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66))
1308 if templ_7745c5c3_Err != nil {
1309 return templ_7745c5c3_Err
1310 }
1311 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "<span class=\"minus\">-")
1312 if templ_7745c5c3_Err != nil {
1313 return templ_7745c5c3_Err
1314 }
1315 var templ_7745c5c3_Var67 string
1316 templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Del))
1317 if templ_7745c5c3_Err != nil {
1318 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 234, Col: 169}
1319 }
1320 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67))
1321 if templ_7745c5c3_Err != nil {
1322 return templ_7745c5c3_Err
1323 }
1324 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "</span> ")
1325 if templ_7745c5c3_Err != nil {
1326 return templ_7745c5c3_Err
1327 }
1328 if f.Note != "" {
1329 var templ_7745c5c3_Var68 string
1330 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1331 if templ_7745c5c3_Err != nil {
1332 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 236, Col: 9}
1333 }
1334 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))
1335 if templ_7745c5c3_Err != nil {
1336 return templ_7745c5c3_Err
1337 }
1338 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "<span class=\"note\">")
1339 if templ_7745c5c3_Err != nil {
1340 return templ_7745c5c3_Err
1341 }
1342 var templ_7745c5c3_Var69 string
1343 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.JoinStringErrs(f.Note)
1344 if templ_7745c5c3_Err != nil {
1345 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 236, Col: 38}
1346 }
1347 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var69))
1348 if templ_7745c5c3_Err != nil {
1349 return templ_7745c5c3_Err
1350 }
1351 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "</span>")
1352 if templ_7745c5c3_Err != nil {
1353 return templ_7745c5c3_Err
1354 }
1355 }
1356 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "</summary> ")
1357 if templ_7745c5c3_Err != nil {
1358 return templ_7745c5c3_Err
1359 }
1360 if f.Lazy {
1361 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, " ")
1362 if templ_7745c5c3_Err != nil {
1363 return templ_7745c5c3_Err
1364 }
1365 var templ_7745c5c3_Var70 = []any{"dlazy", "dlazy-" + itoa(f.Height)}
1366 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var70...)
1367 if templ_7745c5c3_Err != nil {
1368 return templ_7745c5c3_Err
1369 }
1370 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "<div class=\"")
1371 if templ_7745c5c3_Err != nil {
1372 return templ_7745c5c3_Err
1373 }
1374 var templ_7745c5c3_Var71 string
1375 templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var70).String())
1376 if templ_7745c5c3_Err != nil {
1377 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1378 }
1379 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var71)
1380 if templ_7745c5c3_Err != nil {
1381 return templ_7745c5c3_Err
1382 }
1383 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "\" data-src=\"")
1384 if templ_7745c5c3_Err != nil {
1385 return templ_7745c5c3_Err
1386 }
1387 var templ_7745c5c3_Var72 string
1388 templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Src)
1389 if templ_7745c5c3_Err != nil {
1390 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 243, Col: 69}
1391 }
1392 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72)
1393 if templ_7745c5c3_Err != nil {
1394 return templ_7745c5c3_Err
1395 }
1396 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "\" data-notes=\"")
1397 if templ_7745c5c3_Err != nil {
1398 return templ_7745c5c3_Err
1399 }
1400 var templ_7745c5c3_Var73 string
1401 templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Comments)
1402 if templ_7745c5c3_Err != nil {
1403 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 243, Col: 95}
1404 }
1405 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var73)
1406 if templ_7745c5c3_Err != nil {
1407 return templ_7745c5c3_Err
1408 }
1409 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, "\"><a href=\"")
1410 if templ_7745c5c3_Err != nil {
1411 return templ_7745c5c3_Err
1412 }
1413 var templ_7745c5c3_Var74 templ.SafeURL
1414 templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("?from=" + itoa(f.From) + "#" + f.ID))
1415 if templ_7745c5c3_Err != nil {
1416 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 244, Col: 65}
1417 }
1418 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var74))
1419 if templ_7745c5c3_Err != nil {
1420 return templ_7745c5c3_Err
1421 }
1422 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, "\">show this file</a></div>")
1423 if templ_7745c5c3_Err != nil {
1424 return templ_7745c5c3_Err
1425 }
1426 } else if len(f.Hunks) > 0 {
1427 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, "<div class=\"dscroll\">")
1428 if templ_7745c5c3_Err != nil {
1429 return templ_7745c5c3_Err
1430 }
1431 if p.ShowUnified {
1432 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "<table class=\"dt uni\" aria-label=\"")
1433 if templ_7745c5c3_Err != nil {
1434 return templ_7745c5c3_Err
1435 }
1436 var templ_7745c5c3_Var75 string
1437 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path + ", unified")
1438 if templ_7745c5c3_Err != nil {
1439 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 249, Col: 60}
1440 }
1441 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var75)
1442 if templ_7745c5c3_Err != nil {
1443 return templ_7745c5c3_Err
1444 }
1445 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, "\">")
1446 if templ_7745c5c3_Err != nil {
1447 return templ_7745c5c3_Err
1448 }
1449 for _, h := range f.Hunks {
1450 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "<tbody>")
1451 if templ_7745c5c3_Err != nil {
1452 return templ_7745c5c3_Err
1453 }
1454 if h.Gap != nil {
1455 templ_7745c5c3_Err = gapRow(*h.Gap, 4).Render(ctx, templ_7745c5c3_Buffer)
1456 if templ_7745c5c3_Err != nil {
1457 return templ_7745c5c3_Err
1458 }
1459 }
1460 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "<tr class=\"hunk\"><td colspan=\"4\">")
1461 if templ_7745c5c3_Err != nil {
1462 return templ_7745c5c3_Err
1463 }
1464 var templ_7745c5c3_Var76 string
1465 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinStringErrs(h.Header)
1466 if templ_7745c5c3_Err != nil {
1467 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 255, Col: 51}
1468 }
1469 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
1470 if templ_7745c5c3_Err != nil {
1471 return templ_7745c5c3_Err
1472 }
1473 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "</td></tr>")
1474 if templ_7745c5c3_Err != nil {
1475 return templ_7745c5c3_Err
1476 }
1477 for _, ln := range h.Lines {
1478 var templ_7745c5c3_Var77 = []any{ln.Kind, templ.KV("sel", ln.Selected)}
1479 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var77...)
1480 if templ_7745c5c3_Err != nil {
1481 return templ_7745c5c3_Err
1482 }
1483 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "<tr class=\"")
1484 if templ_7745c5c3_Err != nil {
1485 return templ_7745c5c3_Err
1486 }
1487 var templ_7745c5c3_Var78 string
1488 templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var77).String())
1489 if templ_7745c5c3_Err != nil {
1490 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1491 }
1492 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var78)
1493 if templ_7745c5c3_Err != nil {
1494 return templ_7745c5c3_Err
1495 }
1496 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "\"><td class=\"ln\">")
1497 if templ_7745c5c3_Err != nil {
1498 return templ_7745c5c3_Err
1499 }
1500 templ_7745c5c3_Err = gutter(ln.Old, ln.OldHref).Render(ctx, templ_7745c5c3_Buffer)
1501 if templ_7745c5c3_Err != nil {
1502 return templ_7745c5c3_Err
1503 }
1504 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "</td><td class=\"ln\">")
1505 if templ_7745c5c3_Err != nil {
1506 return templ_7745c5c3_Err
1507 }
1508 templ_7745c5c3_Err = gutter(ln.New, ln.NewHref).Render(ctx, templ_7745c5c3_Buffer)
1509 if templ_7745c5c3_Err != nil {
1510 return templ_7745c5c3_Err
1511 }
1512 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, "</td><td class=\"m\">")
1513 if templ_7745c5c3_Err != nil {
1514 return templ_7745c5c3_Err
1515 }
1516 var templ_7745c5c3_Var79 string
1517 templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
1518 if templ_7745c5c3_Err != nil {
1519 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 260, Col: 33}
1520 }
1521 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var79))
1522 if templ_7745c5c3_Err != nil {
1523 return templ_7745c5c3_Err
1524 }
1525 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 135, "</td><td class=\"tx chroma\">")
1526 if templ_7745c5c3_Err != nil {
1527 return templ_7745c5c3_Err
1528 }
1529 templ_7745c5c3_Err = codeLine(ln).Render(ctx, templ_7745c5c3_Buffer)
1530 if templ_7745c5c3_Err != nil {
1531 return templ_7745c5c3_Err
1532 }
1533 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 136, "</td></tr>")
1534 if templ_7745c5c3_Err != nil {
1535 return templ_7745c5c3_Err
1536 }
1537 if len(ln.Notes) > 0 || ln.Form != nil {
1538 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 137, "<tr class=\"fnote\"><td colspan=\"3\"></td><td>")
1539 if templ_7745c5c3_Err != nil {
1540 return templ_7745c5c3_Err
1541 }
1542 templ_7745c5c3_Err = lineNotes(ln.Notes, ln.Form, "").Render(ctx, templ_7745c5c3_Buffer)
1543 if templ_7745c5c3_Err != nil {
1544 return templ_7745c5c3_Err
1545 }
1546 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 138, "</td></tr>")
1547 if templ_7745c5c3_Err != nil {
1548 return templ_7745c5c3_Err
1549 }
1550 }
1551 }
1552 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 139, "</tbody> ")
1553 if templ_7745c5c3_Err != nil {
1554 return templ_7745c5c3_Err
1555 }
1556 }
1557 if f.Tail != nil {
1558 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 140, "<tbody>")
1559 if templ_7745c5c3_Err != nil {
1560 return templ_7745c5c3_Err
1561 }
1562 templ_7745c5c3_Err = gapRow(*f.Tail, 4).Render(ctx, templ_7745c5c3_Buffer)
1563 if templ_7745c5c3_Err != nil {
1564 return templ_7745c5c3_Err
1565 }
1566 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 141, "</tbody>")
1567 if templ_7745c5c3_Err != nil {
1568 return templ_7745c5c3_Err
1569 }
1570 }
1571 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 142, "</table>")
1572 if templ_7745c5c3_Err != nil {
1573 return templ_7745c5c3_Err
1574 }
1575 }
1576 if p.ShowSplit {
1577 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 143, "<table class=\"dt spl\" aria-label=\"")
1578 if templ_7745c5c3_Err != nil {
1579 return templ_7745c5c3_Err
1580 }
1581 var templ_7745c5c3_Var80 string
1582 templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path + ", split")
1583 if templ_7745c5c3_Err != nil {
1584 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 280, Col: 58}
1585 }
1586 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var80)
1587 if templ_7745c5c3_Err != nil {
1588 return templ_7745c5c3_Err
1589 }
1590 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 144, "\"><colgroup><col class=\"c-ln\"><col class=\"c-m\"><col><col class=\"c-ln\"><col class=\"c-m\"><col></colgroup> ")
1591 if templ_7745c5c3_Err != nil {
1592 return templ_7745c5c3_Err
1593 }
1594 for _, h := range f.Hunks {
1595 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 145, "<tbody>")
1596 if templ_7745c5c3_Err != nil {
1597 return templ_7745c5c3_Err
1598 }
1599 if h.Gap != nil {
1600 templ_7745c5c3_Err = gapRow(*h.Gap, 6).Render(ctx, templ_7745c5c3_Buffer)
1601 if templ_7745c5c3_Err != nil {
1602 return templ_7745c5c3_Err
1603 }
1604 }
1605 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 146, "<tr class=\"hunk\"><td colspan=\"6\">")
1606 if templ_7745c5c3_Err != nil {
1607 return templ_7745c5c3_Err
1608 }
1609 var templ_7745c5c3_Var81 string
1610 templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinStringErrs(h.Header)
1611 if templ_7745c5c3_Err != nil {
1612 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 287, Col: 51}
1613 }
1614 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))
1615 if templ_7745c5c3_Err != nil {
1616 return templ_7745c5c3_Err
1617 }
1618 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 147, "</td></tr>")
1619 if templ_7745c5c3_Err != nil {
1620 return templ_7745c5c3_Err
1621 }
1622 for _, row := range h.Split {
1623 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 148, "<tr>")
1624 if templ_7745c5c3_Err != nil {
1625 return templ_7745c5c3_Err
1626 }
1627 templ_7745c5c3_Err = splitSide(row.L, true).Render(ctx, templ_7745c5c3_Buffer)
1628 if templ_7745c5c3_Err != nil {
1629 return templ_7745c5c3_Err
1630 }
1631 templ_7745c5c3_Err = splitSide(row.R, false).Render(ctx, templ_7745c5c3_Buffer)
1632 if templ_7745c5c3_Err != nil {
1633 return templ_7745c5c3_Err
1634 }
1635 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 149, "</tr>")
1636 if templ_7745c5c3_Err != nil {
1637 return templ_7745c5c3_Err
1638 }
1639 if notes, form := row.Notes(), row.Form(); len(notes) > 0 || form != nil {
1640 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 150, "<tr class=\"fnote\"><td colspan=\"6\">")
1641 if templ_7745c5c3_Err != nil {
1642 return templ_7745c5c3_Err
1643 }
1644 templ_7745c5c3_Err = lineNotes(notes, form, "-s").Render(ctx, templ_7745c5c3_Buffer)
1645 if templ_7745c5c3_Err != nil {
1646 return templ_7745c5c3_Err
1647 }
1648 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 151, "</td></tr>")
1649 if templ_7745c5c3_Err != nil {
1650 return templ_7745c5c3_Err
1651 }
1652 }
1653 }
1654 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 152, "</tbody> ")
1655 if templ_7745c5c3_Err != nil {
1656 return templ_7745c5c3_Err
1657 }
1658 }
1659 if f.Tail != nil {
1660 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 153, "<tbody>")
1661 if templ_7745c5c3_Err != nil {
1662 return templ_7745c5c3_Err
1663 }
1664 templ_7745c5c3_Err = gapRow(*f.Tail, 6).Render(ctx, templ_7745c5c3_Buffer)
1665 if templ_7745c5c3_Err != nil {
1666 return templ_7745c5c3_Err
1667 }
1668 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 154, "</tbody>")
1669 if templ_7745c5c3_Err != nil {
1670 return templ_7745c5c3_Err
1671 }
1672 }
1673 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 155, "</table>")
1674 if templ_7745c5c3_Err != nil {
1675 return templ_7745c5c3_Err
1676 }
1677 }
1678 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 156, "</div>")
1679 if templ_7745c5c3_Err != nil {
1680 return templ_7745c5c3_Err
1681 }
1682 } else {
1683 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 157, "<p class=\"note pad\">")
1684 if templ_7745c5c3_Err != nil {
1685 return templ_7745c5c3_Err
1686 }
1687 if f.Note != "" {
1688 var templ_7745c5c3_Var82 string
1689 templ_7745c5c3_Var82, templ_7745c5c3_Err = templ.JoinStringErrs(f.Note)
1690 if templ_7745c5c3_Err != nil {
1691 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 312, Col: 13}
1692 }
1693 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var82))
1694 if templ_7745c5c3_Err != nil {
1695 return templ_7745c5c3_Err
1696 }
1697 } else {
1698 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 158, "no textual change.")
1699 if templ_7745c5c3_Err != nil {
1700 return templ_7745c5c3_Err
1701 }
1702 }
1703 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 159, "</p>")
1704 if templ_7745c5c3_Err != nil {
1705 return templ_7745c5c3_Err
1706 }
1707 }
1708 if len(f.Loose) > 0 {
1709 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 160, "<div class=\"dloose\">")
1710 if templ_7745c5c3_Err != nil {
1711 return templ_7745c5c3_Err
1712 }
1713 for _, c := range f.Loose {
1714 templ_7745c5c3_Err = commentView(c, "").Render(ctx, templ_7745c5c3_Buffer)
1715 if templ_7745c5c3_Err != nil {
1716 return templ_7745c5c3_Err
1717 }
1718 }
1719 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 161, "</div>")
1720 if templ_7745c5c3_Err != nil {
1721 return templ_7745c5c3_Err
1722 }
1723 }
1724 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 162, "</details>")
1725 if templ_7745c5c3_Err != nil {
1726 return templ_7745c5c3_Err
1727 }
1728 return nil
1729 })
1730}
1731
1732// MRFiles is a window of files of a merge request, for the placeholders of
1733// the page: the files only, which replace the placeholders of the same ids.
1734func MRFiles(p MRFilesPage) templ.Component {
1735 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1736 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1737 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1738 return templ_7745c5c3_CtxErr
1739 }
1740 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1741 if !templ_7745c5c3_IsBuffer {
1742 defer func() {
1743 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1744 if templ_7745c5c3_Err == nil {
1745 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1746 }
1747 }()
1748 }
1749 ctx = templ.InitializeContext(ctx)
1750 templ_7745c5c3_Var83 := templ.GetChildren(ctx)
1751 if templ_7745c5c3_Var83 == nil {
1752 templ_7745c5c3_Var83 = templ.NopComponent
1753 }
1754 ctx = templ.ClearChildren(ctx)
1755 for _, f := range p.Files {
1756 templ_7745c5c3_Err = DiffFileView(f, p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
1757 if templ_7745c5c3_Err != nil {
1758 return templ_7745c5c3_Err
1759 }
1760 }
1761 return nil
1762 })
1763}
1764
1765// MRFilesMoved answers a window of a diff that is not the one of the page any
1766// more: the placeholder shows it instead of a file of another diff.
1767func MRFilesMoved() templ.Component {
1768 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1769 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1770 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1771 return templ_7745c5c3_CtxErr
1772 }
1773 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1774 if !templ_7745c5c3_IsBuffer {
1775 defer func() {
1776 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1777 if templ_7745c5c3_Err == nil {
1778 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1779 }
1780 }()
1781 }
1782 ctx = templ.InitializeContext(ctx)
1783 templ_7745c5c3_Var84 := templ.GetChildren(ctx)
1784 if templ_7745c5c3_Var84 == nil {
1785 templ_7745c5c3_Var84 = templ.NopComponent
1786 }
1787 ctx = templ.ClearChildren(ctx)
1788 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 163, "<p class=\"notice\" data-moved>this merge request changed since the page was loaded — <a href=\"\">reload</a></p>")
1789 if templ_7745c5c3_Err != nil {
1790 return templ_7745c5c3_Err
1791 }
1792 return nil
1793 })
1794}
1795
1796// gapRow is the row of the hidden lines before a hunk, or of the rest of the
1797// file: a button that loads them in their place (ermite.js, ermite.expand).
1798// Without scripts nothing loads them: hidden.
1799func gapRow(g DiffGap, cols int) templ.Component {
1800 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1801 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1802 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1803 return templ_7745c5c3_CtxErr
1804 }
1805 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1806 if !templ_7745c5c3_IsBuffer {
1807 defer func() {
1808 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1809 if templ_7745c5c3_Err == nil {
1810 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1811 }
1812 }()
1813 }
1814 ctx = templ.InitializeContext(ctx)
1815 templ_7745c5c3_Var85 := templ.GetChildren(ctx)
1816 if templ_7745c5c3_Var85 == nil {
1817 templ_7745c5c3_Var85 = templ.NopComponent
1818 }
1819 ctx = templ.ClearChildren(ctx)
1820 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 164, "<tr class=\"gap\" data-js data-gap=\"")
1821 if templ_7745c5c3_Err != nil {
1822 return templ_7745c5c3_Err
1823 }
1824 var templ_7745c5c3_Var86 string
1825 templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.ResolveAttributeValue(g.Key)
1826 if templ_7745c5c3_Err != nil {
1827 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 346, Col: 41}
1828 }
1829 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var86)
1830 if templ_7745c5c3_Err != nil {
1831 return templ_7745c5c3_Err
1832 }
1833 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 165, "\"><td colspan=\"")
1834 if templ_7745c5c3_Err != nil {
1835 return templ_7745c5c3_Err
1836 }
1837 var templ_7745c5c3_Var87 string
1838 templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(cols))
1839 if templ_7745c5c3_Err != nil {
1840 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 347, Col: 26}
1841 }
1842 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var87)
1843 if templ_7745c5c3_Err != nil {
1844 return templ_7745c5c3_Err
1845 }
1846 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 166, "\"><button type=\"button\" data-src=\"")
1847 if templ_7745c5c3_Err != nil {
1848 return templ_7745c5c3_Err
1849 }
1850 var templ_7745c5c3_Var88 string
1851 templ_7745c5c3_Var88, templ_7745c5c3_Err = templ.ResolveAttributeValue(g.Src)
1852 if templ_7745c5c3_Err != nil {
1853 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 348, Col: 41}
1854 }
1855 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var88)
1856 if templ_7745c5c3_Err != nil {
1857 return templ_7745c5c3_Err
1858 }
1859 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 167, "\"><span aria-hidden=\"true\">⋯</span> ")
1860 if templ_7745c5c3_Err != nil {
1861 return templ_7745c5c3_Err
1862 }
1863 var templ_7745c5c3_Var89 string
1864 templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.JoinStringErrs(g.Label())
1865 if templ_7745c5c3_Err != nil {
1866 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 349, Col: 51}
1867 }
1868 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var89))
1869 if templ_7745c5c3_Err != nil {
1870 return templ_7745c5c3_Err
1871 }
1872 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 168, "</button></td></tr>")
1873 if templ_7745c5c3_Err != nil {
1874 return templ_7745c5c3_Err
1875 }
1876 return nil
1877 })
1878}
1879
1880// DiffContext is the hidden lines of a gap, for /context: one body a layout,
1881// whose rows replace the rows of the gap in the table of that layout.
1882func DiffContext(c ContextRows) templ.Component {
1883 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1884 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1885 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1886 return templ_7745c5c3_CtxErr
1887 }
1888 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1889 if !templ_7745c5c3_IsBuffer {
1890 defer func() {
1891 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1892 if templ_7745c5c3_Err == nil {
1893 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1894 }
1895 }()
1896 }
1897 ctx = templ.InitializeContext(ctx)
1898 templ_7745c5c3_Var90 := templ.GetChildren(ctx)
1899 if templ_7745c5c3_Var90 == nil {
1900 templ_7745c5c3_Var90 = templ.NopComponent
1901 }
1902 ctx = templ.ClearChildren(ctx)
1903 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 169, "<table><tbody data-for=\"uni\">")
1904 if templ_7745c5c3_Err != nil {
1905 return templ_7745c5c3_Err
1906 }
1907 for _, ln := range c.Lines {
1908 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 170, "<tr class=\"ctx\"><td class=\"ln\">")
1909 if templ_7745c5c3_Err != nil {
1910 return templ_7745c5c3_Err
1911 }
1912 var templ_7745c5c3_Var91 string
1913 templ_7745c5c3_Var91, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Old)
1914 if templ_7745c5c3_Err != nil {
1915 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 362, Col: 28}
1916 }
1917 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var91))
1918 if templ_7745c5c3_Err != nil {
1919 return templ_7745c5c3_Err
1920 }
1921 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 171, "</td><td class=\"ln\">")
1922 if templ_7745c5c3_Err != nil {
1923 return templ_7745c5c3_Err
1924 }
1925 var templ_7745c5c3_Var92 string
1926 templ_7745c5c3_Var92, templ_7745c5c3_Err = templ.JoinStringErrs(ln.New)
1927 if templ_7745c5c3_Err != nil {
1928 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 363, Col: 28}
1929 }
1930 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var92))
1931 if templ_7745c5c3_Err != nil {
1932 return templ_7745c5c3_Err
1933 }
1934 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 172, "</td><td class=\"m\">")
1935 if templ_7745c5c3_Err != nil {
1936 return templ_7745c5c3_Err
1937 }
1938 var templ_7745c5c3_Var93 string
1939 templ_7745c5c3_Var93, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
1940 if templ_7745c5c3_Err != nil {
1941 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 364, Col: 28}
1942 }
1943 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var93))
1944 if templ_7745c5c3_Err != nil {
1945 return templ_7745c5c3_Err
1946 }
1947 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 173, "</td><td class=\"tx chroma\">")
1948 if templ_7745c5c3_Err != nil {
1949 return templ_7745c5c3_Err
1950 }
1951 templ_7745c5c3_Err = codeLine(ln).Render(ctx, templ_7745c5c3_Buffer)
1952 if templ_7745c5c3_Err != nil {
1953 return templ_7745c5c3_Err
1954 }
1955 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 174, "</td></tr>")
1956 if templ_7745c5c3_Err != nil {
1957 return templ_7745c5c3_Err
1958 }
1959 }
1960 if c.More != nil {
1961 templ_7745c5c3_Err = gapRow(*c.More, 4).Render(ctx, templ_7745c5c3_Buffer)
1962 if templ_7745c5c3_Err != nil {
1963 return templ_7745c5c3_Err
1964 }
1965 }
1966 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 175, "</tbody> <tbody data-for=\"spl\">")
1967 if templ_7745c5c3_Err != nil {
1968 return templ_7745c5c3_Err
1969 }
1970 for i := range c.Lines {
1971 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 176, "<tr>")
1972 if templ_7745c5c3_Err != nil {
1973 return templ_7745c5c3_Err
1974 }
1975 templ_7745c5c3_Err = splitSide(&c.Lines[i], true).Render(ctx, templ_7745c5c3_Buffer)
1976 if templ_7745c5c3_Err != nil {
1977 return templ_7745c5c3_Err
1978 }
1979 templ_7745c5c3_Err = splitSide(&c.Lines[i], false).Render(ctx, templ_7745c5c3_Buffer)
1980 if templ_7745c5c3_Err != nil {
1981 return templ_7745c5c3_Err
1982 }
1983 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 177, "</tr>")
1984 if templ_7745c5c3_Err != nil {
1985 return templ_7745c5c3_Err
1986 }
1987 }
1988 if c.More != nil {
1989 templ_7745c5c3_Err = gapRow(*c.More, 6).Render(ctx, templ_7745c5c3_Buffer)
1990 if templ_7745c5c3_Err != nil {
1991 return templ_7745c5c3_Err
1992 }
1993 }
1994 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 178, "</tbody></table>")
1995 if templ_7745c5c3_Err != nil {
1996 return templ_7745c5c3_Err
1997 }
1998 return nil
1999 })
2000}
2001
2002// splitSide is one half of a row of the split view; a side without a line is
2003// an empty cell.
2004func splitSide(ln *DiffLine, old bool) templ.Component {
2005 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2006 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2007 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2008 return templ_7745c5c3_CtxErr
2009 }
2010 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2011 if !templ_7745c5c3_IsBuffer {
2012 defer func() {
2013 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2014 if templ_7745c5c3_Err == nil {
2015 templ_7745c5c3_Err = templ_7745c5c3_BufErr
2016 }
2017 }()
2018 }
2019 ctx = templ.InitializeContext(ctx)
2020 templ_7745c5c3_Var94 := templ.GetChildren(ctx)
2021 if templ_7745c5c3_Var94 == nil {
2022 templ_7745c5c3_Var94 = templ.NopComponent
2023 }
2024 ctx = templ.ClearChildren(ctx)
2025 if ln == nil {
2026 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 179, "<td class=\"ln none\"></td><td class=\"m none\"></td><td class=\"tx none\"></td>")
2027 if templ_7745c5c3_Err != nil {
2028 return templ_7745c5c3_Err
2029 }
2030 } else {
2031 var templ_7745c5c3_Var95 = []any{"ln", ln.Kind, templ.KV("sel", ln.Selected)}
2032 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var95...)
2033 if templ_7745c5c3_Err != nil {
2034 return templ_7745c5c3_Err
2035 }
2036 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 180, "<td class=\"")
2037 if templ_7745c5c3_Err != nil {
2038 return templ_7745c5c3_Err
2039 }
2040 var templ_7745c5c3_Var96 string
2041 templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var95).String())
2042 if templ_7745c5c3_Err != nil {
2043 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2044 }
2045 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var96)
2046 if templ_7745c5c3_Err != nil {
2047 return templ_7745c5c3_Err
2048 }
2049 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 181, "\">")
2050 if templ_7745c5c3_Err != nil {
2051 return templ_7745c5c3_Err
2052 }
2053 if old {
2054 templ_7745c5c3_Err = gutter(ln.Old, ln.OldHref).Render(ctx, templ_7745c5c3_Buffer)
2055 if templ_7745c5c3_Err != nil {
2056 return templ_7745c5c3_Err
2057 }
2058 } else {
2059 templ_7745c5c3_Err = gutter(ln.New, ln.NewHref).Render(ctx, templ_7745c5c3_Buffer)
2060 if templ_7745c5c3_Err != nil {
2061 return templ_7745c5c3_Err
2062 }
2063 }
2064 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 182, "</td>")
2065 if templ_7745c5c3_Err != nil {
2066 return templ_7745c5c3_Err
2067 }
2068 var templ_7745c5c3_Var97 = []any{"m", ln.Kind, templ.KV("sel", ln.Selected)}
2069 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var97...)
2070 if templ_7745c5c3_Err != nil {
2071 return templ_7745c5c3_Err
2072 }
2073 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 183, "<td class=\"")
2074 if templ_7745c5c3_Err != nil {
2075 return templ_7745c5c3_Err
2076 }
2077 var templ_7745c5c3_Var98 string
2078 templ_7745c5c3_Var98, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var97).String())
2079 if templ_7745c5c3_Err != nil {
2080 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2081 }
2082 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var98)
2083 if templ_7745c5c3_Err != nil {
2084 return templ_7745c5c3_Err
2085 }
2086 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 184, "\">")
2087 if templ_7745c5c3_Err != nil {
2088 return templ_7745c5c3_Err
2089 }
2090 var templ_7745c5c3_Var99 string
2091 templ_7745c5c3_Var99, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
2092 if templ_7745c5c3_Err != nil {
2093 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 401, Col: 68}
2094 }
2095 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var99))
2096 if templ_7745c5c3_Err != nil {
2097 return templ_7745c5c3_Err
2098 }
2099 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 185, "</td>")
2100 if templ_7745c5c3_Err != nil {
2101 return templ_7745c5c3_Err
2102 }
2103 var templ_7745c5c3_Var100 = []any{"tx", "chroma", ln.Kind, templ.KV("sel", ln.Selected)}
2104 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var100...)
2105 if templ_7745c5c3_Err != nil {
2106 return templ_7745c5c3_Err
2107 }
2108 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 186, "<td class=\"")
2109 if templ_7745c5c3_Err != nil {
2110 return templ_7745c5c3_Err
2111 }
2112 var templ_7745c5c3_Var101 string
2113 templ_7745c5c3_Var101, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var100).String())
2114 if templ_7745c5c3_Err != nil {
2115 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2116 }
2117 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var101)
2118 if templ_7745c5c3_Err != nil {
2119 return templ_7745c5c3_Err
2120 }
2121 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 187, "\">")
2122 if templ_7745c5c3_Err != nil {
2123 return templ_7745c5c3_Err
2124 }
2125 templ_7745c5c3_Err = codeLine(*ln).Render(ctx, templ_7745c5c3_Buffer)
2126 if templ_7745c5c3_Err != nil {
2127 return templ_7745c5c3_Err
2128 }
2129 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 188, "</td>")
2130 if templ_7745c5c3_Err != nil {
2131 return templ_7745c5c3_Err
2132 }
2133 }
2134 return nil
2135 })
2136}
2137
2138// gutter is a line number of the gutter. On a merge request that can be
2139// commented on, it links to the form that comments on that line.
2140func gutter(n, href string) templ.Component {
2141 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2142 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2143 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2144 return templ_7745c5c3_CtxErr
2145 }
2146 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2147 if !templ_7745c5c3_IsBuffer {
2148 defer func() {
2149 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2150 if templ_7745c5c3_Err == nil {
2151 templ_7745c5c3_Err = templ_7745c5c3_BufErr
2152 }
2153 }()
2154 }
2155 ctx = templ.InitializeContext(ctx)
2156 templ_7745c5c3_Var102 := templ.GetChildren(ctx)
2157 if templ_7745c5c3_Var102 == nil {
2158 templ_7745c5c3_Var102 = templ.NopComponent
2159 }
2160 ctx = templ.ClearChildren(ctx)
2161 if href != "" {
2162 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 189, "<a href=\"")
2163 if templ_7745c5c3_Err != nil {
2164 return templ_7745c5c3_Err
2165 }
2166 var templ_7745c5c3_Var103 templ.SafeURL
2167 templ_7745c5c3_Var103, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
2168 if templ_7745c5c3_Err != nil {
2169 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 410, Col: 31}
2170 }
2171 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var103))
2172 if templ_7745c5c3_Err != nil {
2173 return templ_7745c5c3_Err
2174 }
2175 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 190, "\" title=\"comment on this line\">")
2176 if templ_7745c5c3_Err != nil {
2177 return templ_7745c5c3_Err
2178 }
2179 var templ_7745c5c3_Var104 string
2180 templ_7745c5c3_Var104, templ_7745c5c3_Err = templ.JoinStringErrs(n)
2181 if templ_7745c5c3_Err != nil {
2182 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 410, Col: 66}
2183 }
2184 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var104))
2185 if templ_7745c5c3_Err != nil {
2186 return templ_7745c5c3_Err
2187 }
2188 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 191, "</a>")
2189 if templ_7745c5c3_Err != nil {
2190 return templ_7745c5c3_Err
2191 }
2192 } else {
2193 var templ_7745c5c3_Var105 string
2194 templ_7745c5c3_Var105, templ_7745c5c3_Err = templ.JoinStringErrs(n)
2195 if templ_7745c5c3_Err != nil {
2196 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 412, Col: 5}
2197 }
2198 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var105))
2199 if templ_7745c5c3_Err != nil {
2200 return templ_7745c5c3_Err
2201 }
2202 }
2203 return nil
2204 })
2205}
2206
2207var _ = templruntime.GeneratedTemplate