public static async Task <DomRect> GetBoundingClientRect(IJSRuntime JS, string id)
        {
            string json = await JS.InvokeAsync <string>("GetBoundingClientRect", id);

            DomRect rect = JsonConvert.DeserializeObject <DomRect>(json);

            return(rect);
        }
        public static async Task <Vector2> GetLocalMousePosition(IJSRuntime JS, string id, MouseEventArgs e)
        {
            DomRect rect = await GetBoundingClientRect(JS, id);

            Vector2 pos = new Vector2();

            pos.X = (float)(e.ClientX - rect.left);
            pos.Y = (float)(e.ClientY - rect.top);

            return(pos);
        }