SpreadJS provides cell types. It can support two-way binding (data changes in the view model are reflected in the view). Each cell type provides two modes: display mode and edit mode. These cell types allow you to customize the way that specific cells behave, and gives you control over the different types of input that you might want for your application.