internal void DispatchEvent(DataSourceEventArgs eventArgs)
        {
            switch (eventArgs.Type)
            {
            case "dataadded":
                OnDataAdded?.Invoke(eventArgs.Shapes);
                break;

            case "dataremoved":
                OnDataRemoved?.Invoke(eventArgs.Shapes);
                break;

            case "datasourceupdated":
                OnDataSourceUpdated?.Invoke();
                break;

            case "sourceadded":
                OnSourceAdded?.Invoke();
                break;

            case "sourceremoved":
                OnSourceRemoved?.Invoke();
                break;
            }
        }
 private void ClearSources()
 {
     foreach (object source in _sources)
     {
         OnSourceRemoved?.Invoke(source);
     }
     _sources.Clear();
 }
 protected void SourceRemoved(IInputSource source)
 {
     OnSourceRemoved?.Invoke(source);
 }
 public void RemoveSource(object source)
 {
     _sources.Remove(source);
     OnSourceRemoved?.Invoke(source);
 }