Renamed to digital-society-coop/elm-tree-layout. It is published under that name, and new versions come out there.
Versions published as wasdacraic/elm-tree-layout still install under that name. 2 versions of 2 come from the new location (see their notes).
Rerouted (cache, verified). The original is gone. This copy comes from a Lamdera package cache made before it went. The Lamdera package server serves a copy recovered from a Lamdera package cache from 2021-02-13.
What we checked: Rebuilt from the unpacked sources in a Lamdera package cache (5 copies agree), which Elm only writes after the published SHA-1 checked out; elm.json is byte-identical to package.elm-lang.org's; the exposed modules match docs.json; the zip is our own, so its SHA-1 is not the published one.
The Lamdera compiler uses this copy and prints a one-line notice saying so. elm itself fails to download this version.
Details · package.elm-lang.org's zip: https://github.com/wasdacraic/elm-tree-layout/zipball/1.0.0/
Elm implementation of Buchheim, Junger and Leipert's tree layout algorithm.
This library does not render the tree, so that the rendering logic could be kept separate. Given a 'distance' (used as a constant for x spacing) and 'nodes' (list of hierarchy descriptors, which are tuples of node identifier and parent node identifier, starting with the root), it returns a dictionary of x and y coordinates keyed by the unique identifier of a node:
[ ( "a", Nothing )
, ( "b", Just "a" )
, ( "c", Just "a" )
]
|> TreeLayout.treeLayout 2
--> (Dict.fromList
[ ( "a", { x = 0, y = 1 } )
, ( "b", { x = -1, y = 2 } )
, ( "c", { x = 1, y = 2 } )
]
)The pseude code written by (Buchheim, Junger and Leipert, 2006) implements aesthetic rules defined by (Walker, 1989). in a linear time for trees of unbounded degree.