using TUI.Engine.Attributes.Resizings; using TUI.Engine.Components; using TUI.Engine.Nodes; namespace TUI.Engine.Containers; internal static class ContainerExtensions { private static readonly Func AbsoluteNodes = node => node is IComponent { IsRelative: false }; private static readonly Func FixedNodes = node => node.ResizingVertical == Resizing.Fixed; internal static IEnumerable GetAbsoluteNodes(this IContainer container, int? takeNodeNumber = null) { if (takeNodeNumber is not null) { return container .GetNodes() .Take(takeNodeNumber.Value + 1) .Where(AbsoluteNodes); } return container .GetNodes() .Where(AbsoluteNodes); } internal static IEnumerable GetFixedNodes(this IContainer container, int? takeNodeNumber = null) { if (takeNodeNumber is not null) { return container .GetNodes() .Take(takeNodeNumber.Value + 1) .Where(FixedNodes); } return container .GetNodes() .Where(FixedNodes); } }