import { Subscribable } from "./Subscribable.js"; class SubscribeValue extends Subscribable { constructor() { super(); this.hasData = false; this.data = null; } exists() { return this.hasData; } value() { if (this.hasData) return this.data; else return null; } set(data) { const exists = this.exists(); this.data = data; this.hasData = true; if (exists) { this.broadcast("editSelf", this.data); } else { this.broadcast("addSelf", this.data); } return this; } edit(f) { if (this.exists()) { f(this.data); this.set(this.data); } else { throw new Error("Tried to edit a SubscribeValue that had no value"); } } delete() { this.hasData = false; this.broadcast("removeSelf"); return this; } } export { SubscribeValue };