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