Parent directory

new_videos_templ.go

26036 bytes
  1// Code generated by templ - DO NOT EDIT.
  2
  3// templ: version: v0.3.1020
  4package pages
  5
  6//lint:file-ignore SA4006 This context is only used if a nested component is present.
  7
  8import "github.com/a-h/templ"
  9import templruntime "github.com/a-h/templ/runtime"
 10
 11import (
 12	"fmt"
 13
 14	"github.com/TheEdgeOfRage/ytrssil-api/models"
 15)
 16
 17func ProgressBar(video models.Video) templ.Component {
 18	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 19		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 20		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
 21			return templ_7745c5c3_CtxErr
 22		}
 23		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 24		if !templ_7745c5c3_IsBuffer {
 25			defer func() {
 26				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
 27				if templ_7745c5c3_Err == nil {
 28					templ_7745c5c3_Err = templ_7745c5c3_BufErr
 29				}
 30			}()
 31		}
 32		ctx = templ.InitializeContext(ctx)
 33		templ_7745c5c3_Var1 := templ.GetChildren(ctx)
 34		if templ_7745c5c3_Var1 == nil {
 35			templ_7745c5c3_Var1 = templ.NopComponent
 36		}
 37		ctx = templ.ClearChildren(ctx)
 38		if video.ProgressSeconds > 0 {
 39			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div id=\"")
 40			if templ_7745c5c3_Err != nil {
 41				return templ_7745c5c3_Err
 42			}
 43			var templ_7745c5c3_Var2 string
 44			templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("progress-%s", video.ID))
 45			if templ_7745c5c3_Err != nil {
 46				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 11, Col: 48}
 47			}
 48			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var2)
 49			if templ_7745c5c3_Err != nil {
 50				return templ_7745c5c3_Err
 51			}
 52			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "\" class=\"progress\" role=\"progressbar\" style=\"height: 6px\"><div class=\"progress-bar\" style=\"")
 53			if templ_7745c5c3_Err != nil {
 54				return templ_7745c5c3_Err
 55			}
 56			var templ_7745c5c3_Var3 string
 57			templ_7745c5c3_Var3, templ_7745c5c3_Err = templruntime.SanitizeStyleAttributeValues(fmt.Sprintf("background: #b11; width: %d%%", video.ProgressPercentage()))
 58			if templ_7745c5c3_Err != nil {
 59				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 12, Col: 109}
 60			}
 61			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
 62			if templ_7745c5c3_Err != nil {
 63				return templ_7745c5c3_Err
 64			}
 65			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\"></div></div>")
 66			if templ_7745c5c3_Err != nil {
 67				return templ_7745c5c3_Err
 68			}
 69		} else {
 70			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<div id=\"")
 71			if templ_7745c5c3_Err != nil {
 72				return templ_7745c5c3_Err
 73			}
 74			var templ_7745c5c3_Var4 string
 75			templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("progress-%s", video.ID))
 76			if templ_7745c5c3_Err != nil {
 77				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 15, Col: 48}
 78			}
 79			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var4)
 80			if templ_7745c5c3_Err != nil {
 81				return templ_7745c5c3_Err
 82			}
 83			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "\" style=\"height: 6px\"></div>")
 84			if templ_7745c5c3_Err != nil {
 85				return templ_7745c5c3_Err
 86			}
 87		}
 88		return nil
 89	})
 90}
 91
 92func thumbnail(video models.Video) templ.Component {
 93	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
 94		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
 95		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
 96			return templ_7745c5c3_CtxErr
 97		}
 98		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
 99		if !templ_7745c5c3_IsBuffer {
100			defer func() {
101				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
102				if templ_7745c5c3_Err == nil {
103					templ_7745c5c3_Err = templ_7745c5c3_BufErr
104				}
105			}()
106		}
107		ctx = templ.InitializeContext(ctx)
108		templ_7745c5c3_Var5 := templ.GetChildren(ctx)
109		if templ_7745c5c3_Var5 == nil {
110			templ_7745c5c3_Var5 = templ.NopComponent
111		}
112		ctx = templ.ClearChildren(ctx)
113		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<a target=\"_blank\" rel=\"noopener\" data-open-in-safari href=\"")
114		if templ_7745c5c3_Err != nil {
115			return templ_7745c5c3_Err
116		}
117		var templ_7745c5c3_Var6 templ.SafeURL
118		templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(video.WatchURL()))
119		if templ_7745c5c3_Err != nil {
120			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 24, Col: 40}
121		}
122		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
123		if templ_7745c5c3_Err != nil {
124			return templ_7745c5c3_Err
125		}
126		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "\" style=\"display: block; overflow: hidden; position: relative\"")
127		if templ_7745c5c3_Err != nil {
128			return templ_7745c5c3_Err
129		}
130		if video.IsShort {
131			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, " class=\"pillarbox\"")
132			if templ_7745c5c3_Err != nil {
133				return templ_7745c5c3_Err
134			}
135		}
136		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, ">")
137		if templ_7745c5c3_Err != nil {
138			return templ_7745c5c3_Err
139		}
140		if video.IsShort {
141			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, "<img src=\"")
142			if templ_7745c5c3_Err != nil {
143				return templ_7745c5c3_Err
144			}
145			var templ_7745c5c3_Var7 string
146			templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("https://img.youtube.com/vi/%s/0.jpg", video.ID))
147			if templ_7745c5c3_Err != nil {
148				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 32, Col: 70}
149			}
150			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var7)
151			if templ_7745c5c3_Err != nil {
152				return templ_7745c5c3_Err
153			}
154			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "\" class=\"card-img-top\" alt=\"")
155			if templ_7745c5c3_Err != nil {
156				return templ_7745c5c3_Err
157			}
158			var templ_7745c5c3_Var8 string
159			templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
160			if templ_7745c5c3_Err != nil {
161				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 34, Col: 21}
162			}
163			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var8)
164			if templ_7745c5c3_Err != nil {
165				return templ_7745c5c3_Err
166			}
167			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, "\" style=\"width: 100%; aspect-ratio: 16/9; object-fit: contain;\"> <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24\" viewBox=\"0 0 24 24\" width=\"24\" focusable=\"false\" style=\"pointer-events: none; width: 2rem; height: 2rem; z-index: 2; position: absolute; bottom: 0.5rem; left: 0.5rem;\" fill=\"white\"><path d=\"m13.974 2.052-8 4.7a4 4 0 00.385 7.097l.942.423-1.327.78a4 4 0 004.052 6.897l8-4.7a4.001 4.001 0 00-.384-7.096L16.7 9.73l1.326-.78a4 4 0 10-4.052-6.897ZM10 15V9l5 3-5 3Z\"></path></svg> ")
168			if templ_7745c5c3_Err != nil {
169				return templ_7745c5c3_Err
170			}
171		} else {
172			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "<img src=\"")
173			if templ_7745c5c3_Err != nil {
174				return templ_7745c5c3_Err
175			}
176			var templ_7745c5c3_Var9 string
177			templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("https://img.youtube.com/vi/%s/0.jpg", video.ID))
178			if templ_7745c5c3_Err != nil {
179				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 48, Col: 70}
180			}
181			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var9)
182			if templ_7745c5c3_Err != nil {
183				return templ_7745c5c3_Err
184			}
185			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "\" class=\"card-img-top\" alt=\"")
186			if templ_7745c5c3_Err != nil {
187				return templ_7745c5c3_Err
188			}
189			var templ_7745c5c3_Var10 string
190			templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
191			if templ_7745c5c3_Err != nil {
192				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 50, Col: 21}
193			}
194			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var10)
195			if templ_7745c5c3_Err != nil {
196				return templ_7745c5c3_Err
197			}
198			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "\" style=\"width: 100%; aspect-ratio: 16/9; object-fit: cover;\"> ")
199			if templ_7745c5c3_Err != nil {
200				return templ_7745c5c3_Err
201			}
202		}
203		if video.IsLive {
204			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 16, "<span focusable=\"false\" class=\"text-white bg-danger px-1 py-1 rounded fw-bold\" style=\"pointer-events: none; z-index: 2; position: absolute; bottom: 0.2rem; right: 0.2rem;\">LIVE</span>")
205			if templ_7745c5c3_Err != nil {
206				return templ_7745c5c3_Err
207			}
208		} else {
209			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 17, "<span focusable=\"false\" class=\"text-body bg-body bg-opacity-75 px-1 py-1 rounded\" style=\"pointer-events: none; z-index: 2; position: absolute; bottom: 0.2rem; right: 0.2rem;\">")
210			if templ_7745c5c3_Err != nil {
211				return templ_7745c5c3_Err
212			}
213			var templ_7745c5c3_Var11 string
214			templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(video.Duration())
215			if templ_7745c5c3_Err != nil {
216				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 68, Col: 22}
217			}
218			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11))
219			if templ_7745c5c3_Err != nil {
220				return templ_7745c5c3_Err
221			}
222			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 18, "</span>")
223			if templ_7745c5c3_Err != nil {
224				return templ_7745c5c3_Err
225			}
226		}
227		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 19, "</a>")
228		if templ_7745c5c3_Err != nil {
229			return templ_7745c5c3_Err
230		}
231		templ_7745c5c3_Err = ProgressBar(video).Render(ctx, templ_7745c5c3_Buffer)
232		if templ_7745c5c3_Err != nil {
233			return templ_7745c5c3_Err
234		}
235		return nil
236	})
237}
238
239func VideoCard(video models.Video) templ.Component {
240	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
241		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
242		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
243			return templ_7745c5c3_CtxErr
244		}
245		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
246		if !templ_7745c5c3_IsBuffer {
247			defer func() {
248				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
249				if templ_7745c5c3_Err == nil {
250					templ_7745c5c3_Err = templ_7745c5c3_BufErr
251				}
252			}()
253		}
254		ctx = templ.InitializeContext(ctx)
255		templ_7745c5c3_Var12 := templ.GetChildren(ctx)
256		if templ_7745c5c3_Var12 == nil {
257			templ_7745c5c3_Var12 = templ.NopComponent
258		}
259		ctx = templ.ClearChildren(ctx)
260		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 20, "<div id=\"")
261		if templ_7745c5c3_Err != nil {
262			return templ_7745c5c3_Err
263		}
264		var templ_7745c5c3_Var13 string
265		templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("video-card-%s", video.ID))
266		if templ_7745c5c3_Err != nil {
267			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 76, Col: 49}
268		}
269		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var13)
270		if templ_7745c5c3_Err != nil {
271			return templ_7745c5c3_Err
272		}
273		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 21, "\" class=\"video-card col-md-3 p-2\" data-title=\"")
274		if templ_7745c5c3_Err != nil {
275			return templ_7745c5c3_Err
276		}
277		var templ_7745c5c3_Var14 string
278		templ_7745c5c3_Var14, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
279		if templ_7745c5c3_Err != nil {
280			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 76, Col: 108}
281		}
282		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var14)
283		if templ_7745c5c3_Err != nil {
284			return templ_7745c5c3_Err
285		}
286		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 22, "\" data-channel-name=\"")
287		if templ_7745c5c3_Err != nil {
288			return templ_7745c5c3_Err
289		}
290		var templ_7745c5c3_Var15 string
291		templ_7745c5c3_Var15, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.ChannelName)
292		if templ_7745c5c3_Err != nil {
293			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 76, Col: 148}
294		}
295		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var15)
296		if templ_7745c5c3_Err != nil {
297			return templ_7745c5c3_Err
298		}
299		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 23, "\"><div class=\"card\">")
300		if templ_7745c5c3_Err != nil {
301			return templ_7745c5c3_Err
302		}
303		templ_7745c5c3_Err = thumbnail(video).Render(ctx, templ_7745c5c3_Buffer)
304		if templ_7745c5c3_Err != nil {
305			return templ_7745c5c3_Err
306		}
307		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 24, "<div class=\"card-body\"><p class=\"card-title text-truncate mb-0\">")
308		if templ_7745c5c3_Err != nil {
309			return templ_7745c5c3_Err
310		}
311		var templ_7745c5c3_Var16 string
312		templ_7745c5c3_Var16, templ_7745c5c3_Err = templ.JoinStringErrs(video.Title)
313		if templ_7745c5c3_Err != nil {
314			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 80, Col: 58}
315		}
316		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var16))
317		if templ_7745c5c3_Err != nil {
318			return templ_7745c5c3_Err
319		}
320		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 25, "</p><p class=\"d-flex justify-content-between\"><a target=\"_blank\" rel=\"noopener\" data-open-in-safari href=\"")
321		if templ_7745c5c3_Err != nil {
322			return templ_7745c5c3_Err
323		}
324		var templ_7745c5c3_Var17 templ.SafeURL
325		templ_7745c5c3_Var17, templ_7745c5c3_Err = templ.JoinURLErrs(fmt.Sprintf("https://www.youtube.com/channel/%s", video.ChannelID))
326		if templ_7745c5c3_Err != nil {
327			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 86, Col: 79}
328		}
329		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var17))
330		if templ_7745c5c3_Err != nil {
331			return templ_7745c5c3_Err
332		}
333		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 26, "\" class=\"card-text fw-light link-light link-underline-opacity-0\">")
334		if templ_7745c5c3_Err != nil {
335			return templ_7745c5c3_Err
336		}
337		var templ_7745c5c3_Var18 string
338		templ_7745c5c3_Var18, templ_7745c5c3_Err = templ.JoinStringErrs(video.ChannelName)
339		if templ_7745c5c3_Err != nil {
340			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 88, Col: 25}
341		}
342		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var18))
343		if templ_7745c5c3_Err != nil {
344			return templ_7745c5c3_Err
345		}
346		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 27, "</a> <span>")
347		if templ_7745c5c3_Err != nil {
348			return templ_7745c5c3_Err
349		}
350		var templ_7745c5c3_Var19 string
351		templ_7745c5c3_Var19, templ_7745c5c3_Err = templ.JoinStringErrs(video.HumanizedPublishTime())
352		if templ_7745c5c3_Err != nil {
353			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 90, Col: 36}
354		}
355		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var19))
356		if templ_7745c5c3_Err != nil {
357			return templ_7745c5c3_Err
358		}
359		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 28, "</span></p><div class=\"d-flex justify-content-between\"><form data-signals=\"{progress: ''}\" data-on:submit__prevent=\"")
360		if templ_7745c5c3_Err != nil {
361			return templ_7745c5c3_Err
362		}
363		var templ_7745c5c3_Var20 string
364		templ_7745c5c3_Var20, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("$progress = evt.target.querySelector('input').value; @patch('/videos/%s/progress')", video.ID))
365		if templ_7745c5c3_Err != nil {
366			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 96, Col: 139}
367		}
368		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var20)
369		if templ_7745c5c3_Err != nil {
370			return templ_7745c5c3_Err
371		}
372		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 29, "\" class=\"d-flex\"><input type=\"text\" placeholder=\"mm:ss/11m22s\" class=\"form-control\" style=\"width: 50%\"> <button type=\"submit\" class=\"btn btn-primary ms-3\"><i class=\"bi bi-clock\"></i></button></form><div class=\"d-flex gap-2\">")
373		if templ_7745c5c3_Err != nil {
374			return templ_7745c5c3_Err
375		}
376		if video.IsDownloaded() {
377			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 30, "<a href=\"")
378			if templ_7745c5c3_Err != nil {
379				return templ_7745c5c3_Err
380			}
381			var templ_7745c5c3_Var21 templ.SafeURL
382			templ_7745c5c3_Var21, templ_7745c5c3_Err = templ.JoinURLErrs(templ.SafeURL(fmt.Sprintf("/videos/%s/file", video.ID)))
383			if templ_7745c5c3_Err != nil {
384				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 105, Col: 70}
385			}
386			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var21))
387			if templ_7745c5c3_Err != nil {
388				return templ_7745c5c3_Err
389			}
390			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 31, "\" data-open-in-safari class=\"btn btn-success\"><i class=\"bi bi-download\"></i></a> ")
391			if templ_7745c5c3_Err != nil {
392				return templ_7745c5c3_Err
393			}
394		} else if video.IsDownloading() {
395			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 32, "<button class=\"btn btn-primary\" disabled data-on-interval__duration.2s=\"")
396			if templ_7745c5c3_Err != nil {
397				return templ_7745c5c3_Err
398			}
399			var templ_7745c5c3_Var22 string
400			templ_7745c5c3_Var22, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("@get('/videos/%s/card')", video.ID))
401			if templ_7745c5c3_Err != nil {
402				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 115, Col: 88}
403			}
404			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var22)
405			if templ_7745c5c3_Err != nil {
406				return templ_7745c5c3_Err
407			}
408			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 33, "\"><span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span></button> ")
409			if templ_7745c5c3_Err != nil {
410				return templ_7745c5c3_Err
411			}
412		} else if video.DownloadFailed() {
413			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 34, "<button type=\"button\" class=\"btn btn-danger\" title=\"")
414			if templ_7745c5c3_Err != nil {
415				return templ_7745c5c3_Err
416			}
417			var templ_7745c5c3_Var23 string
418			templ_7745c5c3_Var23, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("Download failed: %s", *video.DownloadError))
419			if templ_7745c5c3_Err != nil {
420				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 123, Col: 71}
421			}
422			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var23)
423			if templ_7745c5c3_Err != nil {
424				return templ_7745c5c3_Err
425			}
426			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 35, "\" data-video-id=\"")
427			if templ_7745c5c3_Err != nil {
428				return templ_7745c5c3_Err
429			}
430			var templ_7745c5c3_Var24 string
431			templ_7745c5c3_Var24, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.ID)
432			if templ_7745c5c3_Err != nil {
433				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 124, Col: 31}
434			}
435			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var24)
436			if templ_7745c5c3_Err != nil {
437				return templ_7745c5c3_Err
438			}
439			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 36, "\" data-video-title=\"")
440			if templ_7745c5c3_Err != nil {
441				return templ_7745c5c3_Err
442			}
443			var templ_7745c5c3_Var25 string
444			templ_7745c5c3_Var25, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
445			if templ_7745c5c3_Err != nil {
446				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 125, Col: 37}
447			}
448			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var25)
449			if templ_7745c5c3_Err != nil {
450				return templ_7745c5c3_Err
451			}
452			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 37, "\" onclick=\"openResolutionModal(this)\"><i class=\"bi bi-exclamation-triangle\"></i></button> ")
453			if templ_7745c5c3_Err != nil {
454				return templ_7745c5c3_Err
455			}
456		} else {
457			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 38, "<button type=\"button\" class=\"btn btn-outline-primary\" data-video-id=\"")
458			if templ_7745c5c3_Err != nil {
459				return templ_7745c5c3_Err
460			}
461			var templ_7745c5c3_Var26 string
462			templ_7745c5c3_Var26, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.ID)
463			if templ_7745c5c3_Err != nil {
464				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 134, Col: 31}
465			}
466			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var26)
467			if templ_7745c5c3_Err != nil {
468				return templ_7745c5c3_Err
469			}
470			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 39, "\" data-video-title=\"")
471			if templ_7745c5c3_Err != nil {
472				return templ_7745c5c3_Err
473			}
474			var templ_7745c5c3_Var27 string
475			templ_7745c5c3_Var27, templ_7745c5c3_Err = templ.ResolveAttributeValue(video.Title)
476			if templ_7745c5c3_Err != nil {
477				return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 135, Col: 37}
478			}
479			_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var27)
480			if templ_7745c5c3_Err != nil {
481				return templ_7745c5c3_Err
482			}
483			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 40, "\" onclick=\"openResolutionModal(this)\"><i class=\"bi bi-download\"></i></button> ")
484			if templ_7745c5c3_Err != nil {
485				return templ_7745c5c3_Err
486			}
487		}
488		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 41, "<button data-on:click=\"")
489		if templ_7745c5c3_Err != nil {
490			return templ_7745c5c3_Err
491		}
492		var templ_7745c5c3_Var28 string
493		templ_7745c5c3_Var28, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprintf("@patch('/videos/%s/watch')", video.ID))
494		if templ_7745c5c3_Err != nil {
495			return templ.Error{Err: templ_7745c5c3_Err, FileName: `pages/new_videos.templ`, Line: 142, Col: 74}
496		}
497		_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var28)
498		if templ_7745c5c3_Err != nil {
499			return templ_7745c5c3_Err
500		}
501		templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 42, "\" class=\"btn btn-danger\"><i class=\"bi bi-check-circle\"></i></button></div></div></div></div></div>")
502		if templ_7745c5c3_Err != nil {
503			return templ_7745c5c3_Err
504		}
505		return nil
506	})
507}
508
509func NewVideosPage(videos []models.Video) templ.Component {
510	return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
511		templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
512		if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil {
513			return templ_7745c5c3_CtxErr
514		}
515		templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
516		if !templ_7745c5c3_IsBuffer {
517			defer func() {
518				templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
519				if templ_7745c5c3_Err == nil {
520					templ_7745c5c3_Err = templ_7745c5c3_BufErr
521				}
522			}()
523		}
524		ctx = templ.InitializeContext(ctx)
525		templ_7745c5c3_Var29 := templ.GetChildren(ctx)
526		if templ_7745c5c3_Var29 == nil {
527			templ_7745c5c3_Var29 = templ.NopComponent
528		}
529		ctx = templ.ClearChildren(ctx)
530		templ_7745c5c3_Var30 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
531			templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
532			templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
533			if !templ_7745c5c3_IsBuffer {
534				defer func() {
535					templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
536					if templ_7745c5c3_Err == nil {
537						templ_7745c5c3_Err = templ_7745c5c3_BufErr
538					}
539				}()
540			}
541			ctx = templ.InitializeContext(ctx)
542			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 43, "<div class=\"row\">")
543			if templ_7745c5c3_Err != nil {
544				return templ_7745c5c3_Err
545			}
546			for _, video := range videos {
547				templ_7745c5c3_Err = VideoCard(video).Render(ctx, templ_7745c5c3_Buffer)
548				if templ_7745c5c3_Err != nil {
549					return templ_7745c5c3_Err
550				}
551			}
552			templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 44, "</div>")
553			if templ_7745c5c3_Err != nil {
554				return templ_7745c5c3_Err
555			}
556			return nil
557		})
558		templ_7745c5c3_Err = BaseLayout("ytrssil - New Videos", "new").Render(templ.WithChildren(ctx, templ_7745c5c3_Var30), templ_7745c5c3_Buffer)
559		if templ_7745c5c3_Err != nil {
560			return templ_7745c5c3_Err
561		}
562		return nil
563	})
564}
565
566var _ = templruntime.GeneratedTemplate