@e280/quay
Version:
File-browser and outliner UI for the web
23 lines • 667 B
JavaScript
import { MapG, sub } from "@e280/stz";
/** Tracks what kind and specimen data is associated with each item id. */
export class Clade {
taxonomy;
onChange = sub();
#specimens = new MapG();
constructor(taxonomy) {
this.taxonomy = taxonomy;
}
getSpecimen(id) {
return this.#specimens.require(id);
}
setSpecimen(id, kind, specimen) {
this.#specimens.set(id, [kind, specimen]);
this.onChange.pub();
}
query(id) {
const [kind, specimen] = this.getSpecimen(id);
const taxon = this.taxonomy.taxon(kind);
return { kind, taxon, specimen };
}
}
//# sourceMappingURL=clade.js.map