@e280/quay
Version:
File-browser and outliner UI for the web
39 lines • 1.26 kB
JavaScript
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.value;
}
/** add an item to the hierachy as a root root */
root(item) {
this.hierarchy.establishRoot(item.id);
return item.signal.value;
}
/** get an item by its id */
require(id) {
return this.#items.require(id).signal.value;
}
}
//# sourceMappingURL=codex.js.map