@selenite/graph-editor
Version:
A graph editor for visual programming, based on rete and svelte.
32 lines (31 loc) • 1.11 kB
JavaScript
export class SocketsPositionsStorage {
elements = new Map();
getPosition(data) {
const list = Array.from(this.elements.values()).flat();
const found = list.filter((item) => {
return item.side === data.side && item.nodeId === data.nodeId && item.key === data.key;
});
// eslint-disable-next-line no-console
if (found.length > 1)
console.warn([
'Found more than one element for socket with same key and side.',
'Probably it was not unmounted correctly'
].join(' '), data);
return found.pop()?.position || null;
}
add(data) {
const existing = this.elements.get(data.element);
this.elements.set(data.element, existing
? [
...existing.filter((n) => !(n.nodeId === data.nodeId && n.key === data.key && n.side === data.side)),
data
]
: [data]);
}
remove(element) {
this.elements.delete(element);
}
snapshot() {
return Array.from(this.elements.values()).flat();
}
}