Tabletop.js gives spreadsheets legs