1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using Microsoft.AspNetCore.Components;
- using System;
- using System.Collections.Generic;
- using System.Runtime.CompilerServices;
- using System.Threading.Tasks;
- namespace BlazorAceEditor
- {
- public partial class AceEditor : IAsyncDisposable
- {
- [Inject] private AceEditorJsInterop JsInterop { get; set; }
- /// <summary>
- /// 附加属性
- /// </summary>
- [Parameter(CaptureUnmatchedValues = true)]
- public Dictionary<string, object> Attributes { get; set; }
- [Parameter] public EventCallback<AceEditor> OnChanged { get; set; }
- [Parameter] public EventCallback<AceEditor> OnLoad { get; set; }
- public string ElementId { get; } = $"BlazorAceEditor_{Guid.NewGuid():N}";
- protected override async Task OnInitializedAsync()
- {
- await base.OnInitializedAsync();
- }
- protected override async Task OnAfterRenderAsync(bool firstRender)
- {
- await base.OnAfterRenderAsync(firstRender);
- if (firstRender)
- {
- AceEditorJsCallbackManager.AddEventHandler(ElementId, "onChange", new Func<Task>(() => OnChanged.InvokeAsync(this)));
- AceEditorJsCallbackManager.AddEventHandler(ElementId, "onLoad", new Func<Task>(() => OnLoad.InvokeAsync(this)));
- await CreateEditor();
- }
- }
- public async ValueTask DisposeAsync()
- {
- AceEditorJsCallbackManager.DisposeObject(ElementId);
- await DestroyEditor();
- }
- //glues base
- private Task InvokeVoid([CallerMemberName] string methodName = null) => JsInterop.InvokeVoid(ElementId, methodName);
- private Task InvokeVoidP1(object arg0, [CallerMemberName] string methodName = null) => JsInterop.InvokeVoidP1(ElementId, arg0, methodName);
- private ValueTask<T> Invoke<T>([CallerMemberName] string methodName = null) => JsInterop.Invoke<T>(ElementId, methodName);
- //glues
- private Task CreateEditor() => InvokeVoid();
- private Task DestroyEditor() => InvokeVoid();
- public Task SetTheme(string themeName) => InvokeVoidP1(themeName);
- public Task SetLang(string langName) => InvokeVoidP1(langName);
- public Task SetInfinityMaxLines() => InvokeVoid();
- public Task SetMaxLines(int maxLines) => InvokeVoidP1(maxLines);
- public Task SetMinLines(int minLines) => InvokeVoidP1(minLines);
- public ValueTask<string> GetValue() => Invoke<string>();
- public Task SetValue(string value) => InvokeVoidP1(value);
- public Task SetFontSize(int value) => InvokeVoidP1(value);
- public Task ClearSelection() => InvokeVoid();
- }
- }
|