UNPKG

@e280/quay

Version:

File-browser and outliner UI for the web

39 lines 1.25 kB
import { MapG } from "@e280/stz"; import { Clade } from "./parts/clade.js"; import { Taxonomy } from "./parts/taxonomy.js"; import { Hierarchy } from "./parts/hierarchy.js"; import { CodexItem } from "./parts/codex-item.js"; import { generateId } from "./utils/generate-id.js"; export class Codex { clade; hierarchy; static setup(taxons) { const taxonomy = new Taxonomy(taxons); const clade = new Clade(taxonomy); const hierarchy = new Hierarchy(); return new this(clade, hierarchy); } #items = new MapG(); constructor(clade, hierarchy) { this.clade = clade; this.hierarchy = hierarchy; } /** create an item, not yet added to hierarchy */ create(kind, specimen) { const id = generateId(); this.clade.setSpecimen(id, kind, specimen); const item = new CodexItem(this, id); this.#items.set(id, item); return item.signal(); } /** add an item to the hierachy as a root root */ root(item) { this.hierarchy.establishRoot(item.id); return item.signal(); } /** get an item by its id */ require(id) { return this.#items.require(id).signal(); } } //# sourceMappingURL=codex.js.map