Initial commit - Media.RCL
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
using Microsoft.JSInterop;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Generic.Media;
|
||||
|
||||
public class MediaJsInterop : IAsyncDisposable
|
||||
{
|
||||
private readonly IJSRuntime _jsRuntime;
|
||||
private string? _imgId;
|
||||
|
||||
public MediaJsInterop(IJSRuntime jsRuntime)
|
||||
{
|
||||
_jsRuntime = jsRuntime;
|
||||
}
|
||||
|
||||
public async Task InitCropperAsync<T>(string imgId, double aspectRatio, DotNetObjectReference<T> dotNetObject) where T : class
|
||||
{
|
||||
_imgId = imgId;
|
||||
await _jsRuntime.InvokeVoidAsync("initCropper", imgId, new { aspectRatio = aspectRatio, viewMode = 1, autoCropArea = 1 }, dotNetObject);
|
||||
}
|
||||
|
||||
public async Task<string> GetCroppedImageAsync()
|
||||
{
|
||||
if (_imgId == null) return string.Empty;
|
||||
return await _jsRuntime.InvokeAsync<string>("getCroppedImage", _imgId);
|
||||
}
|
||||
|
||||
public async Task SetAspectRatioAsync(double ratio)
|
||||
{
|
||||
if (_imgId == null) return;
|
||||
await _jsRuntime.InvokeVoidAsync("setCropperAspectRatio", _imgId, ratio);
|
||||
}
|
||||
|
||||
public async Task DestroyCropperAsync()
|
||||
{
|
||||
if (_imgId == null) return;
|
||||
await _jsRuntime.InvokeVoidAsync("destroyCropper", _imgId);
|
||||
}
|
||||
|
||||
public async Task SetFullWidthAsync()
|
||||
{
|
||||
if (_imgId == null) return;
|
||||
await _jsRuntime.InvokeVoidAsync("setCropperFullWidth", _imgId);
|
||||
}
|
||||
|
||||
public async Task SetFullHeightAsync()
|
||||
{
|
||||
if (_imgId == null) return;
|
||||
await _jsRuntime.InvokeVoidAsync("setCropperFullHeight", _imgId);
|
||||
}
|
||||
|
||||
public async ValueTask DisposeAsync()
|
||||
{
|
||||
// Try to clean up if we have an ID
|
||||
if (_imgId != null)
|
||||
{
|
||||
try { await DestroyCropperAsync(); } catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user