@jsenv/dom 0.17.87 → 0.17.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/jsenv_dom.js +15 -17
- package/package.json +1 -1
package/dist/jsenv_dom.js
CHANGED
|
@@ -575,21 +575,28 @@ const getEventLabel = (e) => {
|
|
|
575
575
|
|
|
576
576
|
const createIterableWeakSet = () => {
|
|
577
577
|
const objectWeakRefSet = new Set();
|
|
578
|
+
// The one WeakRef of each member, so that adding a member twice keeps one
|
|
579
|
+
// entry and deleting it once removes it. Weak on the object, and a WeakRef
|
|
580
|
+
// holds nothing: this keeps nothing alive.
|
|
581
|
+
let weakRefMap = new WeakMap();
|
|
578
582
|
|
|
579
583
|
return {
|
|
580
584
|
add: (object) => {
|
|
585
|
+
if (weakRefMap.has(object)) {
|
|
586
|
+
return;
|
|
587
|
+
}
|
|
581
588
|
const objectWeakRef = new WeakRef(object);
|
|
582
589
|
objectWeakRefSet.add(objectWeakRef);
|
|
590
|
+
weakRefMap.set(object, objectWeakRef);
|
|
583
591
|
},
|
|
584
592
|
|
|
585
593
|
delete: (object) => {
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
return true;
|
|
590
|
-
}
|
|
594
|
+
const objectWeakRef = weakRefMap.get(object);
|
|
595
|
+
if (!objectWeakRef) {
|
|
596
|
+
return false;
|
|
591
597
|
}
|
|
592
|
-
|
|
598
|
+
weakRefMap.delete(object);
|
|
599
|
+
return objectWeakRefSet.delete(objectWeakRef);
|
|
593
600
|
},
|
|
594
601
|
|
|
595
602
|
*[Symbol.iterator]() {
|
|
@@ -604,21 +611,12 @@ const createIterableWeakSet = () => {
|
|
|
604
611
|
},
|
|
605
612
|
|
|
606
613
|
has: (object) => {
|
|
607
|
-
|
|
608
|
-
const objectCandidate = weakRef.deref();
|
|
609
|
-
if (objectCandidate === undefined) {
|
|
610
|
-
objectWeakRefSet.delete(weakRef);
|
|
611
|
-
continue;
|
|
612
|
-
}
|
|
613
|
-
if (objectCandidate === object) {
|
|
614
|
-
return true;
|
|
615
|
-
}
|
|
616
|
-
}
|
|
617
|
-
return false;
|
|
614
|
+
return weakRefMap.has(object);
|
|
618
615
|
},
|
|
619
616
|
|
|
620
617
|
clear: () => {
|
|
621
618
|
objectWeakRefSet.clear();
|
|
619
|
+
weakRefMap = new WeakMap();
|
|
622
620
|
},
|
|
623
621
|
|
|
624
622
|
get size() {
|