closePanel method

  1. @action
void closePanel()

Close the panel including all its tabs

Implementation

@action
void closePanel() {
  final parent = this.parent;
  if (parent == null) return;

  parent.panels.removeWhere((element) => element.id == id);

  // If only one child panel is left, then we "flatten" it
  if (parent.panels.length == 1) {
    // Move the tab
    parent.tabs = parent.panels.first.tabs;
    parent.selectedTab = parent.panels.first.selectedTab;

    // Move the panel one level "up"
    parent.axis = parent.panels.first.axis;
    parent.panels.first.parent = parent.parent;

    parent.panels = parent.panels.first.panels;
    parent.panels.forEach((p) => p.parent = parent);
    parent.panelSizes = <double>[].asObservable();
  }
}