import {Subscribable} from "./Subscribable.js" import {SubscribeValue} from "./SubscribeValue.js" class SubscribeMap extends Subscribable { constructor() { super() Object.assign(this.events, { addItem: [], changeItem: [], removeItem: [] }) this.map = new Map() } has(key) { return this.map.has(key) && this.map.get(key).exists() } get(key) { if (this.map.has(key)) { return this.map.get(key) } else { this.map.set(key, new SubscribeValue()) } } set(key, value) { let s if (this.map.has(key)) { s = this.map.get(key).set(value) this.broadcast("changeItem", key) } else { s = new SubscribeValue().set(value) this.map.set(key, s) this.broadcast("addItem", key) } return s } } export {SubscribeMap}