Skip to content

Commit dfa6867

Browse files
committed
make targets iterable
1 parent 537ebb7 commit dfa6867

1 file changed

Lines changed: 8 additions & 7 deletions

File tree

SelectorObserver.js

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ document.addEventListener('animationstart', e => { // todo: remove/add listener
7676

7777
export class SelectorObserver {
7878
constructor({on, off}) {
79-
this.elements = new WeakSet(); // todo WeakRef-Set: to be able to loop over elements
79+
this.targets = new Set(); // was WeakSet, but we clean targets anyway. Better WeakRef-Set? // rename to targets?
8080
this._on = on;
8181
this._off = off;
8282
}
@@ -98,17 +98,18 @@ export class SelectorObserver {
9898
*/
9999
}
100100
disconnect() {
101+
this.targets.clear();
101102
observers.delete(this);
102-
this.aniObserver && this.aniObserver.disconnect();
103+
//this.aniObserver && this.aniObserver.disconnect();
103104
}
104105
_add(el) {
105-
if (this.elements.has(el)) return;
106-
this.elements.add(el);
106+
if (this.targets.has(el)) return;
107+
this.targets.add(el);
107108
this._on && this._on(el);
108109
}
109110
_remove(el) {
110-
if (!this.elements.has(el)) return;
111-
this.elements.delete(el);
111+
if (!this.targets.has(el)) return;
112+
this.targets.delete(el);
112113
this._off && this._off(el);
113114
}
114115

@@ -131,7 +132,7 @@ export class SelectorObserver {
131132
for (const el of target.querySelectorAll('*')) { // expected to be expensiv
132133
el.matches(this.selector) ? this._add(el) : this._remove(el);
133134
}
134-
//for (const el of this.elements) if (!el.matches(this.selector)) this._remove(el); // not iterable, use WeekRef if supported
135+
//for (const el of this.targets) if (!el.matches(this.selector)) this._remove(el); // not iterable, use WeekRef if supported
135136
//for (const el of target.querySelectorAll(this.selector)) this._add(el);
136137
}
137138
}

0 commit comments

Comments
 (0)