package lib.ui.reactive; import util.Vec.Vec2; using tink.CoreApi; abstract class UIElement { abstract public function render(bounds:Vec2):Canvas; public var changed(default, null):Signal; private final changedTrigger:SignalTrigger = Signal.trigger(); public final eventListner:UIEvents = {}; public function new(events: UIEvents = null) { changed = changedTrigger.asSignal(); if (events != null){ this.eventListner = events; } } }