@page "/ModalTest" @inject IJSRuntime JsRuntime

ModalTest

@foreach (var (key, value) in _windowInfos) { @* @value.Content *@ } @for (var i = 0; i < 5; i++) { var i1 = i; @for (var j = 0; j < i1; j++) {

@j

}
} @code { private Dictionary _windowInfos = new(); private class WindowInfo { public double X; public double Y; public string Title; public RenderFragment Content; } protected override async Task OnInitializedAsync() { double _x = 2; double _xv = 20; double _y = 0; double multiplier = 1; for (var i = 0; i < 200; i++) { var i1 = i; _windowInfos.Add(_windowInfos.Count, new WindowInfo { X = _x, Y = _y, Title = "Win" + i1, Content = builder => { builder.OpenComponent(0); builder.AddAttribute(1, "X", _x); builder.AddAttribute(2, "Y", _y); builder.AddAttribute(3, "Title", "Win" + i1); builder.AddAttribute(4, "ChildContent", (RenderFragment)(builder2 => { builder2.OpenElement(0, "h1"); builder2.AddContent(1, "Hello " + i1); builder2.CloseElement(); })); builder.CloseComponent(); } }); //_x += _xv /= 1000/System.Math.Sqrt((double)_windowInfos.Count)*_windowInfos.Count.ToString().Length*multiplier; _y += 20; _x += 20; var dimension = await JsRuntime.InvokeAsync("getWindowDimensions"); if (_x > dimension.Width - 100) _x %= dimension.Width - 100; if (_y > dimension.Height - 50) { _y %= dimension.Height - 50; _xv = 20; } if ( (_windowInfos.Count < 10 && _windowInfos.Count % 2 == 0) || (_windowInfos.Count < 100 && _windowInfos.Count % 10 == 0) || (_windowInfos.Count < 1000 && _windowInfos.Count % 50 == 0) || (_windowInfos.Count < 10000 && _windowInfos.Count % 100 == 0) ) { StateHasChanged(); await Task.Delay(25); } if(_windowInfos.Count > 750) multiplier = 2; if(_windowInfos.Count > 1500) multiplier = 3; } await base.OnInitializedAsync(); } private void OnCloseClicked(int i1) { Console.WriteLine("Close clicked on " + i1); } public class WindowDimension { public int Width { get; set; } public int Height { get; set; } } }