'use strict'; module.exports = function layoutItems(lines, options = {}) { let currentYOffset = options.initialY; let currentXOffset = 0; let debugYOffset = 0; let debugLines = []; let positionedItems = lines.reduce((items, line, i) => { debugLines.push({color: "red", y: debugYOffset, lineNumber: i}); debugLines.push({color: "green", y: currentYOffset, lineNumber: i}); debugLines.push({color: "orange", y: currentYOffset + line.adjustedHeight, lineNumber: i}); let alignmentOffset; if (line.alignment === "center") { alignmentOffset = (options.totalTextWidth - line.width) / 2; } else if (line.alignment === "right") { alignmentOffset = (options.totalTextWidth - line.width); } else { alignmentOffset = 0; } let newItems = items.concat(line.items.map((item) => { let x = currentXOffset + alignmentOffset; let y = currentYOffset - (line.minAscender / 2) + (line.adjustedHeight / 2) debugLines.push({color: "blue", y: y, x1: x, x2: x + item.measurements.width, lineNumber: i}); currentXOffset += item.measurements.width; return Object.assign({ x: x, y: y }, item); })); currentYOffset += line.adjustedHeight; debugYOffset += line.adjustedHeight; currentXOffset = 0; return newItems; }, []); return { positionedItems: positionedItems, debugLines: debugLines } };