teamlead-dashboard/src/TUI.Engine/Containers/ContainerExtensions.cs

42 lines
1.2 KiB
C#
Raw Normal View History

2024-03-15 19:13:09 +00:00
using TUI.Engine.Attributes.Resizings;
2024-03-17 19:57:31 +00:00
using TUI.Engine.Components;
2024-03-15 19:13:09 +00:00
using TUI.Engine.Nodes;
namespace TUI.Engine.Containers;
internal static class ContainerExtensions
{
2024-03-17 19:57:31 +00:00
private static readonly Func<INode, bool> AbsoluteNodes = node => node is IComponent { IsRelative: false };
private static readonly Func<INode, bool> FixedNodes = node => node.ResizingVertical == Resizing.Fixed;
internal static IEnumerable<INode> 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);
}
2024-03-15 19:13:09 +00:00
internal static IEnumerable<INode> GetFixedNodes(this IContainer container, int? takeNodeNumber = null)
{
if (takeNodeNumber is not null)
{
return container
.GetNodes()
.Take(takeNodeNumber.Value + 1)
2024-03-17 19:57:31 +00:00
.Where(FixedNodes);
2024-03-15 19:13:09 +00:00
}
return container
.GetNodes()
2024-03-17 19:57:31 +00:00
.Where(FixedNodes);
2024-03-15 19:13:09 +00:00
}
}