class Lutaml::Ea::Diagram::LayoutEngine

def apply_layout(elements, connectors = []) # rubocop:disable Metrics/MethodLength

Returns:
  • (Array) - Elements with calculated positions

Parameters:
  • connectors (Array) -- Array of connectors
  • elements (Array) -- Array of diagram elements
def apply_layout(elements, connectors = []) # rubocop:disable Metrics/MethodLength
  positioned_elements, unpositioned_elements = elements.partition do |e|
    e[:x] && e[:y]
  end
  # Apply force-directed layout for unpositioned elements
  if unpositioned_elements.any?
    positioned_elements += apply_force_directed_layout(
      unpositioned_elements,
      connectors,
      positioned_elements,
    )
  end
  positioned_elements
end