moduleGraphRewriting.Layout.Wrapper(Wrapper,wrapGraph,wrappee,updateWrappee,moduleData.View,moduleGraphRewriting.Graph.Types,moduleGraphRewriting.Layout.Position,moduleGraphRewriting.Layout.PortSpec,moduleGraphRewriting.Layout.Rotation,moduleGraphRewriting.Layout.RotPortSpec,moduleData.Vector)whereimportData.ViewimportGraphRewriting.GraphimportGraphRewriting.Graph.TypesimportGraphRewriting.Layout.PositionimportGraphRewriting.Layout.PortSpecimportGraphRewriting.Layout.RotationimportGraphRewriting.Layout.RotPortSpecimportData.Vector-- | Wraps a value of type @w@, augmenting it with layout informationdataWrapperw=Wrapper{wRot∷Rotation,wPos∷Position,wrappee∷w}instanceVieww(Wrapperw)whereinspect=wrappeeupdate=updateWrappeeinstanceViewRotation(Wrappern)whereinspect=wRotupdatevw=w{wRot=v}instancePortSpecn⇒PortSpec(Wrappern)whereportSpec=portSpec.wrappeeinstanceViewPosition(Wrappern)whereinspect=wPosupdatevw=w{wPos=v}instanceView[Port]n⇒View[Port](Wrappern)whereinspect=inspect.wrappeeadjustfw=w{wrappee=adjustf$wrappeew}updateWrappeevn=n{wrappee=v}-- | Wraps the nodes of a graph, augmenting them with layout informationwrapGraph∷Graphn→Graph(Wrappern)wrapGraph=unsafeMapNodesUniquewrapNodewherewrapNodekn=Wrapper{wRot=Rotation0,wPos=Position$genPosk,wrappee=n}genPosk=letf=fromIntegralkinrotatef(fromScalarf)