addSteps = (binary1, binary2) => {
var scrollable = d3.create("div")
.style("overflow-x", "scroll")
var invalid
if (invalid = (invalidate(binary1) | invalidate(binary2))) {
scrollable
.append("p")
.style("color", "#b3261e")
.text(`"${invalid[0]}" não é um número válido: "${invalid[1]}" não existe na base 2`)
return scrollable.node()
}
var [sum, carries] = add(binary1, binary2);
var table = d3.create("table")
table.append("tr")
.selectAll(`.td`)
.data(carries)
.enter()
.append("td")
.style("text-align", "left")
.html(d => d != 0 ? d : "")
table.append("tr")
.selectAll(`.td`)
.data(binary1)
.enter()
.append("td")
.style("border-top", "1px solid white")
.html(d => d)
table.append("tr")
.selectAll(`.td`)
.data(binary2)
.enter()
.append("td")
.style("border-top", "1px solid white")
.html(d => d)
table.append("tr")
.selectAll(`.td`)
.data(sum)
.enter()
.append("td")
.style("border-top", "1px solid black")
.html(d => d)
var result = scrollable
.append("p")
.style("text-align", "center")
result
.append("span")
.text(`${binary1} + ${binary2} = ${sum.join("")}`)
scrollable.append(() => table.node())
return scrollable.node()
}