Code/UI/Nodes/VariadicInput.razor
@using Sandbox.UI
@inherits NodePanel
@implements IGraphStyle
@namespace Nodebox.UI
@typeparam T

<root>
	<Basic
        Node=@Node
        @ref=Basic>
        <Center>
            <div class="buttons">
                <Button
                    Icon="remove"
                    Tooltip="Remove Input"
                    Disabled=@(!VariadicNode.CanShrinkInputs())
                    onclick=@Shrink
                    />
                <Button
                    Icon="add"
                    Tooltip="Add Input"
                    Disabled=@(!VariadicNode.CanGrowInputs())
                    onclick=@Grow
                    />
            </div>
        </Center>
    </Basic>
</root>

@code {
    public Basic Basic { get; protected set; }
    public override Panel GetPin(Flow flow, PinIndex pinIndex) => Basic?.GetPin(flow, pinIndex);
    
    public Node.IVariadicInput<T> VariadicNode => (Node.IVariadicInput<T>)Node;

    protected void Grow() {
        VariadicNode.GrowInputs();
    }

    protected void Shrink() {
        VariadicNode.ShrinkInputs();
    }

    protected override int BuildHash() =>
        HashCode.Combine(
            base.BuildHash()
        );
}