visualizeTypedArray = (typedArray) => {
const bufferLength = typedArray.buffer.byteLength;
const bytesPerElement = typedArray.BYTES_PER_ELEMENT;
const { length } = typedArray;
const typedArraySquareWidth = squareWidth * bytesPerElement;
const typedArrayBlocks = svg`
<svg text-anchor="middle" width=${width} height=${squareWidth * 2 + 5}>
<g font-size=${width / (bufferLength * 2.5)}>
${[...Array(length).keys()].map(
(d) => `<g transform="translate(${d * typedArraySquareWidth})">
<text x=${typedArraySquareWidth / 2} y=${squareWidth / 2}>
<tspan fill="DarkGrey">${d}:</tspan> <tspan>${
typedArray[d]
}</tspan></text>
<rect width=${typedArraySquareWidth} height=${squareWidth} fill="transparent" stroke="dimgray"/>
</g> `
)}
</g>
<g font-size=${
width / (bufferLength * 1.75)
} transform="translate(0,${squareWidth})">
${[...new Array(bufferLength).keys()].map(
(d) => `
<g transform="translate(${d * squareWidth})">
<rect width=${squareWidth} height=${squareWidth} fill=${arrayBufferColor} stroke="dimgray"/>
<text alignment-baseline="middle" x=${squareWidth / 2} y=${
squareWidth / 2
}>${d}</text>
</g> `
)}
</g>
</svg>
`;
return typedArrayBlocks;
}