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 len(p.Refs) > 0 {
206 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "<dt>refs</dt><dd>")
207 if templ_7745c5c3_Err != nil {
208 return templ_7745c5c3_Err
209 }
210 for _, r := range p.Refs {
211 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<span class=\"pill\">")
212 if templ_7745c5c3_Err != nil {
213 return templ_7745c5c3_Err
214 }
215 var templ_7745c5c3_Var10 string
216 templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(r)
217 if templ_7745c5c3_Err != nil {
218 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 47, Col: 29}
219 }
220 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
221 if templ_7745c5c3_Err != nil {
222 return templ_7745c5c3_Err
223 }
224 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "</span>")
225 if templ_7745c5c3_Err != nil {
226 return templ_7745c5c3_Err
227 }
228 }
229 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "</dd>")
230 if templ_7745c5c3_Err != nil {
231 return templ_7745c5c3_Err
232 }
233 }
234 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</dl></header><div class=\"diff-tools\" role=\"toolbar\" aria-label=\"Diff view\"><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(plural(p.NFiles, "file", "files"))
240 if templ_7745c5c3_Err != nil {
241 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 54, Col: 56}
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, 24, " · <span class=\"plus\">+")
248 if templ_7745c5c3_Err != nil {
249 return templ_7745c5c3_Err
250 }
251 var templ_7745c5c3_Var12 string
252 templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Adds))
253 if templ_7745c5c3_Err != nil {
254 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 54, Col: 96}
255 }
256 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
257 if templ_7745c5c3_Err != nil {
258 return templ_7745c5c3_Err
259 }
260 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</span> <span class=\"minus\">-")
261 if templ_7745c5c3_Err != nil {
262 return templ_7745c5c3_Err
263 }
264 var templ_7745c5c3_Var13 string
265 templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(p.Dels))
266 if templ_7745c5c3_Err != nil {
267 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 54, Col: 141}
268 }
269 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
270 if templ_7745c5c3_Err != nil {
271 return templ_7745c5c3_Err
272 }
273 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "</span></span> <span class=\"grow\"></span>")
274 if templ_7745c5c3_Err != nil {
275 return templ_7745c5c3_Err
276 }
277 templ_7745c5c3_Err = viewLink(p.DiffView, "unified", "Unified", "u", p.UnifiedHref).Render(ctx, templ_7745c5c3_Buffer)
278 if templ_7745c5c3_Err != nil {
279 return templ_7745c5c3_Err
280 }
281 templ_7745c5c3_Err = viewLink(p.DiffView, "split", "Split", "d", p.SplitHref).Render(ctx, templ_7745c5c3_Buffer)
282 if templ_7745c5c3_Err != nil {
283 return templ_7745c5c3_Err
284 }
285 templ_7745c5c3_Err = collapseButton().Render(ctx, templ_7745c5c3_Buffer)
286 if templ_7745c5c3_Err != nil {
287 return templ_7745c5c3_Err
288 }
289 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "</div>")
290 if templ_7745c5c3_Err != nil {
291 return templ_7745c5c3_Err
292 }
293 if p.Invisible {
294 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "<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>")
295 if templ_7745c5c3_Err != nil {
296 return templ_7745c5c3_Err
297 }
298 }
299 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, " ")
300 if templ_7745c5c3_Err != nil {
301 return templ_7745c5c3_Err
302 }
303 if p.Note != "" {
304 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<p class=\"notice\">")
305 if templ_7745c5c3_Err != nil {
306 return templ_7745c5c3_Err
307 }
308 var templ_7745c5c3_Var14 string
309 templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(p.Note)
310 if templ_7745c5c3_Err != nil {
311 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 67, Col: 29}
312 }
313 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
314 if templ_7745c5c3_Err != nil {
315 return templ_7745c5c3_Err
316 }
317 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "</p>")
318 if templ_7745c5c3_Err != nil {
319 return templ_7745c5c3_Err
320 }
321 }
322 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, " <div id=\"diffs\"")
323 if templ_7745c5c3_Err != nil {
324 return templ_7745c5c3_Err
325 }
326 if p.Both {
327 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, " data-diff=\"")
328 if templ_7745c5c3_Err != nil {
329 return templ_7745c5c3_Err
330 }
331 var templ_7745c5c3_Var15 string
332 templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.ResolveAttributeValue(p.View)
333 if templ_7745c5c3_Err != nil {
334 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 72, Col: 22}
335 }
336 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var15)
337 if templ_7745c5c3_Err != nil {
338 return templ_7745c5c3_Err
339 }
340 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "\"")
341 if templ_7745c5c3_Err != nil {
342 return templ_7745c5c3_Err
343 }
344 } else {
345 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, " data-view=\"")
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.ResolveAttributeValue(p.View)
351 if templ_7745c5c3_Err != nil {
352 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 74, Col: 22}
353 }
354 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(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, "\"")
359 if templ_7745c5c3_Err != nil {
360 return templ_7745c5c3_Err
361 }
362 }
363 if p.Both && !p.Pinned {
364 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, " hx-live=\"this.dataset.diff = sessionStorage.getItem('diff') || this.dataset.diff\"")
365 if templ_7745c5c3_Err != nil {
366 return templ_7745c5c3_Err
367 }
368 }
369 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, ">")
370 if templ_7745c5c3_Err != nil {
371 return templ_7745c5c3_Err
372 }
373 for _, f := range p.Files {
374 templ_7745c5c3_Err = DiffFileView(f, p.DiffView).Render(ctx, templ_7745c5c3_Buffer)
375 if templ_7745c5c3_Err != nil {
376 return templ_7745c5c3_Err
377 }
378 }
379 if len(p.Files) == 0 {
380 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "<p class=\"note\">no changed files")
381 if templ_7745c5c3_Err != nil {
382 return templ_7745c5c3_Err
383 }
384 var templ_7745c5c3_Var17 string
385 templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
386 if templ_7745c5c3_Err != nil {
387 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 84, Col: 41}
388 }
389 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
390 if templ_7745c5c3_Err != nil {
391 return templ_7745c5c3_Err
392 }
393 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, " ")
394 if templ_7745c5c3_Err != nil {
395 return templ_7745c5c3_Err
396 }
397 if p.Merge {
398 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "against the first parent.")
399 if templ_7745c5c3_Err != nil {
400 return templ_7745c5c3_Err
401 }
402 } else {
403 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "in this commit.")
404 if templ_7745c5c3_Err != nil {
405 return templ_7745c5c3_Err
406 }
407 }
408 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "</p>")
409 if templ_7745c5c3_Err != nil {
410 return templ_7745c5c3_Err
411 }
412 }
413 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</div>")
414 if templ_7745c5c3_Err != nil {
415 return templ_7745c5c3_Err
416 }
417 return nil
418 })
419 templ_7745c5c3_Err = Shell(l, commitRail(p)).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
420 if templ_7745c5c3_Err != nil {
421 return templ_7745c5c3_Err
422 }
423 return nil
424 })
425}
426
427// viewLink is a button of the diff tools. It is a link, so that the split
428// layout works without JavaScript; with it, and when both layouts are in the
429// page, a click only flips the layout.
430func viewLink(p DiffView, view, label, key, href string) templ.Component {
431 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
432 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
433 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
434 return templ_7745c5c3_CtxErr
435 }
436 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
437 if !templ_7745c5c3_IsBuffer {
438 defer func() {
439 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
440 if templ_7745c5c3_Err == nil {
441 templ_7745c5c3_Err = templ_7745c5c3_BufErr
442 }
443 }()
444 }
445 ctx = templ.InitializeContext(ctx)
446 templ_7745c5c3_Var18 := templ.GetChildren(ctx)
447 if templ_7745c5c3_Var18 == nil {
448 templ_7745c5c3_Var18 = templ.NopComponent
449 }
450 ctx = templ.ClearChildren(ctx)
451 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 45, "<a href=\"")
452 if templ_7745c5c3_Err != nil {
453 return templ_7745c5c3_Err
454 }
455 var templ_7745c5c3_Var19 templ.SafeURL
456 templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
457 if templ_7745c5c3_Err != nil {
458 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 101, Col: 28}
459 }
460 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
461 if templ_7745c5c3_Err != nil {
462 return templ_7745c5c3_Err
463 }
464 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 46, "\" class=\"btn vbtn\" data-view=\"")
465 if templ_7745c5c3_Err != nil {
466 return templ_7745c5c3_Err
467 }
468 var templ_7745c5c3_Var20 string
469 templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.ResolveAttributeValue(view)
470 if templ_7745c5c3_Err != nil {
471 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 103, Col: 18}
472 }
473 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var20)
474 if templ_7745c5c3_Err != nil {
475 return templ_7745c5c3_Err
476 }
477 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 47, "\" aria-keyshortcuts=\"")
478 if templ_7745c5c3_Err != nil {
479 return templ_7745c5c3_Err
480 }
481 var templ_7745c5c3_Var21 string
482 templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.ResolveAttributeValue(key)
483 if templ_7745c5c3_Err != nil {
484 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 104, Col: 25}
485 }
486 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var21)
487 if templ_7745c5c3_Err != nil {
488 return templ_7745c5c3_Err
489 }
490 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 48, "\"")
491 if templ_7745c5c3_Err != nil {
492 return templ_7745c5c3_Err
493 }
494 if p.View == view {
495 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 49, " aria-current=\"true\"")
496 if templ_7745c5c3_Err != nil {
497 return templ_7745c5c3_Err
498 }
499 }
500 if p.Both {
501 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 50, " hx-on:click=\"event.preventDefault(); document.body.dispatchEvent(new CustomEvent('k-' + this.dataset.view))\" :aria-current=\"")
502 if templ_7745c5c3_Err != nil {
503 return templ_7745c5c3_Err
504 }
505 var templ_7745c5c3_Var22 string
506 templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.ResolveAttributeValue("q('#diffs').attr['data-diff'] === '" + view + "' ? 'true' : false")
507 if templ_7745c5c3_Err != nil {
508 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 110, Col: 86}
509 }
510 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var22)
511 if templ_7745c5c3_Err != nil {
512 return templ_7745c5c3_Err
513 }
514 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 51, "\"")
515 if templ_7745c5c3_Err != nil {
516 return templ_7745c5c3_Err
517 }
518 }
519 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 52, ">")
520 if templ_7745c5c3_Err != nil {
521 return templ_7745c5c3_Err
522 }
523 var templ_7745c5c3_Var23 string
524 templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.JoinStringErrs(label)
525 if templ_7745c5c3_Err != nil {
526 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 112, Col: 9}
527 }
528 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var23))
529 if templ_7745c5c3_Err != nil {
530 return templ_7745c5c3_Err
531 }
532 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 53, "<kbd aria-hidden=\"true\">")
533 if templ_7745c5c3_Err != nil {
534 return templ_7745c5c3_Err
535 }
536 var templ_7745c5c3_Var24 string
537 templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.JoinStringErrs(key)
538 if templ_7745c5c3_Err != nil {
539 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 112, Col: 40}
540 }
541 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var24))
542 if templ_7745c5c3_Err != nil {
543 return templ_7745c5c3_Err
544 }
545 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 54, "</kbd></a>")
546 if templ_7745c5c3_Err != nil {
547 return templ_7745c5c3_Err
548 }
549 return nil
550 })
551}
552
553// collapseButton folds every file of the diff, or opens them all again when
554// none is open; its label follows the state.
555func collapseButton() templ.Component {
556 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
557 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
558 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
559 return templ_7745c5c3_CtxErr
560 }
561 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
562 if !templ_7745c5c3_IsBuffer {
563 defer func() {
564 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
565 if templ_7745c5c3_Err == nil {
566 templ_7745c5c3_Err = templ_7745c5c3_BufErr
567 }
568 }()
569 }
570 ctx = templ.InitializeContext(ctx)
571 templ_7745c5c3_Var25 := templ.GetChildren(ctx)
572 if templ_7745c5c3_Var25 == nil {
573 templ_7745c5c3_Var25 = templ.NopComponent
574 }
575 ctx = templ.ClearChildren(ctx)
576 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 55, "<button type=\"button\" aria-keyshortcuts=\"x\" hx-on:click=\"document.body.dispatchEvent(new CustomEvent('k-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>")
577 if templ_7745c5c3_Err != nil {
578 return templ_7745c5c3_Err
579 }
580 return nil
581 })
582}
583
584func personView(pr Person) templ.Component {
585 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
586 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
587 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
588 return templ_7745c5c3_CtxErr
589 }
590 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
591 if !templ_7745c5c3_IsBuffer {
592 defer func() {
593 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
594 if templ_7745c5c3_Err == nil {
595 templ_7745c5c3_Err = templ_7745c5c3_BufErr
596 }
597 }()
598 }
599 ctx = templ.InitializeContext(ctx)
600 templ_7745c5c3_Var26 := templ.GetChildren(ctx)
601 if templ_7745c5c3_Var26 == nil {
602 templ_7745c5c3_Var26 = templ.NopComponent
603 }
604 ctx = templ.ClearChildren(ctx)
605 var templ_7745c5c3_Var27 string
606 templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.JoinStringErrs(pr.Name)
607 if templ_7745c5c3_Err != nil {
608 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 124, Col: 10}
609 }
610 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var27))
611 if templ_7745c5c3_Err != nil {
612 return templ_7745c5c3_Err
613 }
614 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 56, " ")
615 if templ_7745c5c3_Err != nil {
616 return templ_7745c5c3_Err
617 }
618 if pr.WhenAt != "" {
619 var templ_7745c5c3_Var28 string
620 templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.JoinStringErrs(" · ")
621 if templ_7745c5c3_Err != nil {
622 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 126, Col: 10}
623 }
624 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var28))
625 if templ_7745c5c3_Err != nil {
626 return templ_7745c5c3_Err
627 }
628 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 57, "<time datetime=\"")
629 if templ_7745c5c3_Err != nil {
630 return templ_7745c5c3_Err
631 }
632 var templ_7745c5c3_Var29 string
633 templ_7745c5c3_Var29, templ_7745c5c3_Err = templ.ResolveAttributeValue(pr.WhenAt)
634 if templ_7745c5c3_Err != nil {
635 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 126, Col: 38}
636 }
637 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var29)
638 if templ_7745c5c3_Err != nil {
639 return templ_7745c5c3_Err
640 }
641 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 58, "\" title=\"")
642 if templ_7745c5c3_Err != nil {
643 return templ_7745c5c3_Err
644 }
645 var templ_7745c5c3_Var30 string
646 templ_7745c5c3_Var30, templ_7745c5c3_Err = templ.ResolveAttributeValue(pr.Abs)
647 if templ_7745c5c3_Err != nil {
648 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 126, Col: 55}
649 }
650 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var30)
651 if templ_7745c5c3_Err != nil {
652 return templ_7745c5c3_Err
653 }
654 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 59, "\">")
655 if templ_7745c5c3_Err != nil {
656 return templ_7745c5c3_Err
657 }
658 var templ_7745c5c3_Var31 string
659 templ_7745c5c3_Var31, templ_7745c5c3_Err = templ.JoinStringErrs(pr.When)
660 if templ_7745c5c3_Err != nil {
661 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 126, Col: 67}
662 }
663 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var31))
664 if templ_7745c5c3_Err != nil {
665 return templ_7745c5c3_Err
666 }
667 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 60, "</time>")
668 if templ_7745c5c3_Err != nil {
669 return templ_7745c5c3_Err
670 }
671 var templ_7745c5c3_Var32 string
672 templ_7745c5c3_Var32, templ_7745c5c3_Err = templ.JoinStringErrs(" · " + pr.Abs)
673 if templ_7745c5c3_Err != nil {
674 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 126, Col: 93}
675 }
676 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var32))
677 if templ_7745c5c3_Err != nil {
678 return templ_7745c5c3_Err
679 }
680 }
681 return nil
682 })
683}
684
685func commitRail(p CommitPage) templ.Component {
686 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
687 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
688 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
689 return templ_7745c5c3_CtxErr
690 }
691 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
692 if !templ_7745c5c3_IsBuffer {
693 defer func() {
694 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
695 if templ_7745c5c3_Err == nil {
696 templ_7745c5c3_Err = templ_7745c5c3_BufErr
697 }
698 }()
699 }
700 ctx = templ.InitializeContext(ctx)
701 templ_7745c5c3_Var33 := templ.GetChildren(ctx)
702 if templ_7745c5c3_Var33 == nil {
703 templ_7745c5c3_Var33 = templ.NopComponent
704 }
705 ctx = templ.ClearChildren(ctx)
706 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 61, "<section aria-labelledby=\"r-files\"><h2 id=\"r-files\">Files <span class=\"count\">")
707 if templ_7745c5c3_Err != nil {
708 return templ_7745c5c3_Err
709 }
710 var templ_7745c5c3_Var34 string
711 templ_7745c5c3_Var34, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(len(p.Files)))
712 if templ_7745c5c3_Err != nil {
713 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 132, Col: 65}
714 }
715 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var34))
716 if templ_7745c5c3_Err != nil {
717 return templ_7745c5c3_Err
718 }
719 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 62, "</span></h2>")
720 if templ_7745c5c3_Err != nil {
721 return templ_7745c5c3_Err
722 }
723 templ_7745c5c3_Err = FileList(p.Files).Render(ctx, templ_7745c5c3_Buffer)
724 if templ_7745c5c3_Err != nil {
725 return templ_7745c5c3_Err
726 }
727 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 63, "</section>")
728 if templ_7745c5c3_Err != nil {
729 return templ_7745c5c3_Err
730 }
731 return nil
732 })
733}
734
735// FileList is the table of contents of a diff: status letter, path, +n -m
736// and an ASCII bar. The row of the file in view is marked.
737func FileList(files []DiffFile) templ.Component {
738 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
739 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
740 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
741 return templ_7745c5c3_CtxErr
742 }
743 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
744 if !templ_7745c5c3_IsBuffer {
745 defer func() {
746 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
747 if templ_7745c5c3_Err == nil {
748 templ_7745c5c3_Err = templ_7745c5c3_BufErr
749 }
750 }()
751 }
752 ctx = templ.InitializeContext(ctx)
753 templ_7745c5c3_Var35 := templ.GetChildren(ctx)
754 if templ_7745c5c3_Var35 == nil {
755 templ_7745c5c3_Var35 = templ.NopComponent
756 }
757 ctx = templ.ClearChildren(ctx)
758 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 64, "<ol class=\"files\" aria-label=\"Changed files\">")
759 if templ_7745c5c3_Err != nil {
760 return templ_7745c5c3_Err
761 }
762 for _, f := range files {
763 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 65, "<li><a href=\"")
764 if templ_7745c5c3_Err != nil {
765 return templ_7745c5c3_Err
766 }
767 var templ_7745c5c3_Var36 templ.SafeURL
768 templ_7745c5c3_Var36, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL("#" + f.ID))
769 if templ_7745c5c3_Err != nil {
770 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 144, Col: 37}
771 }
772 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var36))
773 if templ_7745c5c3_Err != nil {
774 return templ_7745c5c3_Err
775 }
776 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 66, "\" :aria-current=\"")
777 if templ_7745c5c3_Err != nil {
778 return templ_7745c5c3_Err
779 }
780 var templ_7745c5c3_Var37 string
781 templ_7745c5c3_Var37, templ_7745c5c3_Err = templ.ResolveAttributeValue("(() => { let all = q('.dfile').arr(); let cur = all.filter(f => f.getBoundingClientRect().top < innerHeight / 3).at(-1) || all[0]; return cur?.id === '" + f.ID + "' ? 'true' : false })()")
782 if templ_7745c5c3_Err != nil {
783 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 145, Col: 209}
784 }
785 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var37)
786 if templ_7745c5c3_Err != nil {
787 return templ_7745c5c3_Err
788 }
789 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 67, "\" hx-on:click=\"document.getElementById(this.hash.slice(1)).open = true\"><span class=\"st\" title=\"")
790 if templ_7745c5c3_Err != nil {
791 return templ_7745c5c3_Err
792 }
793 var templ_7745c5c3_Var38 string
794 templ_7745c5c3_Var38, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Status)
795 if templ_7745c5c3_Err != nil {
796 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 148, Col: 38}
797 }
798 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var38)
799 if templ_7745c5c3_Err != nil {
800 return templ_7745c5c3_Err
801 }
802 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 68, "\">")
803 if templ_7745c5c3_Err != nil {
804 return templ_7745c5c3_Err
805 }
806 var templ_7745c5c3_Var39 string
807 templ_7745c5c3_Var39, templ_7745c5c3_Err = templ.JoinStringErrs(f.Status)
808 if templ_7745c5c3_Err != nil {
809 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 148, Col: 51}
810 }
811 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var39))
812 if templ_7745c5c3_Err != nil {
813 return templ_7745c5c3_Err
814 }
815 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 69, "</span> <span class=\"p\" title=\"")
816 if templ_7745c5c3_Err != nil {
817 return templ_7745c5c3_Err
818 }
819 var templ_7745c5c3_Var40 string
820 templ_7745c5c3_Var40, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path)
821 if templ_7745c5c3_Err != nil {
822 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 149, Col: 35}
823 }
824 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var40)
825 if templ_7745c5c3_Err != nil {
826 return templ_7745c5c3_Err
827 }
828 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 70, "\">")
829 if templ_7745c5c3_Err != nil {
830 return templ_7745c5c3_Err
831 }
832 var templ_7745c5c3_Var41 string
833 templ_7745c5c3_Var41, templ_7745c5c3_Err = templ.JoinStringErrs(f.Path)
834 if templ_7745c5c3_Err != nil {
835 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 149, Col: 46}
836 }
837 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var41))
838 if templ_7745c5c3_Err != nil {
839 return templ_7745c5c3_Err
840 }
841 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 71, "</span> <span class=\"n\"><span class=\"plus\">+")
842 if templ_7745c5c3_Err != nil {
843 return templ_7745c5c3_Err
844 }
845 var templ_7745c5c3_Var42 string
846 templ_7745c5c3_Var42, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Add))
847 if templ_7745c5c3_Err != nil {
848 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 150, Col: 54}
849 }
850 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var42))
851 if templ_7745c5c3_Err != nil {
852 return templ_7745c5c3_Err
853 }
854 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 72, "</span> <span class=\"minus\">-")
855 if templ_7745c5c3_Err != nil {
856 return templ_7745c5c3_Err
857 }
858 var templ_7745c5c3_Var43 string
859 templ_7745c5c3_Var43, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Del))
860 if templ_7745c5c3_Err != nil {
861 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 150, Col: 98}
862 }
863 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var43))
864 if templ_7745c5c3_Err != nil {
865 return templ_7745c5c3_Err
866 }
867 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 73, "</span></span> <span class=\"b\" aria-hidden=\"true\"><span class=\"plus\">")
868 if templ_7745c5c3_Err != nil {
869 return templ_7745c5c3_Err
870 }
871 var templ_7745c5c3_Var44 string
872 templ_7745c5c3_Var44, templ_7745c5c3_Err = templ.JoinStringErrs(f.Bar.Add)
873 if templ_7745c5c3_Err != nil {
874 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 151, Col: 70}
875 }
876 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var44))
877 if templ_7745c5c3_Err != nil {
878 return templ_7745c5c3_Err
879 }
880 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 74, "</span><span class=\"minus\">")
881 if templ_7745c5c3_Err != nil {
882 return templ_7745c5c3_Err
883 }
884 var templ_7745c5c3_Var45 string
885 templ_7745c5c3_Var45, templ_7745c5c3_Err = templ.JoinStringErrs(f.Bar.Del)
886 if templ_7745c5c3_Err != nil {
887 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 151, Col: 110}
888 }
889 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var45))
890 if templ_7745c5c3_Err != nil {
891 return templ_7745c5c3_Err
892 }
893 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 75, "</span>")
894 if templ_7745c5c3_Err != nil {
895 return templ_7745c5c3_Err
896 }
897 var templ_7745c5c3_Var46 string
898 templ_7745c5c3_Var46, templ_7745c5c3_Err = templ.JoinStringErrs(f.Bar.Rest)
899 if templ_7745c5c3_Err != nil {
900 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 151, Col: 131}
901 }
902 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var46))
903 if templ_7745c5c3_Err != nil {
904 return templ_7745c5c3_Err
905 }
906 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 76, "</span></a></li>")
907 if templ_7745c5c3_Err != nil {
908 return templ_7745c5c3_Err
909 }
910 }
911 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 77, "</ol>")
912 if templ_7745c5c3_Err != nil {
913 return templ_7745c5c3_Err
914 }
915 return nil
916 })
917}
918
919// DiffFileView is one file of the diff: a <details> (per-file collapse). The
920// unified and the split tables are both in it; #diffs[data-diff] shows one.
921// Every changed line keeps its +/- marker, so a change is never conveyed by
922// colour alone.
923func DiffFileView(f DiffFile, p DiffView) templ.Component {
924 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
925 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
926 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
927 return templ_7745c5c3_CtxErr
928 }
929 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
930 if !templ_7745c5c3_IsBuffer {
931 defer func() {
932 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
933 if templ_7745c5c3_Err == nil {
934 templ_7745c5c3_Err = templ_7745c5c3_BufErr
935 }
936 }()
937 }
938 ctx = templ.InitializeContext(ctx)
939 templ_7745c5c3_Var47 := templ.GetChildren(ctx)
940 if templ_7745c5c3_Var47 == nil {
941 templ_7745c5c3_Var47 = templ.NopComponent
942 }
943 ctx = templ.ClearChildren(ctx)
944 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 78, "<details class=\"dfile\" id=\"")
945 if templ_7745c5c3_Err != nil {
946 return templ_7745c5c3_Err
947 }
948 var templ_7745c5c3_Var48 string
949 templ_7745c5c3_Var48, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.ID)
950 if templ_7745c5c3_Err != nil {
951 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 165, Col: 11}
952 }
953 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var48)
954 if templ_7745c5c3_Err != nil {
955 return templ_7745c5c3_Err
956 }
957 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 79, "\" data-file")
958 if templ_7745c5c3_Err != nil {
959 return templ_7745c5c3_Err
960 }
961 if f.Open {
962 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 80, " open")
963 if templ_7745c5c3_Err != nil {
964 return templ_7745c5c3_Err
965 }
966 }
967 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 81, "><summary><span class=\"st\">")
968 if templ_7745c5c3_Err != nil {
969 return templ_7745c5c3_Err
970 }
971 var templ_7745c5c3_Var49 string
972 templ_7745c5c3_Var49, templ_7745c5c3_Err = templ.JoinStringErrs(f.Status)
973 if templ_7745c5c3_Err != nil {
974 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 172, Col: 30}
975 }
976 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var49))
977 if templ_7745c5c3_Err != nil {
978 return templ_7745c5c3_Err
979 }
980 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 82, "</span>")
981 if templ_7745c5c3_Err != nil {
982 return templ_7745c5c3_Err
983 }
984 var templ_7745c5c3_Var50 string
985 templ_7745c5c3_Var50, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
986 if templ_7745c5c3_Err != nil {
987 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 172, Col: 44}
988 }
989 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var50))
990 if templ_7745c5c3_Err != nil {
991 return templ_7745c5c3_Err
992 }
993 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 83, "<span class=\"p\">")
994 if templ_7745c5c3_Err != nil {
995 return templ_7745c5c3_Err
996 }
997 var templ_7745c5c3_Var51 string
998 templ_7745c5c3_Var51, templ_7745c5c3_Err = templ.JoinStringErrs(f.Path)
999 if templ_7745c5c3_Err != nil {
1000 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 172, Col: 70}
1001 }
1002 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var51))
1003 if templ_7745c5c3_Err != nil {
1004 return templ_7745c5c3_Err
1005 }
1006 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 84, "</span>")
1007 if templ_7745c5c3_Err != nil {
1008 return templ_7745c5c3_Err
1009 }
1010 var templ_7745c5c3_Var52 string
1011 templ_7745c5c3_Var52, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1012 if templ_7745c5c3_Err != nil {
1013 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 172, Col: 84}
1014 }
1015 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var52))
1016 if templ_7745c5c3_Err != nil {
1017 return templ_7745c5c3_Err
1018 }
1019 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 85, "<span class=\"plus\">+")
1020 if templ_7745c5c3_Err != nil {
1021 return templ_7745c5c3_Err
1022 }
1023 var templ_7745c5c3_Var53 string
1024 templ_7745c5c3_Var53, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Add))
1025 if templ_7745c5c3_Err != nil {
1026 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 172, Col: 119}
1027 }
1028 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var53))
1029 if templ_7745c5c3_Err != nil {
1030 return templ_7745c5c3_Err
1031 }
1032 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 86, "</span>")
1033 if templ_7745c5c3_Err != nil {
1034 return templ_7745c5c3_Err
1035 }
1036 var templ_7745c5c3_Var54 string
1037 templ_7745c5c3_Var54, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1038 if templ_7745c5c3_Err != nil {
1039 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 172, Col: 133}
1040 }
1041 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var54))
1042 if templ_7745c5c3_Err != nil {
1043 return templ_7745c5c3_Err
1044 }
1045 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 87, "<span class=\"minus\">-")
1046 if templ_7745c5c3_Err != nil {
1047 return templ_7745c5c3_Err
1048 }
1049 var templ_7745c5c3_Var55 string
1050 templ_7745c5c3_Var55, templ_7745c5c3_Err = templ.JoinStringErrs(itoa(f.Del))
1051 if templ_7745c5c3_Err != nil {
1052 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 172, Col: 169}
1053 }
1054 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var55))
1055 if templ_7745c5c3_Err != nil {
1056 return templ_7745c5c3_Err
1057 }
1058 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 88, "</span> ")
1059 if templ_7745c5c3_Err != nil {
1060 return templ_7745c5c3_Err
1061 }
1062 if f.Note != "" {
1063 var templ_7745c5c3_Var56 string
1064 templ_7745c5c3_Var56, templ_7745c5c3_Err = templ.JoinStringErrs(" ")
1065 if templ_7745c5c3_Err != nil {
1066 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 174, Col: 9}
1067 }
1068 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var56))
1069 if templ_7745c5c3_Err != nil {
1070 return templ_7745c5c3_Err
1071 }
1072 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 89, "<span class=\"note\">")
1073 if templ_7745c5c3_Err != nil {
1074 return templ_7745c5c3_Err
1075 }
1076 var templ_7745c5c3_Var57 string
1077 templ_7745c5c3_Var57, templ_7745c5c3_Err = templ.JoinStringErrs(f.Note)
1078 if templ_7745c5c3_Err != nil {
1079 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 174, Col: 38}
1080 }
1081 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var57))
1082 if templ_7745c5c3_Err != nil {
1083 return templ_7745c5c3_Err
1084 }
1085 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 90, "</span>")
1086 if templ_7745c5c3_Err != nil {
1087 return templ_7745c5c3_Err
1088 }
1089 }
1090 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 91, "</summary> ")
1091 if templ_7745c5c3_Err != nil {
1092 return templ_7745c5c3_Err
1093 }
1094 if len(f.Hunks) > 0 {
1095 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 92, "<div class=\"dscroll\">")
1096 if templ_7745c5c3_Err != nil {
1097 return templ_7745c5c3_Err
1098 }
1099 if p.ShowUnified {
1100 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 93, "<table class=\"dt uni\" aria-label=\"")
1101 if templ_7745c5c3_Err != nil {
1102 return templ_7745c5c3_Err
1103 }
1104 var templ_7745c5c3_Var58 string
1105 templ_7745c5c3_Var58, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path + ", unified")
1106 if templ_7745c5c3_Err != nil {
1107 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 180, Col: 60}
1108 }
1109 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var58)
1110 if templ_7745c5c3_Err != nil {
1111 return templ_7745c5c3_Err
1112 }
1113 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 94, "\">")
1114 if templ_7745c5c3_Err != nil {
1115 return templ_7745c5c3_Err
1116 }
1117 for _, h := range f.Hunks {
1118 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 95, "<tbody><tr class=\"hunk\"><td colspan=\"4\">")
1119 if templ_7745c5c3_Err != nil {
1120 return templ_7745c5c3_Err
1121 }
1122 var templ_7745c5c3_Var59 string
1123 templ_7745c5c3_Var59, templ_7745c5c3_Err = templ.JoinStringErrs(h.Header)
1124 if templ_7745c5c3_Err != nil {
1125 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 183, Col: 51}
1126 }
1127 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var59))
1128 if templ_7745c5c3_Err != nil {
1129 return templ_7745c5c3_Err
1130 }
1131 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 96, "</td></tr>")
1132 if templ_7745c5c3_Err != nil {
1133 return templ_7745c5c3_Err
1134 }
1135 for _, ln := range h.Lines {
1136 var templ_7745c5c3_Var60 = []any{ln.Kind}
1137 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var60...)
1138 if templ_7745c5c3_Err != nil {
1139 return templ_7745c5c3_Err
1140 }
1141 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 97, "<tr class=\"")
1142 if templ_7745c5c3_Err != nil {
1143 return templ_7745c5c3_Err
1144 }
1145 var templ_7745c5c3_Var61 string
1146 templ_7745c5c3_Var61, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var60).String())
1147 if templ_7745c5c3_Err != nil {
1148 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1149 }
1150 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var61)
1151 if templ_7745c5c3_Err != nil {
1152 return templ_7745c5c3_Err
1153 }
1154 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 98, "\"><td class=\"ln\">")
1155 if templ_7745c5c3_Err != nil {
1156 return templ_7745c5c3_Err
1157 }
1158 templ_7745c5c3_Err = gutter(ln.Old, ln.OldHref).Render(ctx, templ_7745c5c3_Buffer)
1159 if templ_7745c5c3_Err != nil {
1160 return templ_7745c5c3_Err
1161 }
1162 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 99, "</td><td class=\"ln\">")
1163 if templ_7745c5c3_Err != nil {
1164 return templ_7745c5c3_Err
1165 }
1166 templ_7745c5c3_Err = gutter(ln.New, ln.NewHref).Render(ctx, templ_7745c5c3_Buffer)
1167 if templ_7745c5c3_Err != nil {
1168 return templ_7745c5c3_Err
1169 }
1170 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 100, "</td><td class=\"m\">")
1171 if templ_7745c5c3_Err != nil {
1172 return templ_7745c5c3_Err
1173 }
1174 var templ_7745c5c3_Var62 string
1175 templ_7745c5c3_Var62, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
1176 if templ_7745c5c3_Err != nil {
1177 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 188, Col: 33}
1178 }
1179 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var62))
1180 if templ_7745c5c3_Err != nil {
1181 return templ_7745c5c3_Err
1182 }
1183 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 101, "</td><td class=\"tx\">")
1184 if templ_7745c5c3_Err != nil {
1185 return templ_7745c5c3_Err
1186 }
1187 templ_7745c5c3_Err = codeLine(ln).Render(ctx, templ_7745c5c3_Buffer)
1188 if templ_7745c5c3_Err != nil {
1189 return templ_7745c5c3_Err
1190 }
1191 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 102, "</td></tr>")
1192 if templ_7745c5c3_Err != nil {
1193 return templ_7745c5c3_Err
1194 }
1195 if len(ln.Notes) > 0 || ln.Form != nil {
1196 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 103, "<tr class=\"fnote\"><td colspan=\"3\"></td><td>")
1197 if templ_7745c5c3_Err != nil {
1198 return templ_7745c5c3_Err
1199 }
1200 templ_7745c5c3_Err = lineNotes(ln.Notes, ln.Form, "").Render(ctx, templ_7745c5c3_Buffer)
1201 if templ_7745c5c3_Err != nil {
1202 return templ_7745c5c3_Err
1203 }
1204 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 104, "</td></tr>")
1205 if templ_7745c5c3_Err != nil {
1206 return templ_7745c5c3_Err
1207 }
1208 }
1209 }
1210 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 105, "</tbody>")
1211 if templ_7745c5c3_Err != nil {
1212 return templ_7745c5c3_Err
1213 }
1214 }
1215 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 106, "</table>")
1216 if templ_7745c5c3_Err != nil {
1217 return templ_7745c5c3_Err
1218 }
1219 }
1220 if p.ShowSplit {
1221 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 107, "<table class=\"dt spl\" aria-label=\"")
1222 if templ_7745c5c3_Err != nil {
1223 return templ_7745c5c3_Err
1224 }
1225 var templ_7745c5c3_Var63 string
1226 templ_7745c5c3_Var63, templ_7745c5c3_Err = templ.ResolveAttributeValue(f.Path + ", split")
1227 if templ_7745c5c3_Err != nil {
1228 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 203, Col: 58}
1229 }
1230 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var63)
1231 if templ_7745c5c3_Err != nil {
1232 return templ_7745c5c3_Err
1233 }
1234 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 108, "\"><colgroup><col class=\"c-ln\"><col class=\"c-m\"><col><col class=\"c-ln\"><col class=\"c-m\"><col></colgroup> ")
1235 if templ_7745c5c3_Err != nil {
1236 return templ_7745c5c3_Err
1237 }
1238 for _, h := range f.Hunks {
1239 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 109, "<tbody><tr class=\"hunk\"><td colspan=\"6\">")
1240 if templ_7745c5c3_Err != nil {
1241 return templ_7745c5c3_Err
1242 }
1243 var templ_7745c5c3_Var64 string
1244 templ_7745c5c3_Var64, templ_7745c5c3_Err = templ.JoinStringErrs(h.Header)
1245 if templ_7745c5c3_Err != nil {
1246 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 207, Col: 51}
1247 }
1248 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var64))
1249 if templ_7745c5c3_Err != nil {
1250 return templ_7745c5c3_Err
1251 }
1252 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 110, "</td></tr>")
1253 if templ_7745c5c3_Err != nil {
1254 return templ_7745c5c3_Err
1255 }
1256 for _, row := range h.Split {
1257 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 111, "<tr>")
1258 if templ_7745c5c3_Err != nil {
1259 return templ_7745c5c3_Err
1260 }
1261 templ_7745c5c3_Err = splitSide(row.L, true).Render(ctx, templ_7745c5c3_Buffer)
1262 if templ_7745c5c3_Err != nil {
1263 return templ_7745c5c3_Err
1264 }
1265 templ_7745c5c3_Err = splitSide(row.R, false).Render(ctx, templ_7745c5c3_Buffer)
1266 if templ_7745c5c3_Err != nil {
1267 return templ_7745c5c3_Err
1268 }
1269 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 112, "</tr>")
1270 if templ_7745c5c3_Err != nil {
1271 return templ_7745c5c3_Err
1272 }
1273 if notes, form := row.Notes(), row.Form(); len(notes) > 0 || form != nil {
1274 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 113, "<tr class=\"fnote\"><td colspan=\"6\">")
1275 if templ_7745c5c3_Err != nil {
1276 return templ_7745c5c3_Err
1277 }
1278 templ_7745c5c3_Err = lineNotes(notes, form, "-s").Render(ctx, templ_7745c5c3_Buffer)
1279 if templ_7745c5c3_Err != nil {
1280 return templ_7745c5c3_Err
1281 }
1282 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 114, "</td></tr>")
1283 if templ_7745c5c3_Err != nil {
1284 return templ_7745c5c3_Err
1285 }
1286 }
1287 }
1288 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 115, "</tbody>")
1289 if templ_7745c5c3_Err != nil {
1290 return templ_7745c5c3_Err
1291 }
1292 }
1293 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 116, "</table>")
1294 if templ_7745c5c3_Err != nil {
1295 return templ_7745c5c3_Err
1296 }
1297 }
1298 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 117, "</div>")
1299 if templ_7745c5c3_Err != nil {
1300 return templ_7745c5c3_Err
1301 }
1302 } else {
1303 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 118, "<p class=\"note pad\">")
1304 if templ_7745c5c3_Err != nil {
1305 return templ_7745c5c3_Err
1306 }
1307 if f.Note != "" {
1308 var templ_7745c5c3_Var65 string
1309 templ_7745c5c3_Var65, templ_7745c5c3_Err = templ.JoinStringErrs(f.Note)
1310 if templ_7745c5c3_Err != nil {
1311 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 227, Col: 13}
1312 }
1313 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var65))
1314 if templ_7745c5c3_Err != nil {
1315 return templ_7745c5c3_Err
1316 }
1317 } else {
1318 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 119, "no textual change.")
1319 if templ_7745c5c3_Err != nil {
1320 return templ_7745c5c3_Err
1321 }
1322 }
1323 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 120, "</p>")
1324 if templ_7745c5c3_Err != nil {
1325 return templ_7745c5c3_Err
1326 }
1327 }
1328 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 121, "</details>")
1329 if templ_7745c5c3_Err != nil {
1330 return templ_7745c5c3_Err
1331 }
1332 return nil
1333 })
1334}
1335
1336// splitSide is one half of a row of the split view; a side without a line is
1337// an empty cell.
1338func splitSide(ln *DiffLine, old bool) templ.Component {
1339 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1340 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1341 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1342 return templ_7745c5c3_CtxErr
1343 }
1344 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1345 if !templ_7745c5c3_IsBuffer {
1346 defer func() {
1347 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1348 if templ_7745c5c3_Err == nil {
1349 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1350 }
1351 }()
1352 }
1353 ctx = templ.InitializeContext(ctx)
1354 templ_7745c5c3_Var66 := templ.GetChildren(ctx)
1355 if templ_7745c5c3_Var66 == nil {
1356 templ_7745c5c3_Var66 = templ.NopComponent
1357 }
1358 ctx = templ.ClearChildren(ctx)
1359 if ln == nil {
1360 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 122, "<td class=\"ln none\"></td><td class=\"m none\"></td><td class=\"tx none\"></td>")
1361 if templ_7745c5c3_Err != nil {
1362 return templ_7745c5c3_Err
1363 }
1364 } else {
1365 var templ_7745c5c3_Var67 = []any{"ln", ln.Kind}
1366 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var67...)
1367 if templ_7745c5c3_Err != nil {
1368 return templ_7745c5c3_Err
1369 }
1370 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 123, "<td class=\"")
1371 if templ_7745c5c3_Err != nil {
1372 return templ_7745c5c3_Err
1373 }
1374 var templ_7745c5c3_Var68 string
1375 templ_7745c5c3_Var68, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var67).String())
1376 if templ_7745c5c3_Err != nil {
1377 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1378 }
1379 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var68)
1380 if templ_7745c5c3_Err != nil {
1381 return templ_7745c5c3_Err
1382 }
1383 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 124, "\">")
1384 if templ_7745c5c3_Err != nil {
1385 return templ_7745c5c3_Err
1386 }
1387 if old {
1388 templ_7745c5c3_Err = gutter(ln.Old, ln.OldHref).Render(ctx, templ_7745c5c3_Buffer)
1389 if templ_7745c5c3_Err != nil {
1390 return templ_7745c5c3_Err
1391 }
1392 } else {
1393 templ_7745c5c3_Err = gutter(ln.New, ln.NewHref).Render(ctx, templ_7745c5c3_Buffer)
1394 if templ_7745c5c3_Err != nil {
1395 return templ_7745c5c3_Err
1396 }
1397 }
1398 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 125, "</td>")
1399 if templ_7745c5c3_Err != nil {
1400 return templ_7745c5c3_Err
1401 }
1402 var templ_7745c5c3_Var69 = []any{"m", ln.Kind}
1403 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var69...)
1404 if templ_7745c5c3_Err != nil {
1405 return templ_7745c5c3_Err
1406 }
1407 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 126, "<td class=\"")
1408 if templ_7745c5c3_Err != nil {
1409 return templ_7745c5c3_Err
1410 }
1411 var templ_7745c5c3_Var70 string
1412 templ_7745c5c3_Var70, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var69).String())
1413 if templ_7745c5c3_Err != nil {
1414 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1415 }
1416 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var70)
1417 if templ_7745c5c3_Err != nil {
1418 return templ_7745c5c3_Err
1419 }
1420 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 127, "\">")
1421 if templ_7745c5c3_Err != nil {
1422 return templ_7745c5c3_Err
1423 }
1424 var templ_7745c5c3_Var71 string
1425 templ_7745c5c3_Var71, templ_7745c5c3_Err = templ.JoinStringErrs(ln.Mark)
1426 if templ_7745c5c3_Err != nil {
1427 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 251, Col: 38}
1428 }
1429 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var71))
1430 if templ_7745c5c3_Err != nil {
1431 return templ_7745c5c3_Err
1432 }
1433 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 128, "</td>")
1434 if templ_7745c5c3_Err != nil {
1435 return templ_7745c5c3_Err
1436 }
1437 var templ_7745c5c3_Var72 = []any{"tx", ln.Kind}
1438 templ_7745c5c3_Err = templ.RenderCSSItems(ctx, templ_7745c5c3_Buffer, templ_7745c5c3_Var72...)
1439 if templ_7745c5c3_Err != nil {
1440 return templ_7745c5c3_Err
1441 }
1442 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 129, "<td class=\"")
1443 if templ_7745c5c3_Err != nil {
1444 return templ_7745c5c3_Err
1445 }
1446 var templ_7745c5c3_Var73 string
1447 templ_7745c5c3_Var73, templ_7745c5c3_Err = templ.ResolveAttributeValue(templ.CSSClasses(templ_7745c5c3_Var72).String())
1448 if templ_7745c5c3_Err != nil {
1449 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 1, Col: 0}
1450 }
1451 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var73)
1452 if templ_7745c5c3_Err != nil {
1453 return templ_7745c5c3_Err
1454 }
1455 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 130, "\">")
1456 if templ_7745c5c3_Err != nil {
1457 return templ_7745c5c3_Err
1458 }
1459 templ_7745c5c3_Err = codeLine(*ln).Render(ctx, templ_7745c5c3_Buffer)
1460 if templ_7745c5c3_Err != nil {
1461 return templ_7745c5c3_Err
1462 }
1463 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 131, "</td>")
1464 if templ_7745c5c3_Err != nil {
1465 return templ_7745c5c3_Err
1466 }
1467 }
1468 return nil
1469 })
1470}
1471
1472// gutter is a line number of the gutter. On a merge request that can be
1473// commented on, it links to the form that comments on that line.
1474func gutter(n, href string) templ.Component {
1475 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
1476 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
1477 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
1478 return templ_7745c5c3_CtxErr
1479 }
1480 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
1481 if !templ_7745c5c3_IsBuffer {
1482 defer func() {
1483 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
1484 if templ_7745c5c3_Err == nil {
1485 templ_7745c5c3_Err = templ_7745c5c3_BufErr
1486 }
1487 }()
1488 }
1489 ctx = templ.InitializeContext(ctx)
1490 templ_7745c5c3_Var74 := templ.GetChildren(ctx)
1491 if templ_7745c5c3_Var74 == nil {
1492 templ_7745c5c3_Var74 = templ.NopComponent
1493 }
1494 ctx = templ.ClearChildren(ctx)
1495 if href != "" {
1496 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 132, "<a href=\"")
1497 if templ_7745c5c3_Err != nil {
1498 return templ_7745c5c3_Err
1499 }
1500 var templ_7745c5c3_Var75 templ.SafeURL
1501 templ_7745c5c3_Var75, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(href))
1502 if templ_7745c5c3_Err != nil {
1503 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 260, Col: 31}
1504 }
1505 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var75))
1506 if templ_7745c5c3_Err != nil {
1507 return templ_7745c5c3_Err
1508 }
1509 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 133, "\" title=\"comment on this line\">")
1510 if templ_7745c5c3_Err != nil {
1511 return templ_7745c5c3_Err
1512 }
1513 var templ_7745c5c3_Var76 string
1514 templ_7745c5c3_Var76, templ_7745c5c3_Err = templ.JoinStringErrs(n)
1515 if templ_7745c5c3_Err != nil {
1516 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 260, Col: 66}
1517 }
1518 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var76))
1519 if templ_7745c5c3_Err != nil {
1520 return templ_7745c5c3_Err
1521 }
1522 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 134, "</a>")
1523 if templ_7745c5c3_Err != nil {
1524 return templ_7745c5c3_Err
1525 }
1526 } else {
1527 var templ_7745c5c3_Var77 string
1528 templ_7745c5c3_Var77, templ_7745c5c3_Err = templ.JoinStringErrs(n)
1529 if templ_7745c5c3_Err != nil {
1530 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/diff.templ`, Line: 262, Col: 5}
1531 }
1532 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var77))
1533 if templ_7745c5c3_Err != nil {
1534 return templ_7745c5c3_Err
1535 }
1536 }
1537 return nil
1538 })
1539}
1540
1541var _ = templruntime.GeneratedTemplate