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-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: 122}
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 p.View == view {
653 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, " aria-current=\"true\"")
654 if templ_7745c5c3_Err != nil {
655 return templ_7745c5c3_Err
656 }
657 }
658 if p.Both {
659 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, " data-fire=\"")
660 if templ_7745c5c3_Err != nil {
661 return templ_7745c5c3_Err
662 }
663 var templ_7745c5c3_Var28 string
664 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(view)
665 if templ_7745c5c3_Err != nil {
666 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 146, Col: 19}
667 }
668 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)
669 if templ_7745c5c3_Err != nil {
670 return templ_7745c5c3_Err
671 }
672 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\" :aria-current=\"q('#diffs').attr['data-diff'] === this.dataset.view ? 'true' : false\"")
673 if templ_7745c5c3_Err != nil {
674 return templ_7745c5c3_Err
675 }
676 }
677 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, ">")
678 if templ_7745c5c3_Err != nil {
679 return templ_7745c5c3_Err
680 }
681 var templ_7745c5c3_Var29 string
682 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.JoinStringErrs(label)
683 if templ_7745c5c3_Err != nil {
684 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 149, Col: 9}
685 }
686 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var29))
687 if templ_7745c5c3_Err != nil {
688 return templ_7745c5c3_Err
689 }
690 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "<kbd aria-hidden=\"true\">")
691 if templ_7745c5c3_Err != nil {
692 return templ_7745c5c3_Err
693 }
694 var templ_7745c5c3_Var30 string
695 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.JoinStringErrs(key)
696 if templ_7745c5c3_Err != nil {
697 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 149, Col: 40}
698 }
699 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var30))
700 if templ_7745c5c3_Err != nil {
701 return templ_7745c5c3_Err
702 }
703 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</kbd></a>")
704 if templ_7745c5c3_Err != nil {
705 return templ_7745c5c3_Err
706 }
707 return nil
708 })
709}
710
711// collapseButton folds every file of the diff, or opens them all again when
712// none is open; its label follows the state.
713func collapseButton() templ.Component {
714 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
715 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
716 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
717 return templ_7745c5c3_CtxErr
718 }
719 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
720 if !templ_7745c5c3_IsBuffer {
721 defer func() {
722 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
723 if templ_7745c5c3_Err == nil {
724 templ_7745c5c3_Err = templ_7745c5c3_BufErr
725 }
726 }()
727 }
728 ctx = templ.InitializeContext(ctx)
729 templ_7745c5c3_Var31 := templ.GetChildren(ctx)
730 if templ_7745c5c3_Var31 == nil {
731 templ_7745c5c3_Var31 = templ.NopComponent
732 }
733 ctx = templ.ClearChildren(ctx)
734 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "<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>")
735 if templ_7745c5c3_Err != nil {
736 return templ_7745c5c3_Err
737 }
738 return nil
739 })
740}
741
742func personView(pr Person) templ.Component {
743 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
744 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
745 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
746 return templ_7745c5c3_CtxErr
747 }
748 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
749 if !templ_7745c5c3_IsBuffer {
750 defer func() {
751 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
752 if templ_7745c5c3_Err == nil {
753 templ_7745c5c3_Err = templ_7745c5c3_BufErr
754 }
755 }()
756 }
757 ctx = templ.InitializeContext(ctx)
758 templ_7745c5c3_Var32 := templ.GetChildren(ctx)
759 if templ_7745c5c3_Var32 == nil {
760 templ_7745c5c3_Var32 = templ.NopComponent
761 }
762 ctx = templ.ClearChildren(ctx)
763 var templ_7745c5c3_Var33 string
764 templ_7745c5c3_Var33, templ_7745c5c3_Err = templ.JoinStringErrs(pr.Name)
765 if templ_7745c5c3_Err != nil {
766 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 161, Col: 10}
767 }
768 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var33))
769 if templ_7745c5c3_Err != nil {
770 return templ_7745c5c3_Err
771 }
772 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, " ")
773 if templ_7745c5c3_Err != nil {
774 return templ_7745c5c3_Err
775 }
776 if pr.WhenAt != "" {
777 var templ_7745c5c3_Var34 string
778 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
779 if templ_7745c5c3_Err != nil {
780 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 163, Col: 10}
781 }
782 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
783 if templ_7745c5c3_Err != nil {
784 return templ_7745c5c3_Err
785 }
786 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "<time datetime=\"")
787 if templ_7745c5c3_Err != nil {
788 return templ_7745c5c3_Err
789 }
790 var templ_7745c5c3_Var35 string
791 templ_7745c5c3_Var35, templ_7745c5c3_Err = templ.ResolveAttributeValue(pr.WhenAt)
792 if templ_7745c5c3_Err != nil {
793 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 163, Col: 38}
794 }
795 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var35)
796 if templ_7745c5c3_Err != nil {
797 return templ_7745c5c3_Err
798 }
799 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "\" title=\"")
800 if templ_7745c5c3_Err != nil {
801 return templ_7745c5c3_Err
802 }
803 var templ_7745c5c3_Var36 string
804 templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.ResolveAttributeValue(pr.Abs)
805 if templ_7745c5c3_Err != nil {
806 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 163, Col: 55}
807 }
808 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var36)
809 if templ_7745c5c3_Err != nil {
810 return templ_7745c5c3_Err
811 }
812 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "\">")
813 if templ_7745c5c3_Err != nil {
814 return templ_7745c5c3_Err
815 }
816 var templ_7745c5c3_Var37 string
817 templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.JoinStringErrs(pr.When)
818 if templ_7745c5c3_Err != nil {
819 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 163, Col: 67}
820 }
821 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var37))
822 if templ_7745c5c3_Err != nil {
823 return templ_7745c5c3_Err
824 }
825 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</time>")
826 if templ_7745c5c3_Err != nil {
827 return templ_7745c5c3_Err
828 }
829 var templ_7745c5c3_Var38 string
830 templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.JoinStringErrs(" · " + pr.Abs)
831 if templ_7745c5c3_Err != nil {
832 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 163, Col: 93}
833 }
834 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var38))
835 if templ_7745c5c3_Err != nil {
836 return templ_7745c5c3_Err
837 }
838 }
839 return nil
840 })
841}
842
843func commitRail(p CommitPage) templ.Component {
844 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
845 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
846 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
847 return templ_7745c5c3_CtxErr
848 }
849 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
850 if !templ_7745c5c3_IsBuffer {
851 defer func() {
852 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
853 if templ_7745c5c3_Err == nil {
854 templ_7745c5c3_Err = templ_7745c5c3_BufErr
855 }
856 }()
857 }
858 ctx = templ.InitializeContext(ctx)
859 templ_7745c5c3_Var39 := templ.GetChildren(ctx)
860 if templ_7745c5c3_Var39 == nil {
861 templ_7745c5c3_Var39 = templ.NopComponent
862 }
863 ctx = templ.ClearChildren(ctx)
864 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "<section aria-labelledby=\"r-files\"><h2 id=\"r-files\">Files <span class=\"count\">")
865 if templ_7745c5c3_Err != nil {
866 return templ_7745c5c3_Err
867 }
868 var templ_7745c5c3_Var40 string
869 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Files)))
870 if templ_7745c5c3_Err != nil {
871 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 169, Col: 65}
872 }
873 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var40))
874 if templ_7745c5c3_Err != nil {
875 return templ_7745c5c3_Err
876 }
877 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</span></h2>")
878 if templ_7745c5c3_Err != nil {
879 return templ_7745c5c3_Err
880 }
881 templ_7745c5c3_Err = FileList(p.Files).Render(ctx, templ_7745c5c3_Buffer)
882 if templ_7745c5c3_Err != nil {
883 return templ_7745c5c3_Err
884 }
885 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "</section>")
886 if templ_7745c5c3_Err != nil {
887 return templ_7745c5c3_Err
888 }
889 return nil
890 })
891}
892
893// FileList is the table of contents of a diff: status letter, path, +n -m
894// and an ASCII bar. The row of the file in view is marked.
895func FileList(files []DiffFile) templ.Component {
896 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
897 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
898 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
899 return templ_7745c5c3_CtxErr
900 }
901 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
902 if !templ_7745c5c3_IsBuffer {
903 defer func() {
904 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
905 if templ_7745c5c3_Err == nil {
906 templ_7745c5c3_Err = templ_7745c5c3_BufErr
907 }
908 }()
909 }
910 ctx = templ.InitializeContext(ctx)
911 templ_7745c5c3_Var41 := templ.GetChildren(ctx)
912 if templ_7745c5c3_Var41 == nil {
913 templ_7745c5c3_Var41 = templ.NopComponent
914 }
915 ctx = templ.ClearChildren(ctx)
916 if len(files) > fileFilterMin {
917 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "<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>")
918 if templ_7745c5c3_Err != nil {
919 return templ_7745c5c3_Err
920 }
921 }
922 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, "<ol class=\"files\" aria-label=\"Changed files\">")
923 if templ_7745c5c3_Err != nil {
924 return templ_7745c5c3_Err
925 }
926 for _, f := range files {
927 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "<li><a href=\"")
928 if templ_7745c5c3_Err != nil {
929 return templ_7745c5c3_Err
930 }
931 var templ_7745c5c3_Var42 templ.SafeURL
932 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("#" + f.ID))
933 if templ_7745c5c3_Err != nil {
934 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 194, Col: 37}
935 }
936 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
937 if templ_7745c5c3_Err != nil {
938 return templ_7745c5c3_Err
939 }
940 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "\" title=\"")
941 if templ_7745c5c3_Err != nil {
942 return templ_7745c5c3_Err
943 }
944 var templ_7745c5c3_Var43 string
945 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path)
946 if templ_7745c5c3_Err != nil {
947 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 195, Col: 19}
948 }
949 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var43)
950 if templ_7745c5c3_Err != nil {
951 return templ_7745c5c3_Err
952 }
953 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "\" hx-on:click=\"(window.ermiteMR?.openFile || ermite.openFile)(this.hash.slice(1))\"><span class=\"st\" data-st=\"")
954 if templ_7745c5c3_Err != nil {
955 return templ_7745c5c3_Err
956 }
957 var templ_7745c5c3_Var44 string
958 templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Status)
959 if templ_7745c5c3_Err != nil {
960 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 198, Col: 40}
961 }
962 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var44)
963 if templ_7745c5c3_Err != nil {
964 return templ_7745c5c3_Err
965 }
966 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "\" title=\"")
967 if templ_7745c5c3_Err != nil {
968 return templ_7745c5c3_Err
969 }
970 var templ_7745c5c3_Var45 string
971 templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.ResolveAttributeValue(statusName(f.Status))
972 if templ_7745c5c3_Err != nil {
973 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 198, Col: 71}
974 }
975 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var45)
976 if templ_7745c5c3_Err != nil {
977 return templ_7745c5c3_Err
978 }
979 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "\">")
980 if templ_7745c5c3_Err != nil {
981 return templ_7745c5c3_Err
982 }
983 var templ_7745c5c3_Var46 string
984 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(f.Status)
985 if templ_7745c5c3_Err != nil {
986 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 198, Col: 84}
987 }
988 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
989 if templ_7745c5c3_Err != nil {
990 return templ_7745c5c3_Err
991 }
992 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "</span> <span class=\"nm\"><span class=\"p\">")
993 if templ_7745c5c3_Err != nil {
994 return templ_7745c5c3_Err
995 }
996 var templ_7745c5c3_Var47 string
997 templ_7745c5c3_Var47, templ_7745c5c3_Err = templ.JoinStringErrs(f.Name)
998 if templ_7745c5c3_Err != nil {
999 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 199, Col: 46}
1000 }
1001 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var47))
1002 if templ_7745c5c3_Err != nil {
1003 return templ_7745c5c3_Err
1004 }
1005 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "</span>")
1006 if templ_7745c5c3_Err != nil {
1007 return templ_7745c5c3_Err
1008 }
1009 var templ_7745c5c3_Var48 string
1010 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1011 if templ_7745c5c3_Err != nil {
1012 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 199, Col: 60}
1013 }
1014 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var48))
1015 if templ_7745c5c3_Err != nil {
1016 return templ_7745c5c3_Err
1017 }
1018 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "<span class=\"d\"><bdi>")
1019 if templ_7745c5c3_Err != nil {
1020 return templ_7745c5c3_Err
1021 }
1022 var templ_7745c5c3_Var49 string
1023 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(f.Dir)
1024 if templ_7745c5c3_Err != nil {
1025 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 199, Col: 90}
1026 }
1027 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
1028 if templ_7745c5c3_Err != nil {
1029 return templ_7745c5c3_Err
1030 }
1031 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "</bdi></span></span> ")
1032 if templ_7745c5c3_Err != nil {
1033 return templ_7745c5c3_Err
1034 }
1035 if f.OpenNotes > 0 {
1036 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "<span class=\"cn\" title=\"")
1037 if templ_7745c5c3_Err != nil {
1038 return templ_7745c5c3_Err
1039 }
1040 var templ_7745c5c3_Var50 string
1041 templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.ResolveAttributeValue(plural(f.OpenNotes, "open comment", "open comments"))
1042 if templ_7745c5c3_Err != nil {
1043 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 201, Col: 83}
1044 }
1045 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var50)
1046 if templ_7745c5c3_Err != nil {
1047 return templ_7745c5c3_Err
1048 }
1049 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "\">")
1050 if templ_7745c5c3_Err != nil {
1051 return templ_7745c5c3_Err
1052 }
1053 var templ_7745c5c3_Var51 string
1054 templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.OpenNotes))
1055 if templ_7745c5c3_Err != nil {
1056 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 201, Col: 105}
1057 }
1058 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
1059 if templ_7745c5c3_Err != nil {
1060 return templ_7745c5c3_Err
1061 }
1062 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "</span> ")
1063 if templ_7745c5c3_Err != nil {
1064 return templ_7745c5c3_Err
1065 }
1066 } else if f.Notes > 0 {
1067 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<span class=\"cn done\" title=\"")
1068 if templ_7745c5c3_Err != nil {
1069 return templ_7745c5c3_Err
1070 }
1071 var templ_7745c5c3_Var52 string
1072 templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.ResolveAttributeValue(plural(f.Notes, "resolved comment", "resolved comments"))
1073 if templ_7745c5c3_Err != nil {
1074 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 203, Col: 92}
1075 }
1076 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var52)
1077 if templ_7745c5c3_Err != nil {
1078 return templ_7745c5c3_Err
1079 }
1080 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "\">")
1081 if templ_7745c5c3_Err != nil {
1082 return templ_7745c5c3_Err
1083 }
1084 var templ_7745c5c3_Var53 string
1085 templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Notes))
1086 if templ_7745c5c3_Err != nil {
1087 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 203, Col: 110}
1088 }
1089 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53))
1090 if templ_7745c5c3_Err != nil {
1091 return templ_7745c5c3_Err
1092 }
1093 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "</span> ")
1094 if templ_7745c5c3_Err != nil {
1095 return templ_7745c5c3_Err
1096 }
1097 }
1098 if f.Bin {
1099 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "<span class=\"n mute\">bin</span>")
1100 if templ_7745c5c3_Err != nil {
1101 return templ_7745c5c3_Err
1102 }
1103 } else {
1104 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<span class=\"n\"><span class=\"plus\">+")
1105 if templ_7745c5c3_Err != nil {
1106 return templ_7745c5c3_Err
1107 }
1108 var templ_7745c5c3_Var54 string
1109 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Add))
1110 if templ_7745c5c3_Err != nil {
1111 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 208, Col: 55}
1112 }
1113 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
1114 if templ_7745c5c3_Err != nil {
1115 return templ_7745c5c3_Err
1116 }
1117 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "</span> <span class=\"minus\">-")
1118 if templ_7745c5c3_Err != nil {
1119 return templ_7745c5c3_Err
1120 }
1121 var templ_7745c5c3_Var55 string
1122 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Del))
1123 if templ_7745c5c3_Err != nil {
1124 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 208, Col: 99}
1125 }
1126 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1127 if templ_7745c5c3_Err != nil {
1128 return templ_7745c5c3_Err
1129 }
1130 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "</span></span>")
1131 if templ_7745c5c3_Err != nil {
1132 return templ_7745c5c3_Err
1133 }
1134 }
1135 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "</a></li>")
1136 if templ_7745c5c3_Err != nil {
1137 return templ_7745c5c3_Err
1138 }
1139 }
1140 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "</ol>")
1141 if templ_7745c5c3_Err != nil {
1142 return templ_7745c5c3_Err
1143 }
1144 return nil
1145 })
1146}
1147
1148// DiffFileView is one file of the diff: a <details> (per-file collapse). The
1149// unified and the split tables are both in it; #diffs[data-diff] shows one.
1150// Every changed line keeps its +/- marker, so a change is never conveyed by
1151// colour alone.
1152func DiffFileView(f DiffFile, p DiffView) templ.Component {
1153 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1154 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1155 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1156 return templ_7745c5c3_CtxErr
1157 }
1158 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1159 if !templ_7745c5c3_IsBuffer {
1160 defer func() {
1161 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1162 if templ_7745c5c3_Err == nil {
1163 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1164 }
1165 }()
1166 }
1167 ctx = templ.InitializeContext(ctx)
1168 templ_7745c5c3_Var56 := templ.GetChildren(ctx)
1169 if templ_7745c5c3_Var56 == nil {
1170 templ_7745c5c3_Var56 = templ.NopComponent
1171 }
1172 ctx = templ.ClearChildren(ctx)
1173 var templ_7745c5c3_Var57 = []any{"dfile", "lnw-" + itoa(f.Digits)}
1174 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var57...)
1175 if templ_7745c5c3_Err != nil {
1176 return templ_7745c5c3_Err
1177 }
1178 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "<details class=\"")
1179 if templ_7745c5c3_Err != nil {
1180 return templ_7745c5c3_Err
1181 }
1182 var templ_7745c5c3_Var58 string
1183 templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var57).String())
1184 if templ_7745c5c3_Err != nil {
1185 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1186 }
1187 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var58)
1188 if templ_7745c5c3_Err != nil {
1189 return templ_7745c5c3_Err
1190 }
1191 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "\" id=\"")
1192 if templ_7745c5c3_Err != nil {
1193 return templ_7745c5c3_Err
1194 }
1195 var templ_7745c5c3_Var59 string
1196 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID)
1197 if templ_7745c5c3_Err != nil {
1198 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 223, Col: 11}
1199 }
1200 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var59)
1201 if templ_7745c5c3_Err != nil {
1202 return templ_7745c5c3_Err
1203 }
1204 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "\" data-file=\"")
1205 if templ_7745c5c3_Err != nil {
1206 return templ_7745c5c3_Err
1207 }
1208 var templ_7745c5c3_Var60 string
1209 templ_7745c5c3_Var60, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Key)
1210 if templ_7745c5c3_Err != nil {
1211 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 224, Col: 19}
1212 }
1213 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var60)
1214 if templ_7745c5c3_Err != nil {
1215 return templ_7745c5c3_Err
1216 }
1217 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "\"")
1218 if templ_7745c5c3_Err != nil {
1219 return templ_7745c5c3_Err
1220 }
1221 if f.Open {
1222 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, " open")
1223 if templ_7745c5c3_Err != nil {
1224 return templ_7745c5c3_Err
1225 }
1226 }
1227 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "><summary><span class=\"st\">")
1228 if templ_7745c5c3_Err != nil {
1229 return templ_7745c5c3_Err
1230 }
1231 var templ_7745c5c3_Var61 string
1232 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.JoinStringErrs(f.Status)
1233 if templ_7745c5c3_Err != nil {
1234 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 230, Col: 30}
1235 }
1236 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var61))
1237 if templ_7745c5c3_Err != nil {
1238 return templ_7745c5c3_Err
1239 }
1240 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "</span>")
1241 if templ_7745c5c3_Err != nil {
1242 return templ_7745c5c3_Err
1243 }
1244 var templ_7745c5c3_Var62 string
1245 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1246 if templ_7745c5c3_Err != nil {
1247 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 230, Col: 44}
1248 }
1249 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1250 if templ_7745c5c3_Err != nil {
1251 return templ_7745c5c3_Err
1252 }
1253 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<span class=\"p\">")
1254 if templ_7745c5c3_Err != nil {
1255 return templ_7745c5c3_Err
1256 }
1257 var templ_7745c5c3_Var63 string
1258 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.JoinStringErrs(f.Path)
1259 if templ_7745c5c3_Err != nil {
1260 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 230, Col: 70}
1261 }
1262 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var63))
1263 if templ_7745c5c3_Err != nil {
1264 return templ_7745c5c3_Err
1265 }
1266 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "</span>")
1267 if templ_7745c5c3_Err != nil {
1268 return templ_7745c5c3_Err
1269 }
1270 var templ_7745c5c3_Var64 string
1271 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1272 if templ_7745c5c3_Err != nil {
1273 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 230, Col: 84}
1274 }
1275 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64))
1276 if templ_7745c5c3_Err != nil {
1277 return templ_7745c5c3_Err
1278 }
1279 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "<span class=\"plus\">+")
1280 if templ_7745c5c3_Err != nil {
1281 return templ_7745c5c3_Err
1282 }
1283 var templ_7745c5c3_Var65 string
1284 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Add))
1285 if templ_7745c5c3_Err != nil {
1286 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 230, Col: 119}
1287 }
1288 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1289 if templ_7745c5c3_Err != nil {
1290 return templ_7745c5c3_Err
1291 }
1292 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "</span>")
1293 if templ_7745c5c3_Err != nil {
1294 return templ_7745c5c3_Err
1295 }
1296 var templ_7745c5c3_Var66 string
1297 templ_7745c5c3_Var66, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1298 if templ_7745c5c3_Err != nil {
1299 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 230, Col: 133}
1300 }
1301 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var66))
1302 if templ_7745c5c3_Err != nil {
1303 return templ_7745c5c3_Err
1304 }
1305 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "<span class=\"minus\">-")
1306 if templ_7745c5c3_Err != nil {
1307 return templ_7745c5c3_Err
1308 }
1309 var templ_7745c5c3_Var67 string
1310 templ_7745c5c3_Var67, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Del))
1311 if templ_7745c5c3_Err != nil {
1312 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 230, Col: 169}
1313 }
1314 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var67))
1315 if templ_7745c5c3_Err != nil {
1316 return templ_7745c5c3_Err
1317 }
1318 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "</span> ")
1319 if templ_7745c5c3_Err != nil {
1320 return templ_7745c5c3_Err
1321 }
1322 if f.Note != "" {
1323 var templ_7745c5c3_Var68 string
1324 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1325 if templ_7745c5c3_Err != nil {
1326 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 232, Col: 9}
1327 }
1328 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var68))
1329 if templ_7745c5c3_Err != nil {
1330 return templ_7745c5c3_Err
1331 }
1332 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "<span class=\"note\">")
1333 if templ_7745c5c3_Err != nil {
1334 return templ_7745c5c3_Err
1335 }
1336 var templ_7745c5c3_Var69 string
1337 templ_7745c5c3_Var69, templ_7745c5c3_Err = templ.JoinStringErrs(f.Note)
1338 if templ_7745c5c3_Err != nil {
1339 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 232, Col: 38}
1340 }
1341 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var69))
1342 if templ_7745c5c3_Err != nil {
1343 return templ_7745c5c3_Err
1344 }
1345 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "</span>")
1346 if templ_7745c5c3_Err != nil {
1347 return templ_7745c5c3_Err
1348 }
1349 }
1350 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "</summary> ")
1351 if templ_7745c5c3_Err != nil {
1352 return templ_7745c5c3_Err
1353 }
1354 if f.Lazy {
1355 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, " ")
1356 if templ_7745c5c3_Err != nil {
1357 return templ_7745c5c3_Err
1358 }
1359 var templ_7745c5c3_Var70 = []any{"dlazy", "dlazy-" + itoa(f.Height)}
1360 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var70...)
1361 if templ_7745c5c3_Err != nil {
1362 return templ_7745c5c3_Err
1363 }
1364 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "<div class=\"")
1365 if templ_7745c5c3_Err != nil {
1366 return templ_7745c5c3_Err
1367 }
1368 var templ_7745c5c3_Var71 string
1369 templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var70).String())
1370 if templ_7745c5c3_Err != nil {
1371 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1372 }
1373 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var71)
1374 if templ_7745c5c3_Err != nil {
1375 return templ_7745c5c3_Err
1376 }
1377 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "\" data-src=\"")
1378 if templ_7745c5c3_Err != nil {
1379 return templ_7745c5c3_Err
1380 }
1381 var templ_7745c5c3_Var72 string
1382 templ_7745c5c3_Var72, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Src)
1383 if templ_7745c5c3_Err != nil {
1384 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 239, Col: 69}
1385 }
1386 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var72)
1387 if templ_7745c5c3_Err != nil {
1388 return templ_7745c5c3_Err
1389 }
1390 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "\" data-notes=\"")
1391 if templ_7745c5c3_Err != nil {
1392 return templ_7745c5c3_Err
1393 }
1394 var templ_7745c5c3_Var73 string
1395 templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Comments)
1396 if templ_7745c5c3_Err != nil {
1397 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 239, Col: 95}
1398 }
1399 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var73)
1400 if templ_7745c5c3_Err != nil {
1401 return templ_7745c5c3_Err
1402 }
1403 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "\"><a href=\"")
1404 if templ_7745c5c3_Err != nil {
1405 return templ_7745c5c3_Err
1406 }
1407 var templ_7745c5c3_Var74 templ.SafeURL
1408 templ_7745c5c3_Var74, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("?from=" + itoa(f.From) + "#" + f.ID))
1409 if templ_7745c5c3_Err != nil {
1410 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 240, Col: 65}
1411 }
1412 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var74))
1413 if templ_7745c5c3_Err != nil {
1414 return templ_7745c5c3_Err
1415 }
1416 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, "\">show this file</a></div>")
1417 if templ_7745c5c3_Err != nil {
1418 return templ_7745c5c3_Err
1419 }
1420 } else if len(f.Hunks) > 0 {
1421 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, "<div class=\"dscroll\">")
1422 if templ_7745c5c3_Err != nil {
1423 return templ_7745c5c3_Err
1424 }
1425 if p.ShowUnified {
1426 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, "<table class=\"dt uni\" aria-label=\"")
1427 if templ_7745c5c3_Err != nil {
1428 return templ_7745c5c3_Err
1429 }
1430 var templ_7745c5c3_Var75 string
1431 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path + ", unified")
1432 if templ_7745c5c3_Err != nil {
1433 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 245, Col: 60}
1434 }
1435 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var75)
1436 if templ_7745c5c3_Err != nil {
1437 return templ_7745c5c3_Err
1438 }
1439 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "\">")
1440 if templ_7745c5c3_Err != nil {
1441 return templ_7745c5c3_Err
1442 }
1443 for _, h := range f.Hunks {
1444 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, "<tbody>")
1445 if templ_7745c5c3_Err != nil {
1446 return templ_7745c5c3_Err
1447 }
1448 if h.Gap != nil {
1449 templ_7745c5c3_Err = gapRow(*h.Gap, 4).Render(ctx, templ_7745c5c3_Buffer)
1450 if templ_7745c5c3_Err != nil {
1451 return templ_7745c5c3_Err
1452 }
1453 }
1454 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "<tr class=\"hunk\"><td colspan=\"4\">")
1455 if templ_7745c5c3_Err != nil {
1456 return templ_7745c5c3_Err
1457 }
1458 var templ_7745c5c3_Var76 string
1459 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinStringErrs(h.Header)
1460 if templ_7745c5c3_Err != nil {
1461 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 251, Col: 51}
1462 }
1463 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
1464 if templ_7745c5c3_Err != nil {
1465 return templ_7745c5c3_Err
1466 }
1467 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "</td></tr>")
1468 if templ_7745c5c3_Err != nil {
1469 return templ_7745c5c3_Err
1470 }
1471 for _, ln := range h.Lines {
1472 var templ_7745c5c3_Var77 = []any{ln.Kind, templ.KV("sel", ln.Selected)}
1473 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var77...)
1474 if templ_7745c5c3_Err != nil {
1475 return templ_7745c5c3_Err
1476 }
1477 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "<tr class=\"")
1478 if templ_7745c5c3_Err != nil {
1479 return templ_7745c5c3_Err
1480 }
1481 var templ_7745c5c3_Var78 string
1482 templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var77).String())
1483 if templ_7745c5c3_Err != nil {
1484 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1485 }
1486 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var78)
1487 if templ_7745c5c3_Err != nil {
1488 return templ_7745c5c3_Err
1489 }
1490 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "\"><td class=\"ln\">")
1491 if templ_7745c5c3_Err != nil {
1492 return templ_7745c5c3_Err
1493 }
1494 templ_7745c5c3_Err = gutter(ln.Old, ln.OldHref).Render(ctx, templ_7745c5c3_Buffer)
1495 if templ_7745c5c3_Err != nil {
1496 return templ_7745c5c3_Err
1497 }
1498 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "</td><td class=\"ln\">")
1499 if templ_7745c5c3_Err != nil {
1500 return templ_7745c5c3_Err
1501 }
1502 templ_7745c5c3_Err = gutter(ln.New, ln.NewHref).Render(ctx, templ_7745c5c3_Buffer)
1503 if templ_7745c5c3_Err != nil {
1504 return templ_7745c5c3_Err
1505 }
1506 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "</td><td class=\"m\">")
1507 if templ_7745c5c3_Err != nil {
1508 return templ_7745c5c3_Err
1509 }
1510 var templ_7745c5c3_Var79 string
1511 templ_7745c5c3_Var79, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
1512 if templ_7745c5c3_Err != nil {
1513 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 256, Col: 33}
1514 }
1515 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var79))
1516 if templ_7745c5c3_Err != nil {
1517 return templ_7745c5c3_Err
1518 }
1519 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, "</td><td class=\"tx chroma\">")
1520 if templ_7745c5c3_Err != nil {
1521 return templ_7745c5c3_Err
1522 }
1523 templ_7745c5c3_Err = codeLine(ln).Render(ctx, templ_7745c5c3_Buffer)
1524 if templ_7745c5c3_Err != nil {
1525 return templ_7745c5c3_Err
1526 }
1527 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 135, "</td></tr>")
1528 if templ_7745c5c3_Err != nil {
1529 return templ_7745c5c3_Err
1530 }
1531 if len(ln.Notes) > 0 || ln.Form != nil {
1532 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 136, "<tr class=\"fnote\"><td colspan=\"3\"></td><td>")
1533 if templ_7745c5c3_Err != nil {
1534 return templ_7745c5c3_Err
1535 }
1536 templ_7745c5c3_Err = lineNotes(ln.Notes, ln.Form, "").Render(ctx, templ_7745c5c3_Buffer)
1537 if templ_7745c5c3_Err != nil {
1538 return templ_7745c5c3_Err
1539 }
1540 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 137, "</td></tr>")
1541 if templ_7745c5c3_Err != nil {
1542 return templ_7745c5c3_Err
1543 }
1544 }
1545 }
1546 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 138, "</tbody> ")
1547 if templ_7745c5c3_Err != nil {
1548 return templ_7745c5c3_Err
1549 }
1550 }
1551 if f.Tail != nil {
1552 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 139, "<tbody>")
1553 if templ_7745c5c3_Err != nil {
1554 return templ_7745c5c3_Err
1555 }
1556 templ_7745c5c3_Err = gapRow(*f.Tail, 4).Render(ctx, templ_7745c5c3_Buffer)
1557 if templ_7745c5c3_Err != nil {
1558 return templ_7745c5c3_Err
1559 }
1560 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 140, "</tbody>")
1561 if templ_7745c5c3_Err != nil {
1562 return templ_7745c5c3_Err
1563 }
1564 }
1565 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 141, "</table>")
1566 if templ_7745c5c3_Err != nil {
1567 return templ_7745c5c3_Err
1568 }
1569 }
1570 if p.ShowSplit {
1571 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 142, "<table class=\"dt spl\" aria-label=\"")
1572 if templ_7745c5c3_Err != nil {
1573 return templ_7745c5c3_Err
1574 }
1575 var templ_7745c5c3_Var80 string
1576 templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path + ", split")
1577 if templ_7745c5c3_Err != nil {
1578 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 276, Col: 58}
1579 }
1580 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var80)
1581 if templ_7745c5c3_Err != nil {
1582 return templ_7745c5c3_Err
1583 }
1584 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 143, "\"><colgroup><col class=\"c-ln\"><col class=\"c-m\"><col><col class=\"c-ln\"><col class=\"c-m\"><col></colgroup> ")
1585 if templ_7745c5c3_Err != nil {
1586 return templ_7745c5c3_Err
1587 }
1588 for _, h := range f.Hunks {
1589 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 144, "<tbody>")
1590 if templ_7745c5c3_Err != nil {
1591 return templ_7745c5c3_Err
1592 }
1593 if h.Gap != nil {
1594 templ_7745c5c3_Err = gapRow(*h.Gap, 6).Render(ctx, templ_7745c5c3_Buffer)
1595 if templ_7745c5c3_Err != nil {
1596 return templ_7745c5c3_Err
1597 }
1598 }
1599 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 145, "<tr class=\"hunk\"><td colspan=\"6\">")
1600 if templ_7745c5c3_Err != nil {
1601 return templ_7745c5c3_Err
1602 }
1603 var templ_7745c5c3_Var81 string
1604 templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinStringErrs(h.Header)
1605 if templ_7745c5c3_Err != nil {
1606 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 283, Col: 51}
1607 }
1608 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))
1609 if templ_7745c5c3_Err != nil {
1610 return templ_7745c5c3_Err
1611 }
1612 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 146, "</td></tr>")
1613 if templ_7745c5c3_Err != nil {
1614 return templ_7745c5c3_Err
1615 }
1616 for _, row := range h.Split {
1617 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 147, "<tr>")
1618 if templ_7745c5c3_Err != nil {
1619 return templ_7745c5c3_Err
1620 }
1621 templ_7745c5c3_Err = splitSide(row.L, true).Render(ctx, templ_7745c5c3_Buffer)
1622 if templ_7745c5c3_Err != nil {
1623 return templ_7745c5c3_Err
1624 }
1625 templ_7745c5c3_Err = splitSide(row.R, false).Render(ctx, templ_7745c5c3_Buffer)
1626 if templ_7745c5c3_Err != nil {
1627 return templ_7745c5c3_Err
1628 }
1629 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 148, "</tr>")
1630 if templ_7745c5c3_Err != nil {
1631 return templ_7745c5c3_Err
1632 }
1633 if notes, form := row.Notes(), row.Form(); len(notes) > 0 || form != nil {
1634 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 149, "<tr class=\"fnote\"><td colspan=\"6\">")
1635 if templ_7745c5c3_Err != nil {
1636 return templ_7745c5c3_Err
1637 }
1638 templ_7745c5c3_Err = lineNotes(notes, form, "-s").Render(ctx, templ_7745c5c3_Buffer)
1639 if templ_7745c5c3_Err != nil {
1640 return templ_7745c5c3_Err
1641 }
1642 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 150, "</td></tr>")
1643 if templ_7745c5c3_Err != nil {
1644 return templ_7745c5c3_Err
1645 }
1646 }
1647 }
1648 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 151, "</tbody> ")
1649 if templ_7745c5c3_Err != nil {
1650 return templ_7745c5c3_Err
1651 }
1652 }
1653 if f.Tail != nil {
1654 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 152, "<tbody>")
1655 if templ_7745c5c3_Err != nil {
1656 return templ_7745c5c3_Err
1657 }
1658 templ_7745c5c3_Err = gapRow(*f.Tail, 6).Render(ctx, templ_7745c5c3_Buffer)
1659 if templ_7745c5c3_Err != nil {
1660 return templ_7745c5c3_Err
1661 }
1662 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 153, "</tbody>")
1663 if templ_7745c5c3_Err != nil {
1664 return templ_7745c5c3_Err
1665 }
1666 }
1667 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 154, "</table>")
1668 if templ_7745c5c3_Err != nil {
1669 return templ_7745c5c3_Err
1670 }
1671 }
1672 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 155, "</div>")
1673 if templ_7745c5c3_Err != nil {
1674 return templ_7745c5c3_Err
1675 }
1676 } else {
1677 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 156, "<p class=\"note pad\">")
1678 if templ_7745c5c3_Err != nil {
1679 return templ_7745c5c3_Err
1680 }
1681 if f.Note != "" {
1682 var templ_7745c5c3_Var82 string
1683 templ_7745c5c3_Var82, templ_7745c5c3_Err = templ.JoinStringErrs(f.Note)
1684 if templ_7745c5c3_Err != nil {
1685 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 308, Col: 13}
1686 }
1687 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var82))
1688 if templ_7745c5c3_Err != nil {
1689 return templ_7745c5c3_Err
1690 }
1691 } else {
1692 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 157, "no textual change.")
1693 if templ_7745c5c3_Err != nil {
1694 return templ_7745c5c3_Err
1695 }
1696 }
1697 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 158, "</p>")
1698 if templ_7745c5c3_Err != nil {
1699 return templ_7745c5c3_Err
1700 }
1701 }
1702 if len(f.Loose) > 0 {
1703 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 159, "<div class=\"dloose\">")
1704 if templ_7745c5c3_Err != nil {
1705 return templ_7745c5c3_Err
1706 }
1707 for _, c := range f.Loose {
1708 templ_7745c5c3_Err = commentView(c, "").Render(ctx, templ_7745c5c3_Buffer)
1709 if templ_7745c5c3_Err != nil {
1710 return templ_7745c5c3_Err
1711 }
1712 }
1713 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 160, "</div>")
1714 if templ_7745c5c3_Err != nil {
1715 return templ_7745c5c3_Err
1716 }
1717 }
1718 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 161, "</details>")
1719 if templ_7745c5c3_Err != nil {
1720 return templ_7745c5c3_Err
1721 }
1722 return nil
1723 })
1724}
1725
1726// MRFiles is a window of files of a merge request, for the placeholders of
1727// the page: the files only, which replace the placeholders of the same ids.
1728func MRFiles(p MRFilesPage) templ.Component {
1729 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1730 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1731 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1732 return templ_7745c5c3_CtxErr
1733 }
1734 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1735 if !templ_7745c5c3_IsBuffer {
1736 defer func() {
1737 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1738 if templ_7745c5c3_Err == nil {
1739 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1740 }
1741 }()
1742 }
1743 ctx = templ.InitializeContext(ctx)
1744 templ_7745c5c3_Var83 := templ.GetChildren(ctx)
1745 if templ_7745c5c3_Var83 == nil {
1746 templ_7745c5c3_Var83 = templ.NopComponent
1747 }
1748 ctx = templ.ClearChildren(ctx)
1749 for _, f := range p.Files {
1750 templ_7745c5c3_Err = DiffFileView(f, p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
1751 if templ_7745c5c3_Err != nil {
1752 return templ_7745c5c3_Err
1753 }
1754 }
1755 return nil
1756 })
1757}
1758
1759// MRFilesMoved answers a window of a diff that is not the one of the page any
1760// more: the placeholder shows it instead of a file of another diff.
1761func MRFilesMoved() templ.Component {
1762 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1763 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1764 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1765 return templ_7745c5c3_CtxErr
1766 }
1767 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1768 if !templ_7745c5c3_IsBuffer {
1769 defer func() {
1770 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1771 if templ_7745c5c3_Err == nil {
1772 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1773 }
1774 }()
1775 }
1776 ctx = templ.InitializeContext(ctx)
1777 templ_7745c5c3_Var84 := templ.GetChildren(ctx)
1778 if templ_7745c5c3_Var84 == nil {
1779 templ_7745c5c3_Var84 = templ.NopComponent
1780 }
1781 ctx = templ.ClearChildren(ctx)
1782 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 162, "<p class=\"notice\" data-moved>this merge request changed since the page was loaded — <a href=\"\">reload</a></p>")
1783 if templ_7745c5c3_Err != nil {
1784 return templ_7745c5c3_Err
1785 }
1786 return nil
1787 })
1788}
1789
1790// gapRow is the row of the hidden lines before a hunk, or of the rest of the
1791// file: a button that loads them in their place (ermite.js, ermite.expand).
1792// Without scripts nothing loads them: hidden.
1793func gapRow(g DiffGap, cols int) templ.Component {
1794 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1795 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1796 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1797 return templ_7745c5c3_CtxErr
1798 }
1799 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1800 if !templ_7745c5c3_IsBuffer {
1801 defer func() {
1802 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1803 if templ_7745c5c3_Err == nil {
1804 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1805 }
1806 }()
1807 }
1808 ctx = templ.InitializeContext(ctx)
1809 templ_7745c5c3_Var85 := templ.GetChildren(ctx)
1810 if templ_7745c5c3_Var85 == nil {
1811 templ_7745c5c3_Var85 = templ.NopComponent
1812 }
1813 ctx = templ.ClearChildren(ctx)
1814 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 163, "<tr class=\"gap\" data-js data-gap=\"")
1815 if templ_7745c5c3_Err != nil {
1816 return templ_7745c5c3_Err
1817 }
1818 var templ_7745c5c3_Var86 string
1819 templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.ResolveAttributeValue(g.Key)
1820 if templ_7745c5c3_Err != nil {
1821 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 342, Col: 41}
1822 }
1823 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var86)
1824 if templ_7745c5c3_Err != nil {
1825 return templ_7745c5c3_Err
1826 }
1827 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 164, "\"><td colspan=\"")
1828 if templ_7745c5c3_Err != nil {
1829 return templ_7745c5c3_Err
1830 }
1831 var templ_7745c5c3_Var87 string
1832 templ_7745c5c3_Var87, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(cols))
1833 if templ_7745c5c3_Err != nil {
1834 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 343, Col: 26}
1835 }
1836 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var87)
1837 if templ_7745c5c3_Err != nil {
1838 return templ_7745c5c3_Err
1839 }
1840 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 165, "\"><button type=\"button\" data-src=\"")
1841 if templ_7745c5c3_Err != nil {
1842 return templ_7745c5c3_Err
1843 }
1844 var templ_7745c5c3_Var88 string
1845 templ_7745c5c3_Var88, templ_7745c5c3_Err = templ.ResolveAttributeValue(g.Src)
1846 if templ_7745c5c3_Err != nil {
1847 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 344, Col: 41}
1848 }
1849 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var88)
1850 if templ_7745c5c3_Err != nil {
1851 return templ_7745c5c3_Err
1852 }
1853 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 166, "\"><span aria-hidden=\"true\">⋯</span> ")
1854 if templ_7745c5c3_Err != nil {
1855 return templ_7745c5c3_Err
1856 }
1857 var templ_7745c5c3_Var89 string
1858 templ_7745c5c3_Var89, templ_7745c5c3_Err = templ.JoinStringErrs(g.Label())
1859 if templ_7745c5c3_Err != nil {
1860 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 345, Col: 51}
1861 }
1862 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var89))
1863 if templ_7745c5c3_Err != nil {
1864 return templ_7745c5c3_Err
1865 }
1866 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 167, "</button></td></tr>")
1867 if templ_7745c5c3_Err != nil {
1868 return templ_7745c5c3_Err
1869 }
1870 return nil
1871 })
1872}
1873
1874// DiffContext is the hidden lines of a gap, for /context: one body a layout,
1875// whose rows replace the rows of the gap in the table of that layout.
1876func DiffContext(c ContextRows) templ.Component {
1877 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1878 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1879 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1880 return templ_7745c5c3_CtxErr
1881 }
1882 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1883 if !templ_7745c5c3_IsBuffer {
1884 defer func() {
1885 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1886 if templ_7745c5c3_Err == nil {
1887 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1888 }
1889 }()
1890 }
1891 ctx = templ.InitializeContext(ctx)
1892 templ_7745c5c3_Var90 := templ.GetChildren(ctx)
1893 if templ_7745c5c3_Var90 == nil {
1894 templ_7745c5c3_Var90 = templ.NopComponent
1895 }
1896 ctx = templ.ClearChildren(ctx)
1897 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 168, "<table><tbody data-for=\"uni\">")
1898 if templ_7745c5c3_Err != nil {
1899 return templ_7745c5c3_Err
1900 }
1901 for _, ln := range c.Lines {
1902 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 169, "<tr class=\"ctx\"><td class=\"ln\">")
1903 if templ_7745c5c3_Err != nil {
1904 return templ_7745c5c3_Err
1905 }
1906 var templ_7745c5c3_Var91 string
1907 templ_7745c5c3_Var91, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Old)
1908 if templ_7745c5c3_Err != nil {
1909 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 358, Col: 28}
1910 }
1911 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var91))
1912 if templ_7745c5c3_Err != nil {
1913 return templ_7745c5c3_Err
1914 }
1915 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 170, "</td><td class=\"ln\">")
1916 if templ_7745c5c3_Err != nil {
1917 return templ_7745c5c3_Err
1918 }
1919 var templ_7745c5c3_Var92 string
1920 templ_7745c5c3_Var92, templ_7745c5c3_Err = templ.JoinStringErrs(ln.New)
1921 if templ_7745c5c3_Err != nil {
1922 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 359, Col: 28}
1923 }
1924 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var92))
1925 if templ_7745c5c3_Err != nil {
1926 return templ_7745c5c3_Err
1927 }
1928 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 171, "</td><td class=\"m\">")
1929 if templ_7745c5c3_Err != nil {
1930 return templ_7745c5c3_Err
1931 }
1932 var templ_7745c5c3_Var93 string
1933 templ_7745c5c3_Var93, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
1934 if templ_7745c5c3_Err != nil {
1935 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 360, Col: 28}
1936 }
1937 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var93))
1938 if templ_7745c5c3_Err != nil {
1939 return templ_7745c5c3_Err
1940 }
1941 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 172, "</td><td class=\"tx chroma\">")
1942 if templ_7745c5c3_Err != nil {
1943 return templ_7745c5c3_Err
1944 }
1945 templ_7745c5c3_Err = codeLine(ln).Render(ctx, templ_7745c5c3_Buffer)
1946 if templ_7745c5c3_Err != nil {
1947 return templ_7745c5c3_Err
1948 }
1949 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 173, "</td></tr>")
1950 if templ_7745c5c3_Err != nil {
1951 return templ_7745c5c3_Err
1952 }
1953 }
1954 if c.More != nil {
1955 templ_7745c5c3_Err = gapRow(*c.More, 4).Render(ctx, templ_7745c5c3_Buffer)
1956 if templ_7745c5c3_Err != nil {
1957 return templ_7745c5c3_Err
1958 }
1959 }
1960 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 174, "</tbody> <tbody data-for=\"spl\">")
1961 if templ_7745c5c3_Err != nil {
1962 return templ_7745c5c3_Err
1963 }
1964 for i := range c.Lines {
1965 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 175, "<tr>")
1966 if templ_7745c5c3_Err != nil {
1967 return templ_7745c5c3_Err
1968 }
1969 templ_7745c5c3_Err = splitSide(&c.Lines[i], true).Render(ctx, templ_7745c5c3_Buffer)
1970 if templ_7745c5c3_Err != nil {
1971 return templ_7745c5c3_Err
1972 }
1973 templ_7745c5c3_Err = splitSide(&c.Lines[i], false).Render(ctx, templ_7745c5c3_Buffer)
1974 if templ_7745c5c3_Err != nil {
1975 return templ_7745c5c3_Err
1976 }
1977 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 176, "</tr>")
1978 if templ_7745c5c3_Err != nil {
1979 return templ_7745c5c3_Err
1980 }
1981 }
1982 if c.More != nil {
1983 templ_7745c5c3_Err = gapRow(*c.More, 6).Render(ctx, templ_7745c5c3_Buffer)
1984 if templ_7745c5c3_Err != nil {
1985 return templ_7745c5c3_Err
1986 }
1987 }
1988 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 177, "</tbody></table>")
1989 if templ_7745c5c3_Err != nil {
1990 return templ_7745c5c3_Err
1991 }
1992 return nil
1993 })
1994}
1995
1996// splitSide is one half of a row of the split view; a side without a line is
1997// an empty cell.
1998func splitSide(ln *DiffLine, old bool) templ.Component {
1999 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2000 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2001 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2002 return templ_7745c5c3_CtxErr
2003 }
2004 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2005 if !templ_7745c5c3_IsBuffer {
2006 defer func() {
2007 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2008 if templ_7745c5c3_Err == nil {
2009 templ_7745c5c3_Err = templ_7745c5c3_BufErr
2010 }
2011 }()
2012 }
2013 ctx = templ.InitializeContext(ctx)
2014 templ_7745c5c3_Var94 := templ.GetChildren(ctx)
2015 if templ_7745c5c3_Var94 == nil {
2016 templ_7745c5c3_Var94 = templ.NopComponent
2017 }
2018 ctx = templ.ClearChildren(ctx)
2019 if ln == nil {
2020 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 178, "<td class=\"ln none\"></td><td class=\"m none\"></td><td class=\"tx none\"></td>")
2021 if templ_7745c5c3_Err != nil {
2022 return templ_7745c5c3_Err
2023 }
2024 } else {
2025 var templ_7745c5c3_Var95 = []any{"ln", ln.Kind, templ.KV("sel", ln.Selected)}
2026 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var95...)
2027 if templ_7745c5c3_Err != nil {
2028 return templ_7745c5c3_Err
2029 }
2030 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 179, "<td class=\"")
2031 if templ_7745c5c3_Err != nil {
2032 return templ_7745c5c3_Err
2033 }
2034 var templ_7745c5c3_Var96 string
2035 templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var95).String())
2036 if templ_7745c5c3_Err != nil {
2037 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2038 }
2039 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var96)
2040 if templ_7745c5c3_Err != nil {
2041 return templ_7745c5c3_Err
2042 }
2043 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 180, "\">")
2044 if templ_7745c5c3_Err != nil {
2045 return templ_7745c5c3_Err
2046 }
2047 if old {
2048 templ_7745c5c3_Err = gutter(ln.Old, ln.OldHref).Render(ctx, templ_7745c5c3_Buffer)
2049 if templ_7745c5c3_Err != nil {
2050 return templ_7745c5c3_Err
2051 }
2052 } else {
2053 templ_7745c5c3_Err = gutter(ln.New, ln.NewHref).Render(ctx, templ_7745c5c3_Buffer)
2054 if templ_7745c5c3_Err != nil {
2055 return templ_7745c5c3_Err
2056 }
2057 }
2058 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 181, "</td>")
2059 if templ_7745c5c3_Err != nil {
2060 return templ_7745c5c3_Err
2061 }
2062 var templ_7745c5c3_Var97 = []any{"m", ln.Kind, templ.KV("sel", ln.Selected)}
2063 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var97...)
2064 if templ_7745c5c3_Err != nil {
2065 return templ_7745c5c3_Err
2066 }
2067 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 182, "<td class=\"")
2068 if templ_7745c5c3_Err != nil {
2069 return templ_7745c5c3_Err
2070 }
2071 var templ_7745c5c3_Var98 string
2072 templ_7745c5c3_Var98, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var97).String())
2073 if templ_7745c5c3_Err != nil {
2074 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2075 }
2076 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var98)
2077 if templ_7745c5c3_Err != nil {
2078 return templ_7745c5c3_Err
2079 }
2080 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 183, "\">")
2081 if templ_7745c5c3_Err != nil {
2082 return templ_7745c5c3_Err
2083 }
2084 var templ_7745c5c3_Var99 string
2085 templ_7745c5c3_Var99, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
2086 if templ_7745c5c3_Err != nil {
2087 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 397, Col: 68}
2088 }
2089 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var99))
2090 if templ_7745c5c3_Err != nil {
2091 return templ_7745c5c3_Err
2092 }
2093 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 184, "</td>")
2094 if templ_7745c5c3_Err != nil {
2095 return templ_7745c5c3_Err
2096 }
2097 var templ_7745c5c3_Var100 = []any{"tx", "chroma", ln.Kind, templ.KV("sel", ln.Selected)}
2098 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var100...)
2099 if templ_7745c5c3_Err != nil {
2100 return templ_7745c5c3_Err
2101 }
2102 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 185, "<td class=\"")
2103 if templ_7745c5c3_Err != nil {
2104 return templ_7745c5c3_Err
2105 }
2106 var templ_7745c5c3_Var101 string
2107 templ_7745c5c3_Var101, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var100).String())
2108 if templ_7745c5c3_Err != nil {
2109 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2110 }
2111 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var101)
2112 if templ_7745c5c3_Err != nil {
2113 return templ_7745c5c3_Err
2114 }
2115 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 186, "\">")
2116 if templ_7745c5c3_Err != nil {
2117 return templ_7745c5c3_Err
2118 }
2119 templ_7745c5c3_Err = codeLine(*ln).Render(ctx, templ_7745c5c3_Buffer)
2120 if templ_7745c5c3_Err != nil {
2121 return templ_7745c5c3_Err
2122 }
2123 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 187, "</td>")
2124 if templ_7745c5c3_Err != nil {
2125 return templ_7745c5c3_Err
2126 }
2127 }
2128 return nil
2129 })
2130}
2131
2132// gutter is a line number of the gutter. On a merge request that can be
2133// commented on, it links to the form that comments on that line.
2134func gutter(n, href string) templ.Component {
2135 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2136 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2137 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2138 return templ_7745c5c3_CtxErr
2139 }
2140 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2141 if !templ_7745c5c3_IsBuffer {
2142 defer func() {
2143 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2144 if templ_7745c5c3_Err == nil {
2145 templ_7745c5c3_Err = templ_7745c5c3_BufErr
2146 }
2147 }()
2148 }
2149 ctx = templ.InitializeContext(ctx)
2150 templ_7745c5c3_Var102 := templ.GetChildren(ctx)
2151 if templ_7745c5c3_Var102 == nil {
2152 templ_7745c5c3_Var102 = templ.NopComponent
2153 }
2154 ctx = templ.ClearChildren(ctx)
2155 if href != "" {
2156 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 188, "<a href=\"")
2157 if templ_7745c5c3_Err != nil {
2158 return templ_7745c5c3_Err
2159 }
2160 var templ_7745c5c3_Var103 templ.SafeURL
2161 templ_7745c5c3_Var103, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
2162 if templ_7745c5c3_Err != nil {
2163 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 406, Col: 31}
2164 }
2165 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var103))
2166 if templ_7745c5c3_Err != nil {
2167 return templ_7745c5c3_Err
2168 }
2169 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 189, "\" title=\"comment on this line\">")
2170 if templ_7745c5c3_Err != nil {
2171 return templ_7745c5c3_Err
2172 }
2173 var templ_7745c5c3_Var104 string
2174 templ_7745c5c3_Var104, templ_7745c5c3_Err = templ.JoinStringErrs(n)
2175 if templ_7745c5c3_Err != nil {
2176 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 406, Col: 66}
2177 }
2178 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var104))
2179 if templ_7745c5c3_Err != nil {
2180 return templ_7745c5c3_Err
2181 }
2182 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 190, "</a>")
2183 if templ_7745c5c3_Err != nil {
2184 return templ_7745c5c3_Err
2185 }
2186 } else {
2187 var templ_7745c5c3_Var105 string
2188 templ_7745c5c3_Var105, templ_7745c5c3_Err = templ.JoinStringErrs(n)
2189 if templ_7745c5c3_Err != nil {
2190 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 408, Col: 5}
2191 }
2192 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var105))
2193 if templ_7745c5c3_Err != nil {
2194 return templ_7745c5c3_Err
2195 }
2196 }
2197 return nil
2198 })
2199}
2200
2201var _ = templruntime.GeneratedTemplate