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