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// Tree is a directory: the file finder, the entries with their last commit, the
14// notes on what is left out, and the README of the directory below.
15func Tree(l Layout, p TreePage) templ.Component {
16 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
17 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
18 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
19 return templ_7745c5c3_CtxErr
20 }
21 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
22 if !templ_7745c5c3_IsBuffer {
23 defer func() {
24 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
25 if templ_7745c5c3_Err == nil {
26 templ_7745c5c3_Err = templ_7745c5c3_BufErr
27 }
28 }()
29 }
30 ctx = templ.InitializeContext(ctx)
31 templ_7745c5c3_Var1 := templ.GetChildren(ctx)
32 if templ_7745c5c3_Var1 == nil {
33 templ_7745c5c3_Var1 = templ.NopComponent
34 }
35 ctx = templ.ClearChildren(ctx)
36 templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
37 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
38 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
39 if !templ_7745c5c3_IsBuffer {
40 defer func() {
41 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
42 if templ_7745c5c3_Err == nil {
43 templ_7745c5c3_Err = templ_7745c5c3_BufErr
44 }
45 }()
46 }
47 ctx = templ.InitializeContext(ctx)
48 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"filter\"><label for=\"finder-q\" class=\"sr\">find a file</label> <input id=\"finder-q\" type=\"search\" data-filter role=\"combobox\" aria-autocomplete=\"list\" aria-controls=\"finder-list\" aria-expanded=\"false\" placeholder=\"Find a file…\" autocomplete=\"off\" spellcheck=\"false\" hx-on:focus=\"ermiteFinder.load()\" hx-on:input=\"ermiteFinder.input(this)\" hx-on:keydown=\"ermiteFinder.key(this, event)\"></div><div id=\"finder\" hidden><p id=\"finder-status\" class=\"dim\" aria-live=\"polite\"></p><ul id=\"finder-list\" class=\"cmd-list\" role=\"listbox\" aria-label=\"Files\"></ul></div><div id=\"tree-view\"><table class=\"list tree\" aria-label=\"Entries\"><thead><tr><th class=\"cur\"></th><th class=\"c-kind\"></th><th class=\"c-name\">name</th><th class=\"c-size\">size</th><th class=\"c-sub\">last commit</th><th class=\"c-who\">author</th><th class=\"c-when\">date</th></tr></thead> <tbody id=\"tree-rows\" data-rows hx-on:click=\"ermiteTree.click(event)\">")
49 if templ_7745c5c3_Err != nil {
50 return templ_7745c5c3_Err
51 }
52 templ_7745c5c3_Err = TreeRows(p).Render(ctx, templ_7745c5c3_Buffer)
53 if templ_7745c5c3_Err != nil {
54 return templ_7745c5c3_Err
55 }
56 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</tbody></table>")
57 if templ_7745c5c3_Err != nil {
58 return templ_7745c5c3_Err
59 }
60 if len(p.Rows) == 0 {
61 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "<p class=\"lede dim\">this directory is empty.</p>")
62 if templ_7745c5c3_Err != nil {
63 return templ_7745c5c3_Err
64 }
65 }
66 for _, n := range p.Notes {
67 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<p class=\"note\">")
68 if templ_7745c5c3_Err != nil {
69 return templ_7745c5c3_Err
70 }
71 var templ_7745c5c3_Var3 string
72 templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(n)
73 if templ_7745c5c3_Err != nil {
74 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 44, Col: 23}
75 }
76 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
77 if templ_7745c5c3_Err != nil {
78 return templ_7745c5c3_Err
79 }
80 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</p>")
81 if templ_7745c5c3_Err != nil {
82 return templ_7745c5c3_Err
83 }
84 }
85 if p.Readme != nil {
86 templ_7745c5c3_Err = ReadmeCard(*p.Readme).Render(ctx, templ_7745c5c3_Buffer)
87 if templ_7745c5c3_Err != nil {
88 return templ_7745c5c3_Err
89 }
90 }
91 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "</div>")
92 if templ_7745c5c3_Err != nil {
93 return templ_7745c5c3_Err
94 }
95 return nil
96 })
97 templ_7745c5c3_Err = Shell(l, nil).Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
98 if templ_7745c5c3_Err != nil {
99 return templ_7745c5c3_Err
100 }
101 return nil
102 })
103}
104
105// TreeRows is the rows of a directory alone: what files.js inserts under a
106// directory it opens in place. When the directory has more entries than are
107// listed, the last row links to its page.
108func TreeRows(p TreePage) templ.Component {
109 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
110 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
111 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
112 return templ_7745c5c3_CtxErr
113 }
114 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
115 if !templ_7745c5c3_IsBuffer {
116 defer func() {
117 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
118 if templ_7745c5c3_Err == nil {
119 templ_7745c5c3_Err = templ_7745c5c3_BufErr
120 }
121 }()
122 }
123 ctx = templ.InitializeContext(ctx)
124 templ_7745c5c3_Var4 := templ.GetChildren(ctx)
125 if templ_7745c5c3_Var4 == nil {
126 templ_7745c5c3_Var4 = templ.NopComponent
127 }
128 ctx = templ.ClearChildren(ctx)
129 for _, r := range p.Rows {
130 templ_7745c5c3_Err = TreeRowView(r).Render(ctx, templ_7745c5c3_Buffer)
131 if templ_7745c5c3_Err != nil {
132 return templ_7745c5c3_Err
133 }
134 }
135 if p.More != "" {
136 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<tr class=\"tree-more\"><td colspan=\"7\"><a href=\"")
137 if templ_7745c5c3_Err != nil {
138 return templ_7745c5c3_Err
139 }
140 var templ_7745c5c3_Var5 templ.SafeURL
141 templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(p.More))
142 if templ_7745c5c3_Err != nil {
143 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 61, Col: 71}
144 }
145 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
146 if templ_7745c5c3_Err != nil {
147 return templ_7745c5c3_Err
148 }
149 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "\">more entries: open the directory</a></td></tr>")
150 if templ_7745c5c3_Err != nil {
151 return templ_7745c5c3_Err
152 }
153 }
154 return nil
155 })
156}
157
158// TreeRowView is one entry of a directory. Glyph: ▸ directory (▾ once opened
159// in place), @ symbolic link, + submodule, · file. A directory link carries
160// data-expand, the URL of its rows.
161func TreeRowView(r TreeRow) templ.Component {
162 return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
163 templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
164 if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
165 return templ_7745c5c3_CtxErr
166 }
167 templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
168 if !templ_7745c5c3_IsBuffer {
169 defer func() {
170 templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
171 if templ_7745c5c3_Err == nil {
172 templ_7745c5c3_Err = templ_7745c5c3_BufErr
173 }
174 }()
175 }
176 ctx = templ.InitializeContext(ctx)
177 templ_7745c5c3_Var6 := templ.GetChildren(ctx)
178 if templ_7745c5c3_Var6 == nil {
179 templ_7745c5c3_Var6 = templ.NopComponent
180 }
181 ctx = templ.ClearChildren(ctx)
182 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<tr")
183 if templ_7745c5c3_Err != nil {
184 return templ_7745c5c3_Err
185 }
186 if r.Cursor {
187 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, " data-cursor")
188 if templ_7745c5c3_Err != nil {
189 return templ_7745c5c3_Err
190 }
191 }
192 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "><td class=\"cur\" aria-hidden=\"true\"></td><td class=\"c-kind\" aria-hidden=\"true\">")
193 if templ_7745c5c3_Err != nil {
194 return templ_7745c5c3_Err
195 }
196 var templ_7745c5c3_Var7 string
197 templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(r.Glyph)
198 if templ_7745c5c3_Err != nil {
199 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 71, Col: 49}
200 }
201 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
202 if templ_7745c5c3_Err != nil {
203 return templ_7745c5c3_Err
204 }
205 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "</td><td class=\"c-name\">")
206 if templ_7745c5c3_Err != nil {
207 return templ_7745c5c3_Err
208 }
209 if r.Href != "" {
210 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<a href=\"")
211 if templ_7745c5c3_Err != nil {
212 return templ_7745c5c3_Err
213 }
214 var templ_7745c5c3_Var8 templ.SafeURL
215 templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.Href))
216 if templ_7745c5c3_Err != nil {
217 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 75, Col: 33}
218 }
219 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8))
220 if templ_7745c5c3_Err != nil {
221 return templ_7745c5c3_Err
222 }
223 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "\"")
224 if templ_7745c5c3_Err != nil {
225 return templ_7745c5c3_Err
226 }
227 if r.Expand != "" {
228 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, " data-expand=\"")
229 if templ_7745c5c3_Err != nil {
230 return templ_7745c5c3_Err
231 }
232 var templ_7745c5c3_Var9 string
233 templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.Expand)
234 if templ_7745c5c3_Err != nil {
235 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 77, Col: 28}
236 }
237 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9)
238 if templ_7745c5c3_Err != nil {
239 return templ_7745c5c3_Err
240 }
241 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "\" aria-expanded=\"false\"")
242 if templ_7745c5c3_Err != nil {
243 return templ_7745c5c3_Err
244 }
245 }
246 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, ">")
247 if templ_7745c5c3_Err != nil {
248 return templ_7745c5c3_Err
249 }
250 var templ_7745c5c3_Var10 string
251 templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
252 if templ_7745c5c3_Err != nil {
253 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 80, Col: 13}
254 }
255 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10))
256 if templ_7745c5c3_Err != nil {
257 return templ_7745c5c3_Err
258 }
259 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</a>")
260 if templ_7745c5c3_Err != nil {
261 return templ_7745c5c3_Err
262 }
263 } else {
264 var templ_7745c5c3_Var11 string
265 templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(r.Name)
266 if templ_7745c5c3_Err != nil {
267 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 82, Col: 12}
268 }
269 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
270 if templ_7745c5c3_Err != nil {
271 return templ_7745c5c3_Err
272 }
273 }
274 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</td><td class=\"c-size num dim\">")
275 if templ_7745c5c3_Err != nil {
276 return templ_7745c5c3_Err
277 }
278 var templ_7745c5c3_Var12 string
279 templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(r.Size)
280 if templ_7745c5c3_Err != nil {
281 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 85, Col: 37}
282 }
283 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12))
284 if templ_7745c5c3_Err != nil {
285 return templ_7745c5c3_Err
286 }
287 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "</td><td class=\"c-sub dim\">")
288 if templ_7745c5c3_Err != nil {
289 return templ_7745c5c3_Err
290 }
291 if r.CHref != "" {
292 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "<a href=\"")
293 if templ_7745c5c3_Err != nil {
294 return templ_7745c5c3_Err
295 }
296 var templ_7745c5c3_Var13 templ.SafeURL
297 templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(r.CHref))
298 if templ_7745c5c3_Err != nil {
299 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 88, Col: 36}
300 }
301 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13))
302 if templ_7745c5c3_Err != nil {
303 return templ_7745c5c3_Err
304 }
305 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\">")
306 if templ_7745c5c3_Err != nil {
307 return templ_7745c5c3_Err
308 }
309 var templ_7745c5c3_Var14 string
310 templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.JoinStringErrs(r.Subject)
311 if templ_7745c5c3_Err != nil {
312 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 88, Col: 50}
313 }
314 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var14))
315 if templ_7745c5c3_Err != nil {
316 return templ_7745c5c3_Err
317 }
318 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "</a>")
319 if templ_7745c5c3_Err != nil {
320 return templ_7745c5c3_Err
321 }
322 }
323 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "</td><td class=\"c-who dim\">")
324 if templ_7745c5c3_Err != nil {
325 return templ_7745c5c3_Err
326 }
327 var templ_7745c5c3_Var15 string
328 templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.JoinStringErrs(r.Author)
329 if templ_7745c5c3_Err != nil {
330 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 91, Col: 34}
331 }
332 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var15))
333 if templ_7745c5c3_Err != nil {
334 return templ_7745c5c3_Err
335 }
336 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</td><td class=\"c-when nowrap dim\">")
337 if templ_7745c5c3_Err != nil {
338 return templ_7745c5c3_Err
339 }
340 if r.WhenAt != "" {
341 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "<time datetime=\"")
342 if templ_7745c5c3_Err != nil {
343 return templ_7745c5c3_Err
344 }
345 var templ_7745c5c3_Var16 string
346 templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
347 if templ_7745c5c3_Err != nil {
348 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 94, Col: 29}
349 }
350 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var16)
351 if templ_7745c5c3_Err != nil {
352 return templ_7745c5c3_Err
353 }
354 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "\" title=\"")
355 if templ_7745c5c3_Err != nil {
356 return templ_7745c5c3_Err
357 }
358 var templ_7745c5c3_Var17 string
359 templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.ResolveAttributeValue(r.WhenAt)
360 if templ_7745c5c3_Err != nil {
361 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 94, Col: 48}
362 }
363 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var17)
364 if templ_7745c5c3_Err != nil {
365 return templ_7745c5c3_Err
366 }
367 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "\">")
368 if templ_7745c5c3_Err != nil {
369 return templ_7745c5c3_Err
370 }
371 var templ_7745c5c3_Var18 string
372 templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(r.When)
373 if templ_7745c5c3_Err != nil {
374 return templ.Error{Err: templ_7745c5c3_Err, FileName: `internal/adapters/web/tree.templ`, Line: 94, Col: 59}
375 }
376 _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
377 if templ_7745c5c3_Err != nil {
378 return templ_7745c5c3_Err
379 }
380 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "</time>")
381 if templ_7745c5c3_Err != nil {
382 return templ_7745c5c3_Err
383 }
384 }
385 templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "</td></tr>")
386 if templ_7745c5c3_Err != nil {
387 return templ_7745c5c3_Err
388 }
389 return nil
390 })
391}
392
393var _ = templruntime.GeneratedTemplate