makePaper = (x, canvas, sheet) => {
const minX = -widthInUnits(x, x.zag)
const minY = -2 - (x.padding ?? 0)
const width = makeEven(widthInUnitsTotal(x))
const height = makeEven(heightInUnits(x))
const viewBox = `${minX} ${minY} ${width} ${height}`
const paper = sheet === undefined
? d3.select(DOM.svg(canvas.pad.width, (height * canvas.pad.width) / width))
.attr("name", "sheet (undefined)")
.attr("viewBox", viewBox)
.attr("preserveAspectRatio", "xMinYMin meet")
: sheet
.append("svg")
.attr("height", canvas.grid.vertical.m(36) - canvas.grid.vertical.m(6) - canvas.grid.vertical.m(1))
.attr("y", canvas.grid.vertical.m(6))
.attr("viewBox", viewBox)
.attr("preserveAspectRatio", "xMidYMin meet")
return ({ paper, minX, minY, width, height, viewBox })
}