| 123456789101112131415161718192021222324 |
- const notify = (node) => !node.isLayoutDirty && node.willUpdate(false);
- function nodeGroup() {
- const nodes = new Set();
- const subscriptions = new WeakMap();
- const dirtyAll = () => nodes.forEach(notify);
- return {
- add: (node) => {
- nodes.add(node);
- subscriptions.set(node, node.addEventListener("willUpdate", dirtyAll));
- },
- remove: (node) => {
- nodes.delete(node);
- const unsubscribe = subscriptions.get(node);
- if (unsubscribe) {
- unsubscribe();
- subscriptions.delete(node);
- }
- dirtyAll();
- },
- dirty: dirtyAll,
- };
- }
- export { nodeGroup };
|