public async ValueTask OnSelectCallback(InteropNodeEventData evt)
        {
            switch (evt.Type)
            {
            case "select_node":
                // this.invoke_event_handle(jm.event_type.select, { evt: 'select_node', data: [], node: node.id });

                var node = FindNode(evt.NodeId);

                await OnSelectNode.InvokeAsync(new MindMapSingleSelectEventArgs <T>
                {
                    Node     = node,
                    Selected = node is not null && SelectedNodes.Any(n => n.Id == node.Id)
                });

                break;
            }
        public async ValueTask OnEditCallback(InteropNodeEventData evt)
        {
            switch (evt.Type)
            {
            case "add_nodeTODO":
                // this.invoke_event_handle(jm.event_type.edit, { evt: 'add_node', data: [parent_node.id, nodeid, topic, data], node: nodeid });
                await OnAddNode.InvokeAsync(new MindMapAddNodeEventArgs <T>
                {
                    Node   = FindNode(evt.NodeId),
                    Parent = FindNode(evt.Data[0].GetString()),
                    // NodeId = evt.Data[1].GetString(),
                    // Topic = evt.Data[2].GetString(),
                    Data = JsonSerializer.Deserialize <IDictionary <string, string> >(evt.Data[3].GetRawText())
                });

                break;
            }
        }