package p1cycles

Import Path
	github.com/d2lang/elk-go/internal/layered/p1cycles (on go.dev)

Dependency Relation
	imports 6 packages, and imported by one package

Involved Source Files depth_first.go dfs_node_order.go Package p1cycles implements ELK Layered phase 1. interactive.go model_order.go scc_node_type.go
Package-Level Type Names (total 6)
/* sort by: | */
DepthFirstCycleBreaker is the direct ELK 0.8.1 depth-first cycle breaker. Edges encountered while their target is active on the DFS path are reversed after traversal, preserving Java's edge-iteration and reversal order. (*DepthFirstCycleBreaker) Process(arena *layered.LGraphArena, graphID layered.LGraphID) error (*DepthFirstCycleBreaker) ProcessorConfiguration(_ *layered.LGraphArena, _ layered.LGraphID) layered.ProcessorConfiguration *DepthFirstCycleBreaker : github.com/d2lang/elk-go/internal/layered.ConfiguredProcessor *DepthFirstCycleBreaker : github.com/d2lang/elk-go/internal/layered.LayoutProcessor
DFSNodeOrderCycleBreaker ports ELK 0.12.0's depth-first cycle breaker that visits outgoing targets in node model order (or enforced group-model order) instead of raw edge order. (*DFSNodeOrderCycleBreaker) Process(arena *layered.LGraphArena, graphID layered.LGraphID) error (*DFSNodeOrderCycleBreaker) ProcessorConfiguration(_ *layered.LGraphArena, _ layered.LGraphID) layered.ProcessorConfiguration *DFSNodeOrderCycleBreaker : github.com/d2lang/elk-go/internal/layered.ConfiguredProcessor *DFSNodeOrderCycleBreaker : github.com/d2lang/elk-go/internal/layered.LayoutProcessor
ModelOrderTies bool (*GreedyCycleBreaker) Process(arena *layered.LGraphArena, graphID layered.LGraphID) error (*GreedyCycleBreaker) ProcessorConfiguration(_ *layered.LGraphArena, _ layered.LGraphID) layered.ProcessorConfiguration *GreedyCycleBreaker : github.com/d2lang/elk-go/internal/layered.ConfiguredProcessor *GreedyCycleBreaker : github.com/d2lang/elk-go/internal/layered.LayoutProcessor func NewGreedyCycleBreaker() *GreedyCycleBreaker func NewGreedyModelOrderCycleBreaker() *GreedyCycleBreaker
InteractiveCycleBreaker first follows the direction suggested by existing x coordinates, then uses ELK's DFS pass to remove any remaining cycles. (*InteractiveCycleBreaker) Process(arena *layered.LGraphArena, graphID layered.LGraphID) error (*InteractiveCycleBreaker) ProcessorConfiguration(_ *layered.LGraphArena, _ layered.LGraphID) layered.ProcessorConfiguration *InteractiveCycleBreaker : github.com/d2lang/elk-go/internal/layered.ConfiguredProcessor *InteractiveCycleBreaker : github.com/d2lang/elk-go/internal/layered.LayoutProcessor
ModelOrderCycleBreaker reverses edges that run against the imported model order, including ELK's offsets for first/last layer constraints. (*ModelOrderCycleBreaker) Process(arena *layered.LGraphArena, graphID layered.LGraphID) error (*ModelOrderCycleBreaker) ProcessorConfiguration(_ *layered.LGraphArena, _ layered.LGraphID) layered.ProcessorConfiguration *ModelOrderCycleBreaker : github.com/d2lang/elk-go/internal/layered.ConfiguredProcessor *ModelOrderCycleBreaker : github.com/d2lang/elk-go/internal/layered.LayoutProcessor
SCCNodeTypeCycleBreaker ports ELK 0.12's SCC_NODE_TYPE strategy. It first finds strongly connected components, then chooses reversals from each component using constrained model order and the preferred source/target group IDs. (*SCCNodeTypeCycleBreaker) Process(arena *layered.LGraphArena, graphID layered.LGraphID) error (*SCCNodeTypeCycleBreaker) ProcessorConfiguration(_ *layered.LGraphArena, _ layered.LGraphID) layered.ProcessorConfiguration *SCCNodeTypeCycleBreaker : github.com/d2lang/elk-go/internal/layered.ConfiguredProcessor *SCCNodeTypeCycleBreaker : github.com/d2lang/elk-go/internal/layered.LayoutProcessor