react-tooltip 6.0.4 → 6.0.5
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/react-tooltip.cjs +33 -28
- package/dist/react-tooltip.cjs.map +1 -1
- package/dist/react-tooltip.min.cjs +2 -2
- package/dist/react-tooltip.min.cjs.map +1 -1
- package/dist/react-tooltip.min.mjs +1 -1
- package/dist/react-tooltip.min.mjs.map +1 -1
- package/dist/react-tooltip.mjs +33 -28
- package/dist/react-tooltip.mjs.map +1 -1
- package/dist/react-tooltip.umd.js +33 -28
- package/dist/react-tooltip.umd.js.map +1 -1
- package/dist/react-tooltip.umd.min.js +1 -1
- package/dist/react-tooltip.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -551,38 +551,39 @@
|
|
|
551
551
|
* This reduces document-level listeners from O(N × eventTypes) to O(eventTypes).
|
|
552
552
|
*/
|
|
553
553
|
const handlersByType = new Map();
|
|
554
|
-
function
|
|
555
|
-
|
|
556
|
-
if (!set) {
|
|
557
|
-
set = new Set();
|
|
558
|
-
handlersByType.set(eventType, set);
|
|
559
|
-
document.addEventListener(eventType, dispatch);
|
|
560
|
-
}
|
|
561
|
-
return set;
|
|
554
|
+
function getListenerKey(eventType, capture) {
|
|
555
|
+
return `${eventType}:${capture ? 'capture' : 'bubble'}`;
|
|
562
556
|
}
|
|
563
|
-
function
|
|
564
|
-
const
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
557
|
+
function getOrCreateListener(eventType, capture) {
|
|
558
|
+
const key = getListenerKey(eventType, capture);
|
|
559
|
+
let listener = handlersByType.get(key);
|
|
560
|
+
if (!listener) {
|
|
561
|
+
const handlers = new Set();
|
|
562
|
+
const dispatch = (event) => {
|
|
563
|
+
handlers.forEach((handler) => {
|
|
564
|
+
handler(event);
|
|
565
|
+
});
|
|
566
|
+
};
|
|
567
|
+
listener = { handlers, dispatch, eventType, capture };
|
|
568
|
+
handlersByType.set(key, listener);
|
|
569
|
+
document.addEventListener(eventType, dispatch, { capture });
|
|
572
570
|
}
|
|
571
|
+
return listener;
|
|
573
572
|
}
|
|
574
573
|
/**
|
|
575
574
|
* Register a handler for a document-level event type.
|
|
576
575
|
* Returns an unsubscribe function.
|
|
577
576
|
*/
|
|
578
|
-
function addDelegatedEventListener(eventType, handler) {
|
|
579
|
-
const
|
|
580
|
-
|
|
577
|
+
function addDelegatedEventListener(eventType, handler, options = {}) {
|
|
578
|
+
const capture = Boolean(options.capture);
|
|
579
|
+
const key = getListenerKey(eventType, capture);
|
|
580
|
+
const listener = getOrCreateListener(eventType, capture);
|
|
581
|
+
listener.handlers.add(handler);
|
|
581
582
|
return () => {
|
|
582
|
-
|
|
583
|
-
if (
|
|
584
|
-
handlersByType.delete(
|
|
585
|
-
document.removeEventListener(eventType, dispatch);
|
|
583
|
+
listener.handlers.delete(handler);
|
|
584
|
+
if (listener.handlers.size === 0) {
|
|
585
|
+
handlersByType.delete(key);
|
|
586
|
+
document.removeEventListener(eventType, listener.dispatch, { capture });
|
|
586
587
|
}
|
|
587
588
|
};
|
|
588
589
|
}
|
|
@@ -788,8 +789,8 @@
|
|
|
788
789
|
// time, so this effect is decoupled from show/hide state changes.
|
|
789
790
|
React.useEffect(() => {
|
|
790
791
|
const cleanupFns = [];
|
|
791
|
-
const addDelegatedListener = (eventType, listener) => {
|
|
792
|
-
cleanupFns.push(addDelegatedEventListener(eventType, listener));
|
|
792
|
+
const addDelegatedListener = (eventType, listener, options) => {
|
|
793
|
+
cleanupFns.push(addDelegatedEventListener(eventType, listener, options));
|
|
793
794
|
};
|
|
794
795
|
const activeAnchorContainsTarget = (event) => { var _a; return Boolean((event === null || event === void 0 ? void 0 : event.target) && ((_a = activeAnchorRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.target))); };
|
|
795
796
|
const debouncedHandleShowTooltip = (anchor) => {
|
|
@@ -882,7 +883,9 @@
|
|
|
882
883
|
return;
|
|
883
884
|
}
|
|
884
885
|
if (clickEvents.includes(event)) {
|
|
885
|
-
addDelegatedListener(event, handleClickOpenTooltipAnchor
|
|
886
|
+
addDelegatedListener(event, handleClickOpenTooltipAnchor, {
|
|
887
|
+
capture: true,
|
|
888
|
+
});
|
|
886
889
|
}
|
|
887
890
|
});
|
|
888
891
|
Object.entries(actualCloseEvents).forEach(([event, enabled]) => {
|
|
@@ -890,7 +893,9 @@
|
|
|
890
893
|
return;
|
|
891
894
|
}
|
|
892
895
|
if (clickEvents.includes(event)) {
|
|
893
|
-
addDelegatedListener(event, handleClickCloseTooltipAnchor
|
|
896
|
+
addDelegatedListener(event, handleClickCloseTooltipAnchor, {
|
|
897
|
+
capture: true,
|
|
898
|
+
});
|
|
894
899
|
}
|
|
895
900
|
});
|
|
896
901
|
if (float) {
|