...

Source file src/oss.terrastruct.com/d2/d2graph/grid_diagram.go

Documentation: oss.terrastruct.com/d2/d2graph

     1  package d2graph
     2  
     3  func (obj *Object) IsGridDiagram() bool {
     4  	return obj != nil &&
     5  		(obj.GridRows != nil || obj.GridColumns != nil)
     6  }
     7  
     8  func (obj *Object) ClosestGridDiagram() *Object {
     9  	if obj == nil {
    10  		return nil
    11  	}
    12  	if obj.IsGridDiagram() {
    13  		return obj
    14  	}
    15  	return obj.Parent.ClosestGridDiagram()
    16  }
    17  
    18  func (obj *Object) ClosestGridCell() *Object {
    19  	if obj == nil {
    20  		return nil
    21  	}
    22  	// grid cells can be a nested grid diagram
    23  	if obj.Parent.IsGridDiagram() {
    24  		return obj
    25  	}
    26  	return obj.Parent.ClosestGridCell()
    27  }
    28  
    29  // TopGridDiagram returns the least nested (outermost) grid diagram
    30  func (obj *Object) TopGridDiagram() *Object {
    31  	if obj == nil {
    32  		return nil
    33  	}
    34  	var gd *Object
    35  	if obj.IsGridDiagram() {
    36  		gd = obj
    37  	}
    38  	curr := obj.Parent
    39  	for curr != nil {
    40  		if curr.IsGridDiagram() {
    41  			gd = curr
    42  		}
    43  		curr = curr.Parent
    44  	}
    45  	return gd
    46  }
    47  

View as plain text