using Microsoft.AspNetCore.Components.Forms; using System; namespace Generic.Media.Components { public class MediaItemModel { public string Id { get; set; } = Guid.NewGuid().ToString(); public string? Url { get; set; } public IBrowserFile? File { get; set; } public MediaType Type { get; set; } public string? AltText { get; set; } public int Order { get; set; } public bool IsLocal { get; set; } public string? PreviewUrl { get; set; } // Blob URL for local files } public enum MediaType { Image, Video, YouTube, Vimeo, Unknown } public static class MediaHelper { public static MediaType GetType(string url) { if (string.IsNullOrWhiteSpace(url)) return MediaType.Image; url = url.ToLower(); if (url.Contains("youtube.com") || url.Contains("youtu.be")) return MediaType.YouTube; if (url.Contains("vimeo.com")) return MediaType.Vimeo; if (url.EndsWith(".mp4") || url.EndsWith(".webm") || url.EndsWith(".ogg")) return MediaType.Video; return MediaType.Image; } public static string GetYouTubeId(string url) { if (url.Contains("youtu.be/")) return url.Split("youtu.be/")[1].Split("?")[0]; if (url.Contains("v=")) return url.Split("v=")[1].Split("&")[0]; return ""; } } }