import { Module } from "../model/module.ts"; import { defineStore } from "pinia"; const moduleStore = defineStore("moduleStore", { state: () => ({ modules: new Map(), }), actions: { addModule(module: Module) { this.modules.set(module.uuid, module); }, removeModule(module: Module) { this.modules.delete(module.uuid); }, hasModule(module: Module): boolean { return ( this.modules.has(module.uuid) && (this.modules.get(module.uuid)?.isEqual(module) ?? false) ); }, removeAllModules() { this.modules.clear(); }, overwriteModules(modules: Module[]) { this.modules.clear(); modules.forEach((module) => { this.modules.set(module.uuid, module); }); }, isEmpty(): boolean { return this.modules.size === 0; }, countModules(): number { return this.modules.size; }, getAllModules(): Module[] { return Array.from(this.modules.values()); }, containsModule(module: Module): boolean { return this.modules.has(module.uuid); } }, }); export default moduleStore;