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 f.Manual {
1421 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, " <div class=\"dlazy\" data-src=\"")
1422 if templ_7745c5c3_Err != nil {
1423 return templ_7745c5c3_Err
1424 }
1425 var templ_7745c5c3_Var75 string
1426 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Src)
1427 if templ_7745c5c3_Err != nil {
1428 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 246, Col: 38}
1429 }
1430 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var75)
1431 if templ_7745c5c3_Err != nil {
1432 return templ_7745c5c3_Err
1433 }
1434 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, "\" data-manual><a href=\"")
1435 if templ_7745c5c3_Err != nil {
1436 return templ_7745c5c3_Err
1437 }
1438 var templ_7745c5c3_Var76 templ.SafeURL
1439 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(f.Href))
1440 if templ_7745c5c3_Err != nil {
1441 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 247, Col: 35}
1442 }
1443 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
1444 if templ_7745c5c3_Err != nil {
1445 return templ_7745c5c3_Err
1446 }
1447 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "\">load diff</a></div>")
1448 if templ_7745c5c3_Err != nil {
1449 return templ_7745c5c3_Err
1450 }
1451 } else if len(f.Hunks) > 0 {
1452 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, "<div class=\"dscroll\">")
1453 if templ_7745c5c3_Err != nil {
1454 return templ_7745c5c3_Err
1455 }
1456 if p.ShowUnified {
1457 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "<table class=\"dt uni\" aria-label=\"")
1458 if templ_7745c5c3_Err != nil {
1459 return templ_7745c5c3_Err
1460 }
1461 var templ_7745c5c3_Var77 string
1462 templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path + ", unified")
1463 if templ_7745c5c3_Err != nil {
1464 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 252, Col: 60}
1465 }
1466 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var77)
1467 if templ_7745c5c3_Err != nil {
1468 return templ_7745c5c3_Err
1469 }
1470 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "\">")
1471 if templ_7745c5c3_Err != nil {
1472 return templ_7745c5c3_Err
1473 }
1474 for _, h := range f.Hunks {
1475 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "<tbody>")
1476 if templ_7745c5c3_Err != nil {
1477 return templ_7745c5c3_Err
1478 }
1479 if h.Gap != nil {
1480 templ_7745c5c3_Err = gapRow(*h.Gap, 4).Render(ctx, templ_7745c5c3_Buffer)
1481 if templ_7745c5c3_Err != nil {
1482 return templ_7745c5c3_Err
1483 }
1484 }
1485 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "<tr class=\"hunk\"><td colspan=\"4\">")
1486 if templ_7745c5c3_Err != nil {
1487 return templ_7745c5c3_Err
1488 }
1489 var templ_7745c5c3_Var78 string
1490 templ_7745c5c3_Var78, templ_7745c5c3_Err = templ.JoinStringErrs(h.Header)
1491 if templ_7745c5c3_Err != nil {
1492 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 258, Col: 51}
1493 }
1494 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var78))
1495 if templ_7745c5c3_Err != nil {
1496 return templ_7745c5c3_Err
1497 }
1498 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "</td></tr>")
1499 if templ_7745c5c3_Err != nil {
1500 return templ_7745c5c3_Err
1501 }
1502 for _, ln := range h.Lines {
1503 var templ_7745c5c3_Var79 = []any{ln.Kind, templ.KV("sel", ln.Selected)}
1504 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var79...)
1505 if templ_7745c5c3_Err != nil {
1506 return templ_7745c5c3_Err
1507 }
1508 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "<tr class=\"")
1509 if templ_7745c5c3_Err != nil {
1510 return templ_7745c5c3_Err
1511 }
1512 var templ_7745c5c3_Var80 string
1513 templ_7745c5c3_Var80, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var79).String())
1514 if templ_7745c5c3_Err != nil {
1515 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1516 }
1517 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var80)
1518 if templ_7745c5c3_Err != nil {
1519 return templ_7745c5c3_Err
1520 }
1521 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, "\"><td class=\"ln\">")
1522 if templ_7745c5c3_Err != nil {
1523 return templ_7745c5c3_Err
1524 }
1525 templ_7745c5c3_Err = gutter(ln.Old, ln.OldHref).Render(ctx, templ_7745c5c3_Buffer)
1526 if templ_7745c5c3_Err != nil {
1527 return templ_7745c5c3_Err
1528 }
1529 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 135, "</td><td class=\"ln\">")
1530 if templ_7745c5c3_Err != nil {
1531 return templ_7745c5c3_Err
1532 }
1533 templ_7745c5c3_Err = gutter(ln.New, ln.NewHref).Render(ctx, templ_7745c5c3_Buffer)
1534 if templ_7745c5c3_Err != nil {
1535 return templ_7745c5c3_Err
1536 }
1537 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 136, "</td><td class=\"m\">")
1538 if templ_7745c5c3_Err != nil {
1539 return templ_7745c5c3_Err
1540 }
1541 var templ_7745c5c3_Var81 string
1542 templ_7745c5c3_Var81, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
1543 if templ_7745c5c3_Err != nil {
1544 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 263, Col: 33}
1545 }
1546 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var81))
1547 if templ_7745c5c3_Err != nil {
1548 return templ_7745c5c3_Err
1549 }
1550 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 137, "</td><td class=\"tx chroma\">")
1551 if templ_7745c5c3_Err != nil {
1552 return templ_7745c5c3_Err
1553 }
1554 templ_7745c5c3_Err = codeLine(ln).Render(ctx, templ_7745c5c3_Buffer)
1555 if templ_7745c5c3_Err != nil {
1556 return templ_7745c5c3_Err
1557 }
1558 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 138, "</td></tr>")
1559 if templ_7745c5c3_Err != nil {
1560 return templ_7745c5c3_Err
1561 }
1562 if len(ln.Notes) > 0 || ln.Form != nil {
1563 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 139, "<tr class=\"fnote\"><td colspan=\"3\"></td><td>")
1564 if templ_7745c5c3_Err != nil {
1565 return templ_7745c5c3_Err
1566 }
1567 templ_7745c5c3_Err = lineNotes(ln.Notes, ln.Form, "").Render(ctx, templ_7745c5c3_Buffer)
1568 if templ_7745c5c3_Err != nil {
1569 return templ_7745c5c3_Err
1570 }
1571 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 140, "</td></tr>")
1572 if templ_7745c5c3_Err != nil {
1573 return templ_7745c5c3_Err
1574 }
1575 }
1576 }
1577 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 141, "</tbody> ")
1578 if templ_7745c5c3_Err != nil {
1579 return templ_7745c5c3_Err
1580 }
1581 }
1582 if f.Tail != nil {
1583 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 142, "<tbody>")
1584 if templ_7745c5c3_Err != nil {
1585 return templ_7745c5c3_Err
1586 }
1587 templ_7745c5c3_Err = gapRow(*f.Tail, 4).Render(ctx, templ_7745c5c3_Buffer)
1588 if templ_7745c5c3_Err != nil {
1589 return templ_7745c5c3_Err
1590 }
1591 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 143, "</tbody>")
1592 if templ_7745c5c3_Err != nil {
1593 return templ_7745c5c3_Err
1594 }
1595 }
1596 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 144, "</table>")
1597 if templ_7745c5c3_Err != nil {
1598 return templ_7745c5c3_Err
1599 }
1600 }
1601 if p.ShowSplit {
1602 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 145, "<table class=\"dt spl\" aria-label=\"")
1603 if templ_7745c5c3_Err != nil {
1604 return templ_7745c5c3_Err
1605 }
1606 var templ_7745c5c3_Var82 string
1607 templ_7745c5c3_Var82, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path + ", split")
1608 if templ_7745c5c3_Err != nil {
1609 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 283, Col: 58}
1610 }
1611 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var82)
1612 if templ_7745c5c3_Err != nil {
1613 return templ_7745c5c3_Err
1614 }
1615 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 146, "\"><colgroup><col class=\"c-ln\"><col class=\"c-m\"><col><col class=\"c-ln\"><col class=\"c-m\"><col></colgroup> ")
1616 if templ_7745c5c3_Err != nil {
1617 return templ_7745c5c3_Err
1618 }
1619 for _, h := range f.Hunks {
1620 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 147, "<tbody>")
1621 if templ_7745c5c3_Err != nil {
1622 return templ_7745c5c3_Err
1623 }
1624 if h.Gap != nil {
1625 templ_7745c5c3_Err = gapRow(*h.Gap, 6).Render(ctx, templ_7745c5c3_Buffer)
1626 if templ_7745c5c3_Err != nil {
1627 return templ_7745c5c3_Err
1628 }
1629 }
1630 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 148, "<tr class=\"hunk\"><td colspan=\"6\">")
1631 if templ_7745c5c3_Err != nil {
1632 return templ_7745c5c3_Err
1633 }
1634 var templ_7745c5c3_Var83 string
1635 templ_7745c5c3_Var83, templ_7745c5c3_Err = templ.JoinStringErrs(h.Header)
1636 if templ_7745c5c3_Err != nil {
1637 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 290, Col: 51}
1638 }
1639 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var83))
1640 if templ_7745c5c3_Err != nil {
1641 return templ_7745c5c3_Err
1642 }
1643 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 149, "</td></tr>")
1644 if templ_7745c5c3_Err != nil {
1645 return templ_7745c5c3_Err
1646 }
1647 for _, row := range h.Split {
1648 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 150, "<tr>")
1649 if templ_7745c5c3_Err != nil {
1650 return templ_7745c5c3_Err
1651 }
1652 templ_7745c5c3_Err = splitSide(row.L, true).Render(ctx, templ_7745c5c3_Buffer)
1653 if templ_7745c5c3_Err != nil {
1654 return templ_7745c5c3_Err
1655 }
1656 templ_7745c5c3_Err = splitSide(row.R, false).Render(ctx, templ_7745c5c3_Buffer)
1657 if templ_7745c5c3_Err != nil {
1658 return templ_7745c5c3_Err
1659 }
1660 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 151, "</tr>")
1661 if templ_7745c5c3_Err != nil {
1662 return templ_7745c5c3_Err
1663 }
1664 if notes, form := row.Notes(), row.Form(); len(notes) > 0 || form != nil {
1665 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 152, "<tr class=\"fnote\"><td colspan=\"6\">")
1666 if templ_7745c5c3_Err != nil {
1667 return templ_7745c5c3_Err
1668 }
1669 templ_7745c5c3_Err = lineNotes(notes, form, "-s").Render(ctx, templ_7745c5c3_Buffer)
1670 if templ_7745c5c3_Err != nil {
1671 return templ_7745c5c3_Err
1672 }
1673 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 153, "</td></tr>")
1674 if templ_7745c5c3_Err != nil {
1675 return templ_7745c5c3_Err
1676 }
1677 }
1678 }
1679 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 154, "</tbody> ")
1680 if templ_7745c5c3_Err != nil {
1681 return templ_7745c5c3_Err
1682 }
1683 }
1684 if f.Tail != nil {
1685 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 155, "<tbody>")
1686 if templ_7745c5c3_Err != nil {
1687 return templ_7745c5c3_Err
1688 }
1689 templ_7745c5c3_Err = gapRow(*f.Tail, 6).Render(ctx, templ_7745c5c3_Buffer)
1690 if templ_7745c5c3_Err != nil {
1691 return templ_7745c5c3_Err
1692 }
1693 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 156, "</tbody>")
1694 if templ_7745c5c3_Err != nil {
1695 return templ_7745c5c3_Err
1696 }
1697 }
1698 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 157, "</table>")
1699 if templ_7745c5c3_Err != nil {
1700 return templ_7745c5c3_Err
1701 }
1702 }
1703 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 158, "</div>")
1704 if templ_7745c5c3_Err != nil {
1705 return templ_7745c5c3_Err
1706 }
1707 } else if f.Raw != "" {
1708 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 159, "<p class=\"note pad\">")
1709 if templ_7745c5c3_Err != nil {
1710 return templ_7745c5c3_Err
1711 }
1712 var templ_7745c5c3_Var84 string
1713 templ_7745c5c3_Var84, templ_7745c5c3_Err = templ.JoinStringErrs(f.Note)
1714 if templ_7745c5c3_Err != nil {
1715 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 313, Col: 31}
1716 }
1717 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var84))
1718 if templ_7745c5c3_Err != nil {
1719 return templ_7745c5c3_Err
1720 }
1721 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 160, " <a href=\"")
1722 if templ_7745c5c3_Err != nil {
1723 return templ_7745c5c3_Err
1724 }
1725 var templ_7745c5c3_Var85 templ.SafeURL
1726 templ_7745c5c3_Var85, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(f.Raw))
1727 if templ_7745c5c3_Err != nil {
1728 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 313, Col: 64}
1729 }
1730 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var85))
1731 if templ_7745c5c3_Err != nil {
1732 return templ_7745c5c3_Err
1733 }
1734 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 161, "\">view raw</a></p>")
1735 if templ_7745c5c3_Err != nil {
1736 return templ_7745c5c3_Err
1737 }
1738 } else {
1739 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 162, "<p class=\"note pad\">")
1740 if templ_7745c5c3_Err != nil {
1741 return templ_7745c5c3_Err
1742 }
1743 if f.Note != "" {
1744 var templ_7745c5c3_Var86 string
1745 templ_7745c5c3_Var86, templ_7745c5c3_Err = templ.JoinStringErrs(f.Note)
1746 if templ_7745c5c3_Err != nil {
1747 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 317, Col: 13}
1748 }
1749 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var86))
1750 if templ_7745c5c3_Err != nil {
1751 return templ_7745c5c3_Err
1752 }
1753 } else {
1754 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 163, "no textual change.")
1755 if templ_7745c5c3_Err != nil {
1756 return templ_7745c5c3_Err
1757 }
1758 }
1759 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 164, "</p>")
1760 if templ_7745c5c3_Err != nil {
1761 return templ_7745c5c3_Err
1762 }
1763 }
1764 if len(f.Loose) > 0 {
1765 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 165, "<div class=\"dloose\">")
1766 if templ_7745c5c3_Err != nil {
1767 return templ_7745c5c3_Err
1768 }
1769 for _, c := range f.Loose {
1770 templ_7745c5c3_Err = commentView(c, "").Render(ctx, templ_7745c5c3_Buffer)
1771 if templ_7745c5c3_Err != nil {
1772 return templ_7745c5c3_Err
1773 }
1774 }
1775 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 166, "</div>")
1776 if templ_7745c5c3_Err != nil {
1777 return templ_7745c5c3_Err
1778 }
1779 }
1780 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 167, "</details>")
1781 if templ_7745c5c3_Err != nil {
1782 return templ_7745c5c3_Err
1783 }
1784 return nil
1785 })
1786}
1787
1788// MRFiles is a window of files of a merge request, for the placeholders of
1789// the page: the files only, which replace the placeholders of the same ids.
1790func MRFiles(p MRFilesPage) templ.Component {
1791 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1792 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1793 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1794 return templ_7745c5c3_CtxErr
1795 }
1796 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1797 if !templ_7745c5c3_IsBuffer {
1798 defer func() {
1799 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1800 if templ_7745c5c3_Err == nil {
1801 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1802 }
1803 }()
1804 }
1805 ctx = templ.InitializeContext(ctx)
1806 templ_7745c5c3_Var87 := templ.GetChildren(ctx)
1807 if templ_7745c5c3_Var87 == nil {
1808 templ_7745c5c3_Var87 = templ.NopComponent
1809 }
1810 ctx = templ.ClearChildren(ctx)
1811 for _, f := range p.Files {
1812 templ_7745c5c3_Err = DiffFileView(f, p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
1813 if templ_7745c5c3_Err != nil {
1814 return templ_7745c5c3_Err
1815 }
1816 }
1817 return nil
1818 })
1819}
1820
1821// MRFilesMoved answers a window of a diff that is not the one of the page any
1822// more: the placeholder shows it instead of a file of another diff.
1823func MRFilesMoved() templ.Component {
1824 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1825 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1826 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1827 return templ_7745c5c3_CtxErr
1828 }
1829 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1830 if !templ_7745c5c3_IsBuffer {
1831 defer func() {
1832 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1833 if templ_7745c5c3_Err == nil {
1834 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1835 }
1836 }()
1837 }
1838 ctx = templ.InitializeContext(ctx)
1839 templ_7745c5c3_Var88 := templ.GetChildren(ctx)
1840 if templ_7745c5c3_Var88 == nil {
1841 templ_7745c5c3_Var88 = templ.NopComponent
1842 }
1843 ctx = templ.ClearChildren(ctx)
1844 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 168, "<p class=\"notice\" data-moved>this merge request changed since the page was loaded — <a href=\"\">reload</a></p>")
1845 if templ_7745c5c3_Err != nil {
1846 return templ_7745c5c3_Err
1847 }
1848 return nil
1849 })
1850}
1851
1852// gapRow is the row of the hidden lines before a hunk, or of the rest of the
1853// file: a button that loads them in their place (ermite.js, ermite.expand).
1854// Without scripts nothing loads them: hidden.
1855func gapRow(g DiffGap, cols int) templ.Component {
1856 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1857 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1858 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1859 return templ_7745c5c3_CtxErr
1860 }
1861 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1862 if !templ_7745c5c3_IsBuffer {
1863 defer func() {
1864 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1865 if templ_7745c5c3_Err == nil {
1866 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1867 }
1868 }()
1869 }
1870 ctx = templ.InitializeContext(ctx)
1871 templ_7745c5c3_Var89 := templ.GetChildren(ctx)
1872 if templ_7745c5c3_Var89 == nil {
1873 templ_7745c5c3_Var89 = templ.NopComponent
1874 }
1875 ctx = templ.ClearChildren(ctx)
1876 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 169, "<tr class=\"gap\" data-js data-gap=\"")
1877 if templ_7745c5c3_Err != nil {
1878 return templ_7745c5c3_Err
1879 }
1880 var templ_7745c5c3_Var90 string
1881 templ_7745c5c3_Var90, templ_7745c5c3_Err = templ.ResolveAttributeValue(g.Key)
1882 if templ_7745c5c3_Err != nil {
1883 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 351, Col: 41}
1884 }
1885 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var90)
1886 if templ_7745c5c3_Err != nil {
1887 return templ_7745c5c3_Err
1888 }
1889 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 170, "\"><td colspan=\"")
1890 if templ_7745c5c3_Err != nil {
1891 return templ_7745c5c3_Err
1892 }
1893 var templ_7745c5c3_Var91 string
1894 templ_7745c5c3_Var91, templ_7745c5c3_Err = templ.ResolveAttributeValue(itoa(cols))
1895 if templ_7745c5c3_Err != nil {
1896 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 352, Col: 26}
1897 }
1898 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var91)
1899 if templ_7745c5c3_Err != nil {
1900 return templ_7745c5c3_Err
1901 }
1902 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 171, "\"><button type=\"button\" data-src=\"")
1903 if templ_7745c5c3_Err != nil {
1904 return templ_7745c5c3_Err
1905 }
1906 var templ_7745c5c3_Var92 string
1907 templ_7745c5c3_Var92, templ_7745c5c3_Err = templ.ResolveAttributeValue(g.Src)
1908 if templ_7745c5c3_Err != nil {
1909 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 353, Col: 41}
1910 }
1911 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var92)
1912 if templ_7745c5c3_Err != nil {
1913 return templ_7745c5c3_Err
1914 }
1915 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 172, "\"><span aria-hidden=\"true\">⋯</span> ")
1916 if templ_7745c5c3_Err != nil {
1917 return templ_7745c5c3_Err
1918 }
1919 var templ_7745c5c3_Var93 string
1920 templ_7745c5c3_Var93, templ_7745c5c3_Err = templ.JoinStringErrs(g.Label())
1921 if templ_7745c5c3_Err != nil {
1922 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 354, Col: 51}
1923 }
1924 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var93))
1925 if templ_7745c5c3_Err != nil {
1926 return templ_7745c5c3_Err
1927 }
1928 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 173, "</button></td></tr>")
1929 if templ_7745c5c3_Err != nil {
1930 return templ_7745c5c3_Err
1931 }
1932 return nil
1933 })
1934}
1935
1936// DiffContext is the hidden lines of a gap, for /context: one body a layout,
1937// whose rows replace the rows of the gap in the table of that layout.
1938func DiffContext(c ContextRows) templ.Component {
1939 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1940 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1941 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1942 return templ_7745c5c3_CtxErr
1943 }
1944 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1945 if !templ_7745c5c3_IsBuffer {
1946 defer func() {
1947 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1948 if templ_7745c5c3_Err == nil {
1949 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1950 }
1951 }()
1952 }
1953 ctx = templ.InitializeContext(ctx)
1954 templ_7745c5c3_Var94 := templ.GetChildren(ctx)
1955 if templ_7745c5c3_Var94 == nil {
1956 templ_7745c5c3_Var94 = templ.NopComponent
1957 }
1958 ctx = templ.ClearChildren(ctx)
1959 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 174, "<table><tbody data-for=\"uni\">")
1960 if templ_7745c5c3_Err != nil {
1961 return templ_7745c5c3_Err
1962 }
1963 for _, ln := range c.Lines {
1964 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 175, "<tr class=\"ctx\"><td class=\"ln\">")
1965 if templ_7745c5c3_Err != nil {
1966 return templ_7745c5c3_Err
1967 }
1968 var templ_7745c5c3_Var95 string
1969 templ_7745c5c3_Var95, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Old)
1970 if templ_7745c5c3_Err != nil {
1971 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 367, Col: 28}
1972 }
1973 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var95))
1974 if templ_7745c5c3_Err != nil {
1975 return templ_7745c5c3_Err
1976 }
1977 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 176, "</td><td class=\"ln\">")
1978 if templ_7745c5c3_Err != nil {
1979 return templ_7745c5c3_Err
1980 }
1981 var templ_7745c5c3_Var96 string
1982 templ_7745c5c3_Var96, templ_7745c5c3_Err = templ.JoinStringErrs(ln.New)
1983 if templ_7745c5c3_Err != nil {
1984 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 368, Col: 28}
1985 }
1986 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var96))
1987 if templ_7745c5c3_Err != nil {
1988 return templ_7745c5c3_Err
1989 }
1990 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 177, "</td><td class=\"m\">")
1991 if templ_7745c5c3_Err != nil {
1992 return templ_7745c5c3_Err
1993 }
1994 var templ_7745c5c3_Var97 string
1995 templ_7745c5c3_Var97, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
1996 if templ_7745c5c3_Err != nil {
1997 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 369, Col: 28}
1998 }
1999 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var97))
2000 if templ_7745c5c3_Err != nil {
2001 return templ_7745c5c3_Err
2002 }
2003 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 178, "</td><td class=\"tx chroma\">")
2004 if templ_7745c5c3_Err != nil {
2005 return templ_7745c5c3_Err
2006 }
2007 templ_7745c5c3_Err = codeLine(ln).Render(ctx, templ_7745c5c3_Buffer)
2008 if templ_7745c5c3_Err != nil {
2009 return templ_7745c5c3_Err
2010 }
2011 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 179, "</td></tr>")
2012 if templ_7745c5c3_Err != nil {
2013 return templ_7745c5c3_Err
2014 }
2015 }
2016 if c.More != nil {
2017 templ_7745c5c3_Err = gapRow(*c.More, 4).Render(ctx, templ_7745c5c3_Buffer)
2018 if templ_7745c5c3_Err != nil {
2019 return templ_7745c5c3_Err
2020 }
2021 }
2022 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 180, "</tbody> <tbody data-for=\"spl\">")
2023 if templ_7745c5c3_Err != nil {
2024 return templ_7745c5c3_Err
2025 }
2026 for i := range c.Lines {
2027 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 181, "<tr>")
2028 if templ_7745c5c3_Err != nil {
2029 return templ_7745c5c3_Err
2030 }
2031 templ_7745c5c3_Err = splitSide(&c.Lines[i], true).Render(ctx, templ_7745c5c3_Buffer)
2032 if templ_7745c5c3_Err != nil {
2033 return templ_7745c5c3_Err
2034 }
2035 templ_7745c5c3_Err = splitSide(&c.Lines[i], false).Render(ctx, templ_7745c5c3_Buffer)
2036 if templ_7745c5c3_Err != nil {
2037 return templ_7745c5c3_Err
2038 }
2039 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 182, "</tr>")
2040 if templ_7745c5c3_Err != nil {
2041 return templ_7745c5c3_Err
2042 }
2043 }
2044 if c.More != nil {
2045 templ_7745c5c3_Err = gapRow(*c.More, 6).Render(ctx, templ_7745c5c3_Buffer)
2046 if templ_7745c5c3_Err != nil {
2047 return templ_7745c5c3_Err
2048 }
2049 }
2050 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 183, "</tbody></table>")
2051 if templ_7745c5c3_Err != nil {
2052 return templ_7745c5c3_Err
2053 }
2054 return nil
2055 })
2056}
2057
2058// splitSide is one half of a row of the split view; a side without a line is
2059// an empty cell.
2060func splitSide(ln *DiffLine, old bool) templ.Component {
2061 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2062 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2063 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2064 return templ_7745c5c3_CtxErr
2065 }
2066 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2067 if !templ_7745c5c3_IsBuffer {
2068 defer func() {
2069 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2070 if templ_7745c5c3_Err == nil {
2071 templ_7745c5c3_Err = templ_7745c5c3_BufErr
2072 }
2073 }()
2074 }
2075 ctx = templ.InitializeContext(ctx)
2076 templ_7745c5c3_Var98 := templ.GetChildren(ctx)
2077 if templ_7745c5c3_Var98 == nil {
2078 templ_7745c5c3_Var98 = templ.NopComponent
2079 }
2080 ctx = templ.ClearChildren(ctx)
2081 if ln == nil {
2082 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 184, "<td class=\"ln none\"></td><td class=\"m none\"></td><td class=\"tx none\"></td>")
2083 if templ_7745c5c3_Err != nil {
2084 return templ_7745c5c3_Err
2085 }
2086 } else {
2087 var templ_7745c5c3_Var99 = []any{"ln", ln.Kind, templ.KV("sel", ln.Selected)}
2088 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var99...)
2089 if templ_7745c5c3_Err != nil {
2090 return templ_7745c5c3_Err
2091 }
2092 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 185, "<td class=\"")
2093 if templ_7745c5c3_Err != nil {
2094 return templ_7745c5c3_Err
2095 }
2096 var templ_7745c5c3_Var100 string
2097 templ_7745c5c3_Var100, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var99).String())
2098 if templ_7745c5c3_Err != nil {
2099 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2100 }
2101 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var100)
2102 if templ_7745c5c3_Err != nil {
2103 return templ_7745c5c3_Err
2104 }
2105 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 186, "\">")
2106 if templ_7745c5c3_Err != nil {
2107 return templ_7745c5c3_Err
2108 }
2109 if old {
2110 templ_7745c5c3_Err = gutter(ln.Old, ln.OldHref).Render(ctx, templ_7745c5c3_Buffer)
2111 if templ_7745c5c3_Err != nil {
2112 return templ_7745c5c3_Err
2113 }
2114 } else {
2115 templ_7745c5c3_Err = gutter(ln.New, ln.NewHref).Render(ctx, templ_7745c5c3_Buffer)
2116 if templ_7745c5c3_Err != nil {
2117 return templ_7745c5c3_Err
2118 }
2119 }
2120 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 187, "</td>")
2121 if templ_7745c5c3_Err != nil {
2122 return templ_7745c5c3_Err
2123 }
2124 var templ_7745c5c3_Var101 = []any{"m", ln.Kind, templ.KV("sel", ln.Selected)}
2125 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var101...)
2126 if templ_7745c5c3_Err != nil {
2127 return templ_7745c5c3_Err
2128 }
2129 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 188, "<td class=\"")
2130 if templ_7745c5c3_Err != nil {
2131 return templ_7745c5c3_Err
2132 }
2133 var templ_7745c5c3_Var102 string
2134 templ_7745c5c3_Var102, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var101).String())
2135 if templ_7745c5c3_Err != nil {
2136 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2137 }
2138 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var102)
2139 if templ_7745c5c3_Err != nil {
2140 return templ_7745c5c3_Err
2141 }
2142 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 189, "\">")
2143 if templ_7745c5c3_Err != nil {
2144 return templ_7745c5c3_Err
2145 }
2146 var templ_7745c5c3_Var103 string
2147 templ_7745c5c3_Var103, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
2148 if templ_7745c5c3_Err != nil {
2149 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 406, Col: 68}
2150 }
2151 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var103))
2152 if templ_7745c5c3_Err != nil {
2153 return templ_7745c5c3_Err
2154 }
2155 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 190, "</td>")
2156 if templ_7745c5c3_Err != nil {
2157 return templ_7745c5c3_Err
2158 }
2159 var templ_7745c5c3_Var104 = []any{"tx", "chroma", ln.Kind, templ.KV("sel", ln.Selected)}
2160 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var104...)
2161 if templ_7745c5c3_Err != nil {
2162 return templ_7745c5c3_Err
2163 }
2164 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 191, "<td class=\"")
2165 if templ_7745c5c3_Err != nil {
2166 return templ_7745c5c3_Err
2167 }
2168 var templ_7745c5c3_Var105 string
2169 templ_7745c5c3_Var105, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var104).String())
2170 if templ_7745c5c3_Err != nil {
2171 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
2172 }
2173 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var105)
2174 if templ_7745c5c3_Err != nil {
2175 return templ_7745c5c3_Err
2176 }
2177 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 192, "\">")
2178 if templ_7745c5c3_Err != nil {
2179 return templ_7745c5c3_Err
2180 }
2181 templ_7745c5c3_Err = codeLine(*ln).Render(ctx, templ_7745c5c3_Buffer)
2182 if templ_7745c5c3_Err != nil {
2183 return templ_7745c5c3_Err
2184 }
2185 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 193, "</td>")
2186 if templ_7745c5c3_Err != nil {
2187 return templ_7745c5c3_Err
2188 }
2189 }
2190 return nil
2191 })
2192}
2193
2194// gutter is a line number of the gutter. On a merge request that can be
2195// commented on, it links to the form that comments on that line.
2196func gutter(n, href string) templ.Component {
2197 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
2198 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
2199 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
2200 return templ_7745c5c3_CtxErr
2201 }
2202 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
2203 if !templ_7745c5c3_IsBuffer {
2204 defer func() {
2205 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
2206 if templ_7745c5c3_Err == nil {
2207 templ_7745c5c3_Err = templ_7745c5c3_BufErr
2208 }
2209 }()
2210 }
2211 ctx = templ.InitializeContext(ctx)
2212 templ_7745c5c3_Var106 := templ.GetChildren(ctx)
2213 if templ_7745c5c3_Var106 == nil {
2214 templ_7745c5c3_Var106 = templ.NopComponent
2215 }
2216 ctx = templ.ClearChildren(ctx)
2217 if href != "" {
2218 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 194, "<a href=\"")
2219 if templ_7745c5c3_Err != nil {
2220 return templ_7745c5c3_Err
2221 }
2222 var templ_7745c5c3_Var107 templ.SafeURL
2223 templ_7745c5c3_Var107, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
2224 if templ_7745c5c3_Err != nil {
2225 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 415, Col: 31}
2226 }
2227 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var107))
2228 if templ_7745c5c3_Err != nil {
2229 return templ_7745c5c3_Err
2230 }
2231 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 195, "\" title=\"comment on this line\">")
2232 if templ_7745c5c3_Err != nil {
2233 return templ_7745c5c3_Err
2234 }
2235 var templ_7745c5c3_Var108 string
2236 templ_7745c5c3_Var108, templ_7745c5c3_Err = templ.JoinStringErrs(n)
2237 if templ_7745c5c3_Err != nil {
2238 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 415, Col: 66}
2239 }
2240 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var108))
2241 if templ_7745c5c3_Err != nil {
2242 return templ_7745c5c3_Err
2243 }
2244 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 196, "</a>")
2245 if templ_7745c5c3_Err != nil {
2246 return templ_7745c5c3_Err
2247 }
2248 } else {
2249 var templ_7745c5c3_Var109 string
2250 templ_7745c5c3_Var109, templ_7745c5c3_Err = templ.JoinStringErrs(n)
2251 if templ_7745c5c3_Err != nil {
2252 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 417, Col: 5}
2253 }
2254 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var109))
2255 if templ_7745c5c3_Err != nil {
2256 return templ_7745c5c3_Err
2257 }
2258 }
2259 return nil
2260 })
2261}
2262
2263var _ = templruntime.GeneratedTemplate