react-tooltip 6.0.4 → 6.0.5-beta.1278.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 +36 -31
- package/dist/react-tooltip.cjs.map +1 -1
- package/dist/react-tooltip.d.ts +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 +2 -2
- package/dist/react-tooltip.min.mjs.map +1 -1
- package/dist/react-tooltip.mjs +36 -31
- package/dist/react-tooltip.mjs.map +1 -1
- package/dist/react-tooltip.umd.js +36 -31
- package/dist/react-tooltip.umd.js.map +1 -1
- package/dist/react-tooltip.umd.min.js +2 -2
- package/dist/react-tooltip.umd.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
function resolveDataTooltipAnchor(targetElement, tooltipId) {
|
|
258
258
|
let currentElement = targetElement;
|
|
259
259
|
while (currentElement) {
|
|
260
|
-
if (currentElement.dataset.tooltipId === tooltipId) {
|
|
260
|
+
if (currentElement instanceof HTMLElement && currentElement.dataset.tooltipId === tooltipId) {
|
|
261
261
|
return currentElement;
|
|
262
262
|
}
|
|
263
263
|
currentElement = currentElement.parentElement;
|
|
@@ -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
|
}
|
|
@@ -702,10 +703,10 @@
|
|
|
702
703
|
const dataTooltipId = anchorSelector ? parseDataTooltipIdSelector(anchorSelector) : null;
|
|
703
704
|
resolveAnchorElementRef.current = (target) => {
|
|
704
705
|
var _a, _b;
|
|
705
|
-
|
|
706
|
-
if (!(targetElement === null || targetElement === void 0 ? void 0 : targetElement.isConnected)) {
|
|
706
|
+
if (!(target instanceof Element) || !target.isConnected) {
|
|
707
707
|
return null;
|
|
708
708
|
}
|
|
709
|
+
const targetElement = target;
|
|
709
710
|
if (dataTooltipId) {
|
|
710
711
|
const matchedAnchor = resolveDataTooltipAnchor(targetElement, dataTooltipId);
|
|
711
712
|
if (matchedAnchor && !(disableTooltip === null || disableTooltip === void 0 ? void 0 : disableTooltip(matchedAnchor))) {
|
|
@@ -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) {
|