mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 16:33:15 +01:00
40 lines
No EOL
667 B
JavaScript
40 lines
No EOL
667 B
JavaScript
|
|
export default class Joints {
|
|
|
|
constructor() {
|
|
this.map = new Map();
|
|
}
|
|
|
|
connect(a, b) {
|
|
let tuple = this.map.get(a);
|
|
if (!tuple) {
|
|
tuple = this.map.get(b);
|
|
if (!tuple) {
|
|
tuple = {
|
|
master: a,
|
|
linked: new Set()
|
|
};
|
|
this.map.set(b, tuple);
|
|
}
|
|
this.map.set(a, tuple);
|
|
}
|
|
tuple.linked.add(a);
|
|
tuple.linked.add(b);
|
|
}
|
|
|
|
connected(a, b) {
|
|
const set = this.map.get(a);
|
|
if (!set) {
|
|
return false;
|
|
}
|
|
return set.has(b);
|
|
}
|
|
|
|
master(node) {
|
|
const tuple = this.map.get(node);
|
|
if (!tuple) {
|
|
return node;
|
|
}
|
|
return tuple.master;
|
|
}
|
|
} |