using Microsoft.AspNetCore.Components; using Microsoft.JSInterop; using System.Threading.Tasks; namespace Oqtane.Modules.Controls { public class QuillEditorInterop { private readonly IJSRuntime _jsRuntime; public QuillEditorInterop(IJSRuntime jsRuntime) { _jsRuntime = jsRuntime; } public async Task CreateEditor( ElementReference quillElement, ElementReference toolbar, bool readOnly, string placeholder, string theme, string debugLevel) { try { await _jsRuntime.InvokeAsync( "Oqtane.RichTextEditor.createQuill", quillElement, toolbar, readOnly, placeholder, theme, debugLevel); return; } catch { // handle exception } } public ValueTask GetText(ElementReference quillElement) { try { return _jsRuntime.InvokeAsync( "Oqtane.RichTextEditor.getQuillText", quillElement); } catch { return new ValueTask(Task.FromResult(string.Empty)); } } public ValueTask GetHtml(ElementReference quillElement) { try { return _jsRuntime.InvokeAsync( "Oqtane.RichTextEditor.getQuillHTML", quillElement); } catch { return new ValueTask(Task.FromResult(string.Empty)); } } public ValueTask GetContent(ElementReference quillElement) { try { return _jsRuntime.InvokeAsync( "Oqtane.RichTextEditor.getQuillContent", quillElement); } catch { return new ValueTask(Task.FromResult(string.Empty)); } } public Task LoadEditorContent(ElementReference quillElement, string content) { try { _jsRuntime.InvokeAsync( "Oqtane.RichTextEditor.loadQuillContent", quillElement, content); return Task.CompletedTask; } catch { return Task.CompletedTask; } } public Task EnableEditor(ElementReference quillElement, bool mode) { try { _jsRuntime.InvokeAsync( "Oqtane.RichTextEditor.enableQuillEditor", quillElement, mode); return Task.CompletedTask; } catch { return Task.CompletedTask; } } public ValueTask GetCurrentCursor(ElementReference quillElement) { try { return _jsRuntime.InvokeAsync("Oqtane.RichTextEditor.getCurrentCursor", quillElement); } catch { return new ValueTask(Task.FromResult(0)); } } public Task InsertImage(ElementReference quillElement, string imageUrl, string altText, int editorIndex) { try { _jsRuntime.InvokeAsync( "Oqtane.RichTextEditor.insertQuillImage", quillElement, imageUrl, altText, editorIndex); return Task.CompletedTask; } catch { return Task.CompletedTask; } } } }