using System.Threading; using R3; using UnityEngine.UIElements; namespace KitsuneCafe.Extension { public static class VisualElementExtensions { public static Observable ObserveEvent(this VisualElement target, CancellationToken token = default) where T : EventBase, new() { return Observable.FromEvent, T>( h => e => h(e), e => target.RegisterCallback(e), e => target.UnregisterCallback(e), token ); } } }