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