import { Subscribable } from "./Subscribable.js"; class SubscribeSet extends Subscribable { constructor() { super(); Object.assign(this.events, { addItem: [], deleteItem: [], changeItem: [], askAdd: [], }); Object.assign(this.eventDeps, { addItem: ["changeItem"], deleteItem: ["changeItem"], changeItem: [], askAdd: [], }); this.set = new Set(); } has(key) { return this.set.has(key); } forEach(f) { for (const key of this.set.keys()) { f(key); } } askAdd(key) { this.broadcast("askAdd", key); } add(key) { if (!this.set.has(key)) { this.set.add(key); this.broadcast("addItem", key); } } delete(key) { if (this.set.has(key)) { this.set.delete(key); this.broadcast("deleteItem", key); } } } export { SubscribeSet };