remove method

void remove(
  1. TreeNodeId id
)

Remove id and everything beneath it.

Implementation

void remove(TreeNodeId id) {
  final ancestors = TreeOps.ancestorsOf<T>(_roots, id);
  _apply(TreeOps.removeNode<T>(_roots, id));
  final gone = TreeOps.find<T>(_roots, id) == null;
  if (gone) {
    _checked.removeAll(_checked.where((c) => TreeOps.find<T>(_roots, c) == null).toList());
    _selection.remove(id);
    if (_selected == id) _selected = ancestors.isNotEmpty ? ancestors.last : null;
    if (_focused == id) _focused = _selected;
    if (_editing == id) _editing = null;
  }
}