using Avalonia.Controls;
using Avalonia.Input;
using Avalonia.Interactivity;
using InABox.Core;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace InABox.Avalonia.Components;

public class IntegerBox : NumericUpDown
{
    protected override Type StyleKeyOverride => typeof(NumericUpDown);

    public IntegerBox()
    {
        ParsingNumberStyle = NumberStyles.Integer;
        FormatString = "N0";
        ShowButtonSpinner = false;
        AddHandler(TextInputEvent, TunnelTextEvent, RoutingStrategies.Direct | RoutingStrategies.Tunnel);
    }

    private void TunnelTextEvent(object? sender, TextInputEventArgs e)
    {
        e.Text = new string(e.Text?.WithIndex()
            .Where(x => (x.Key == 0 && x.Value == '-') || Char.IsDigit(x.Value))
            .Select(x => x.Value).ToArray());
        if(e.Text == "")
        {
            e.Handled = true;
        }
    }
}
