26 lines
915 B
JavaScript
26 lines
915 B
JavaScript
import { union, without } from './utils/js_utils.js';
|
|
export class EnterLeaveCounter {
|
|
enter(enteringNode) {
|
|
const previousLength = this.entered.length;
|
|
const isNodeEntered = (node)=>this.isNodeInDocument(node) && (!node.contains || node.contains(enteringNode))
|
|
;
|
|
this.entered = union(this.entered.filter(isNodeEntered), [
|
|
enteringNode
|
|
]);
|
|
return previousLength === 0 && this.entered.length > 0;
|
|
}
|
|
leave(leavingNode) {
|
|
const previousLength = this.entered.length;
|
|
this.entered = without(this.entered.filter(this.isNodeInDocument), leavingNode);
|
|
return previousLength > 0 && this.entered.length === 0;
|
|
}
|
|
reset() {
|
|
this.entered = [];
|
|
}
|
|
constructor(isNodeInDocument){
|
|
this.entered = [];
|
|
this.isNodeInDocument = isNodeInDocument;
|
|
}
|
|
}
|
|
|
|
//# sourceMappingURL=EnterLeaveCounter.js.map
|