element/flow.js
function flow(direction, elements) {
    var widths = elements.map(widthOf)
    var heights = elements.map(heightOf)

    var width = direction === "left" ?
        sum(widths) : direction === "right" ?
        sum(widths) : maximum(widths)
    var height = direction === "down" ?
        sum(heights) : direction === "right" ?
        sum(heights) : maximum(heights)

    return new Element(new FlowElement(direction, elements)
        , width, height)
}
function flow(direction, elements) {
    var widths = elements.map(widthOf)
    var heights = elements.map(heightOf)

    var width = direction === "left" ?
        sum(widths) : direction === "right" ?
        sum(widths) : maximum(widths)
    var height = direction === "down" ?
        sum(heights) : direction === "right" ?
        sum(heights) : maximum(heights)

    return new Element(new FlowElement(direction, elements)
        , width, height)
}
function flow ( direction , elements ) { var widths = elements . map ( widthOf ) var heights = elements . map ( heightOf ) var width = direction === "left" ? sum ( widths ) : direction === "right" ? sum ( widths ) : maximum ( widths ) var height = direction === "down" ? sum ( heights ) : direction === "right" ? sum ( heights ) : maximum ( heights ) return new Element ( new FlowElement ( direction , elements ) , width , height ) }
String -> [Element] -> Element
String - > [ Element ] - > Element