using System; using System.Collections.Generic; using System.Linq; using UnityEngine.UIElements; namespace AV.UITK { public partial class FluentElement where T : VisualElement { #region Sugar public struct ElementsList { public List list; public void Do(Action> action) { foreach (var e in list) action.Invoke(e); } } public FluentElement This(Action action) { action.Invoke(x); return x; } public ElementsList For(params VisualElement[] elements) { return new ElementsList { list = elements.Select(e => new FluentElement(e)).ToList() }; } public void Out(out FluentElement element) { element = this; } #endregion public FluentElement Clear() { x.Clear(); return x; } public FluentElement Add(VisualElement element) { Insert(x.childCount, element); return x; } public FluentElement Add(params VisualElement[] elements) { foreach (var element in elements) Add(element); return x; } public FluentElement Insert(int index, VisualElement element) { FluentUITK.AddCoreStyles(element); x.Insert(index, element); onAddChild?.Invoke(element); return x; } public FluentElement Enabled(bool value) { x.SetEnabled(value); return x; } public FluentElement Picking(bool enabled) { x.pickingMode = enabled ? PickingMode.Position : PickingMode.Ignore; return x; } } }