Cells/cells/ui/src/net/okennedy/cells/widgets/Widgets.scala

30 lines
594 B
Scala

package net.okennedy.cells.widgets
import com.raquo.laminar.api.L._
trait Widget
{
val root: com.raquo.laminar.nodes.ReactiveHtmlElement[org.scalajs.dom.html.Element]
}
object Widgets
{
val widgets = Var[List[Widget]](initial = Nil)
val root = div(
className("widgets"),
children <-- widgets.signal.map { _.map { _.root } }
)
def register(widget: Widget): Unit =
{
widgets.set(widget :: widgets.now())
}
def remove(widget: Widget): Unit =
{
println(s"Removing: $widget from ${widgets.now()}")
widgets.set(widgets.now().filter { _ ne widget })
}
}