28 lines
632 B
Scala
28 lines
632 B
Scala
package net.okennedy.cells.sheet
|
|
|
|
import scala.collection.mutable
|
|
import com.raquo.airstream.state.Var
|
|
import net.okennedy.cells._
|
|
import com.raquo.laminar.api.L._
|
|
|
|
class Canvas()
|
|
{
|
|
val tables = Var[Map[Identifier, Table]](initial = Map.empty)
|
|
|
|
def process(op: CanvasOp): Unit =
|
|
{
|
|
op match {
|
|
case AddTable(table) =>
|
|
tables.set(tables.now() ++ Map(table.id -> new Table(table)))
|
|
}
|
|
}
|
|
|
|
val tableNodes =
|
|
tables.signal.map { _.values.toSeq }
|
|
.split( key = _.id )( (k, tabl, sig) => tabl.root )
|
|
|
|
val root = div(
|
|
className("spreadsheetCanvas"),
|
|
children <-- tableNodes
|
|
)
|
|
} |