forked from andyburke/autonomous.contact
		
	
		
			
				
	
	
		
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const YOUTUBE_ID_EXTRACTOR =
 | |
| 	/(?<video_domain>youtu(?:be\.com|\.be|be\.googleapis\.com))(?:\/(?<action>video|embed|watch|shorts|v))?.*(?:(?:\/|v=)(?<video_id>[A-Za-z0-9._%-]*))\S*/gi;
 | |
| 
 | |
| function embed_youtube(link_info) {
 | |
| 	const is_youtube_link = ["youtube.com", "youtu.be", "youtube.googleapis.com"].includes(
 | |
| 		link_info.domain?.toLowerCase(),
 | |
| 	);
 | |
| 
 | |
| 	if (!is_youtube_link) {
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	YOUTUBE_ID_EXTRACTOR.lastIndex = 0;
 | |
| 
 | |
| 	const {
 | |
| 		groups: { video_domain, action, video_id },
 | |
| 	} = YOUTUBE_ID_EXTRACTOR.exec(link_info.url) ?? { groups: {} };
 | |
| 
 | |
| 	if (!video_id) {
 | |
| 		return;
 | |
| 	}
 | |
| 
 | |
| 	return `
 | |
| 	<div class="embed-container iframe ${action === "shorts" ? "vertical" : "letterbox"} youtube">
 | |
| 		<div class="embed-actions-container">
 | |
| 			<button class="icon plus" onclick="console.log(\"close\");"/>
 | |
| 			<button class="icon pause" onclick="console.log(\"stop\");"/>
 | |
| 		</div>
 | |
| 		<iframe
 | |
| 		src="https://www.youtube.com/embed/${video_id}"
 | |
| 		title="YouTube video player"
 | |
| 		allow="clipboard-write; encrypted-media; picture-in-picture; web-share;"
 | |
| 		referrerpolicy="strict-origin-when-cross-origin"
 | |
| 	 	allowfullscreen
 | |
| 		loading="lazy"
 | |
| 		></iframe>
 | |
| 	</div>`;
 | |
| }
 |