react-tooltip 6.0.3 → 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.
@@ -4,6 +4,6 @@
4
4
  * @copyright ReactTooltip Team
5
5
  * @license MIT
6
6
  */
7
- import e,{useLayoutEffect as t,useEffect as o,useState as r,useRef as n,useMemo as l,memo as c,useCallback as i,useImperativeHandle as s}from"react";import u from"clsx";import{createPortal as a}from"react-dom";import{flip as d,shift as p,arrow as v,computePosition as m,offset as f,autoUpdate as h}from"@floating-ui/dom";const y={core:!1,base:!1};function w({css:e,id:t="react-tooltip-base-styles",type:o="base",ref:r,state:n={}}){if(!e||"undefined"==typeof document||(void 0!==n[o]?n[o]:y[o]))return;if("core"===o&&"undefined"!=typeof process&&process.env&&process.env.REACT_TOOLTIP_DISABLE_CORE_STYLES)return;if("base"===o&&"undefined"!=typeof process&&process.env&&process.env.REACT_TOOLTIP_DISABLE_BASE_STYLES)return;"core"===o&&(t="react-tooltip-core-styles"),r||(r={});const{insertAt:l}=r;if(document.getElementById(t))return;const c=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.id=t,i.type="text/css","top"===l&&c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e)),void 0!==n[o]?n[o]=!0:y[o]=!0}const b=d({fallbackAxisSideDirection:"start"}),S=p({padding:5}),g=async({elementReference:e=null,tooltipReference:t=null,tooltipArrowReference:o=null,place:r="top",offset:n=10,strategy:l="absolute",middlewares:c=[f(Number(n)),b,S],border:i,arrowSize:s=8})=>{if(!e)return{tooltipStyles:{},tooltipArrowStyles:{},place:r};if(null===t)return{tooltipStyles:{},tooltipArrowStyles:{},place:r};const u=[...c];return o?(u.push(v({element:o,padding:5})),m(e,t,{placement:r,strategy:l,middleware:u}).then(({x:e,y:t,placement:o,middlewareData:r})=>{var n,l;const c={left:`${e}px`,top:`${t}px`,border:i},{x:u,y:a}=null!==(n=r.arrow)&&void 0!==n?n:{x:0,y:0},d=null!==(l={top:"bottom",right:"left",bottom:"top",left:"right"}[o.split("-")[0]])&&void 0!==l?l:"bottom",p=i&&{borderBottom:i,borderRight:i};let v=0;if(i){const e=`${i}`.match(/(\d+)px/);v=(null==e?void 0:e[1])?Number(e[1]):1}return{tooltipStyles:c,tooltipArrowStyles:{left:null!=u?`${u}px`:"",top:null!=a?`${a}px`:"",right:"",bottom:"",...p,[d]:`-${s/2+v-1}px`},place:o}})):m(e,t,{placement:"bottom",strategy:l,middleware:u}).then(({x:e,y:t,placement:o})=>({tooltipStyles:{left:`${e}px`,top:`${t}px`},tooltipArrowStyles:{},place:o}))},A=(e,t,o)=>{let r=null,n=e;const l=function(...e){const o=()=>{r=null};r||(n.apply(this,e),r=setTimeout(o,t))};return l.cancel=()=>{r&&(clearTimeout(r),r=null)},l.setCallback=e=>{n=e},l},E=e=>{if(!(e instanceof HTMLElement||e instanceof SVGElement))return!1;const t=getComputedStyle(e);return["overflow","overflow-x","overflow-y"].some(e=>{const o=t.getPropertyValue(e);return"auto"===o||"scroll"===o})},_=e=>{if(!e)return null;let t=e.parentElement;for(;t;){if(E(t))return t;t=t.parentElement}return document.scrollingElement||document.documentElement},T="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:o,k=e=>{e.current&&(clearTimeout(e.current),e.current=null)};var O={tooltip:"core-styles-module_tooltip__3vRRp",fixed:"core-styles-module_fixed__pcSol",arrow:"core-styles-module_arrow__cvMwQ",content:"core-styles-module_content__BRKdB",noArrow:"core-styles-module_noArrow__xock6",clickable:"core-styles-module_clickable__ZuTTB",show:"core-styles-module_show__Nt9eE",closing:"core-styles-module_closing__sGnxF"},C={tooltip:"styles-module_tooltip__mnnfp",content:"styles-module_content__ydYdI",arrow:"styles-module_arrow__K0L3T",dark:"styles-module_dark__xNqje",light:"styles-module_light__Z6W-X",success:"styles-module_success__A2AKt",warning:"styles-module_warning__SCK0X",error:"styles-module_error__JvumD",info:"styles-module_info__BWdHW"};const R=new Map;let x=null;function L(e){const t=e.match(/^\[data-tooltip-id=(['"])((?:\\.|(?!\1).)*)\1\]$/);return t?t[2].replace(/\\(['"])/g,"$1"):null}function N(e){try{return{anchors:Array.from(document.querySelectorAll(e)),error:null}}catch(e){return{anchors:[],error:e instanceof Error?e:new Error(String(e))}}}function B(e,t){var o,r,n,l;const c=N(e),i=null!==(r=null===(o=c.error)||void 0===o?void 0:o.message)&&void 0!==r?r:null,s=null!==(l=null===(n=t.error)||void 0===n?void 0:n.message)&&void 0!==l?l:null;if(u=t.anchors,a=c.anchors,u.length===a.length&&u.every((e,t)=>e===a[t])&&i===s)return;var u,a;const d={...t,anchors:c.anchors,error:c.error};R.set(e,d),function(e){e.subscribers.forEach(t=>t(e.anchors,e.error))}(d)}let z=!1,I=null,$=!1;function j(e){if(e?(I||(I=new Set),e.forEach(e=>I.add(e))):$=!0,z)return;z=!0;const t=()=>{z=!1;const e=$,t=I;var o;$=!1,I=null,e?R.forEach((e,t)=>{B(t,e)}):t&&t.size>0&&(o=t,R.forEach((e,t)=>{(null===e.tooltipId||o.has(e.tooltipId))&&B(t,e)}))};"function"==typeof requestAnimationFrame?requestAnimationFrame(t):Promise.resolve().then(t)}function D(){x||"undefined"==typeof MutationObserver||(x=new MutationObserver(e=>{const t=function(e){var t;if(R.size<=4)return null;const o=new Set;for(const r of e){if("attributes"===r.type){const e=r.target,n=null===(t=e.getAttribute)||void 0===t?void 0:t.call(e,"data-tooltip-id");n&&o.add(n),r.oldValue&&o.add(r.oldValue);continue}if("childList"===r.type){const e=e=>{var t,r;for(let n=0;n<e.length;n++){const l=e[n];if(l.nodeType!==Node.ELEMENT_NODE)continue;const c=l,i=null===(t=c.getAttribute)||void 0===t?void 0:t.call(c,"data-tooltip-id");i&&o.add(i);const s=null===(r=c.querySelectorAll)||void 0===r?void 0:r.call(c,"[data-tooltip-id]");if(s){if(s.length>50)return!0;for(let e=0;e<s.length;e++){const t=s[e].getAttribute("data-tooltip-id");t&&o.add(t)}}}return!1};if(e(r.addedNodes)||e(r.removedNodes))return null;continue}}return o}(e);j(t)}),x.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-tooltip-id"],attributeOldValue:!0}))}function H(e,t){let o=R.get(e);if(!o){const t=N(e);o={anchors:t.anchors,error:t.error,subscribers:new Set,tooltipId:L(e)},R.set(e,o)}return o.subscribers.add(t),D(),t([...o.anchors],o.error),()=>{const o=R.get(e);o&&(o.subscribers.delete(t),0===o.subscribers.size&&R.delete(e),0===R.size&&x&&(x.disconnect(),x=null))}}const M=new Map;function P(e){const t=M.get(e.type);t&&t.forEach(t=>{t(e)})}function W(e,t){const o=function(e){let t=M.get(e);return t||(t=new Set,M.set(e,t),document.addEventListener(e,P)),t}(e);return o.add(t),()=>{o.delete(t),0===o.size&&(M.delete(e),document.removeEventListener(e,P))}}let q=null;var F=c(({forwardRef:t,id:c,className:d,classNameArrow:p,variant:v="dark",portalRoot:m,anchorSelect:f,place:y="top",offset:w=10,openOnClick:b=!1,positionStrategy:S="absolute",middlewares:E,wrapper:R,delayShow:x=0,delayHide:L=0,autoClose:N,float:B=!1,hidden:z=!1,noArrow:I=!1,clickable:$=!1,openEvents:j,closeEvents:D,globalCloseEvents:M,imperativeModeOnly:P,style:F,position:V,afterShow:K,afterHide:Y,disableTooltip:X,content:G,contentWrapperRef:Z,isOpen:J,defaultIsOpen:Q=!1,setIsOpen:U,previousActiveAnchor:ee,activeAnchor:te,setActiveAnchor:oe,border:re,opacity:ne,arrowColor:le,arrowSize:ce=8,role:ie="tooltip"})=>{var se;const ue=n(null),ae=n(null),de=n(null),pe=n(null),ve=n(null),me=n(null),[fe,he]=r({tooltipStyles:{},tooltipArrowStyles:{},place:y}),[ye,we]=r(!1),[be,Se]=r(!1),[ge,Ae]=r(null),Ee=n(!1),_e=n(null),Te=n(!1),ke=n(!1),Oe=n({getBoundingClientRect:()=>({x:0,y:0,width:0,height:0,top:0,left:0,right:0,bottom:0})});T(()=>(ke.current=!0,()=>{ke.current=!1}),[]);const Ce=i(e=>{ke.current&&(e&&Se(!0),setTimeout(()=>{ke.current&&(null==U||U(e),void 0===J&&we(e))},10))},[J,U]);o(()=>{if(c){if(ye){t(ee);const o=e(te),r=[...new Set([...o,c])].filter(Boolean).join(" ");null==te||te.setAttribute("aria-describedby",r)}else t(te);return()=>{t(te),t(ee)}}function e(e){var t;return(null===(t=null==e?void 0:e.getAttribute("aria-describedby"))||void 0===t?void 0:t.split(" "))||[]}function t(t){const o=e(t).filter(e=>e!==c);o.length?null==t||t.setAttribute("aria-describedby",o.join(" ")):null==t||t.removeAttribute("aria-describedby")}},[te,ye,c,ee]),o(()=>{if(void 0===J)return()=>null;J&&Se(!0);const e=setTimeout(()=>{we(J)},10);return()=>{clearTimeout(e)}},[J]),o(()=>{if(ye!==Ee.current)if(k(me),Ee.current=ye,ye)null==K||K();else{if(null===q){const e=getComputedStyle(document.body);q=(e=>{const t=e.match(/^([\d.]+)(m?s)$/);if(!t)return 0;const[,o,r]=t;return Number(o)*("ms"===r?1:1e3)})(e.getPropertyValue("--rt-transition-show-delay"))}const e=q;me.current=setTimeout(()=>{Se(!1),Ae(null),null==Y||Y()},e+25)}},[Y,K,ye]),o(()=>(k(ve),!ye||!N||N<=0||(ve.current=setTimeout(()=>{Ce(!1)},N)),()=>{k(ve)}),[te,N,Ce,ye]);const Re=i(e=>{ke.current&&he(t=>t.place===e.place&&t.tooltipStyles.left===e.tooltipStyles.left&&t.tooltipStyles.top===e.tooltipStyles.top&&t.tooltipStyles.border===e.tooltipStyles.border&&t.tooltipArrowStyles.left===e.tooltipArrowStyles.left&&t.tooltipArrowStyles.top===e.tooltipArrowStyles.top&&t.tooltipArrowStyles.right===e.tooltipArrowStyles.right&&t.tooltipArrowStyles.bottom===e.tooltipArrowStyles.bottom&&t.tooltipArrowStyles.borderBottom===e.tooltipArrowStyles.borderBottom&&t.tooltipArrowStyles.borderRight===e.tooltipArrowStyles.borderRight?t:e)},[]),xe=n(be);xe.current=be;const Le=i((e=x)=>{de.current&&clearTimeout(de.current),xe.current?Ce(!0):de.current=setTimeout(()=>{Ce(!0)},e)},[x,Ce]),Ne=i((e=L)=>{pe.current&&clearTimeout(pe.current),pe.current=setTimeout(()=>{Te.current||Ce(!1)},e)},[L,Ce]),Be=i(({x:e,y:t})=>{var o;Oe.current.getBoundingClientRect=()=>({x:e,y:t,width:0,height:0,top:t,left:e,right:e,bottom:t}),g({place:null!==(o=null==ge?void 0:ge.place)&&void 0!==o?o:y,offset:w,elementReference:Oe.current,tooltipReference:ue.current,tooltipArrowReference:ae.current,strategy:S,middlewares:E,border:re,arrowSize:ce}).then(e=>{Re(e)})},[null==ge?void 0:ge.place,y,w,S,E,re,ce,Re]),ze=i(()=>{var e,t;const o=null!==(e=null==ge?void 0:ge.position)&&void 0!==e?e:V;o?Be(o):B?_e.current&&Be(_e.current):(null==te?void 0:te.isConnected)&&g({place:null!==(t=null==ge?void 0:ge.place)&&void 0!==t?t:y,offset:w,elementReference:te,tooltipReference:ue.current,tooltipArrowReference:ae.current,strategy:S,middlewares:E,border:re,arrowSize:ce}).then(e=>{ke.current&&Re(e)})},[null==ge?void 0:ge.position,null==ge?void 0:ge.place,V,B,te,y,w,S,E,re,Be,Re,ce]),Ie=i(()=>{Se(!1),Ce(!1),oe(null),k(de),k(pe),k(ve)},[Ce,oe]),$e=be||Q||Boolean(J)||Boolean(te)||Boolean(null==ge?void 0:ge.anchorSelect),{anchorElements:je,selector:De}=(({id:e,anchorSelect:t,imperativeAnchorSelect:c,activeAnchor:i,disableTooltip:s,onActiveAnchorRemoved:u,trackAnchors:a})=>{const[d,p]=r([]),[v,m]=r(null),f=n(null),h=l(()=>(({id:e,anchorSelect:t,imperativeAnchorSelect:o})=>{var r;let n=null!==(r=null!=o?o:t)&&void 0!==r?r:"";return!n&&e&&(n=`[data-tooltip-id='${e.replace(/'/g,"\\'")}']`),n})({id:e,anchorSelect:t,imperativeAnchorSelect:c}),[e,t,c]),y=l(()=>d.filter(e=>!(null==s?void 0:s(e))),[d,s]),w=l(()=>{if(!i||!h)return!1;try{return i.matches(h)}catch(e){return!1}},[i,h,y]);return o(()=>h&&a?H(h,(e,t)=>{p(e),m(t)}):(p([]),void m(null)),[h,a]),o(()=>{v&&f.current!==h&&(f.current=h)},[h,v]),o(()=>{i&&(i.isConnected&&(y.includes(i)||w)||u())},[i,y,w,u]),{anchorElements:y,selector:h}})({id:c,anchorSelect:f,imperativeAnchorSelect:null==ge?void 0:ge.anchorSelect,activeAnchor:te,disableTooltip:X,onActiveAnchorRemoved:Ie,trackAnchors:$e});(({activeAnchor:e,anchorElements:t,anchorSelector:r,clickable:c,closeEvents:i,delayHide:s,delayShow:u,disableTooltip:a,float:d,globalCloseEvents:p,handleHideTooltipDelayed:v,handleShow:m,handleShowTooltipDelayed:f,handleTooltipPosition:y,hoveringTooltip:w,imperativeModeOnly:b,lastFloatPosition:S,openEvents:g,openOnClick:E,rendered:T,setActiveAnchor:O,show:C,tooltipHideDelayTimerRef:R,tooltipRef:x,tooltipShowDelayTimerRef:L,updateTooltipPosition:N})=>{const B=n(A(e=>{},50)),z=n(A(()=>{},50)),I=n(null),$=n(null),j=n(null),D=n(null);e!==j.current&&(j.current=e,I.current=_(e));const H=x.current;H!==D.current&&(D.current=H,$.current=_(H));const M=E||(null==g?void 0:g.click)||(null==g?void 0:g.dblclick)||(null==g?void 0:g.mousedown),P=l(()=>{const e=g?{...g}:{mouseenter:!0,focus:!0,click:!1,dblclick:!1,mousedown:!1};return!g&&E&&Object.assign(e,{mouseenter:!1,focus:!1,click:!0}),b&&Object.assign(e,{mouseenter:!1,focus:!1,click:!1,dblclick:!1,mousedown:!1}),e},[g,E,b]),q=l(()=>{const e=i?{...i}:{mouseleave:!0,blur:!0,click:!1,dblclick:!1,mouseup:!1};return!i&&E&&Object.assign(e,{mouseleave:!1,blur:!1}),b&&Object.assign(e,{mouseleave:!1,blur:!1,click:!1,dblclick:!1,mouseup:!1}),e},[i,E,b]),F=l(()=>{const e=p?{...p}:{escape:!1,scroll:!1,resize:!1,clickOutsideAnchor:M||!1};return b&&Object.assign(e,{escape:!1,scroll:!1,resize:!1,clickOutsideAnchor:!1}),e},[p,M,b]),V=n(e);V.current=e;const K=n(C);K.current=C;const Y=n(t);Y.current=t;const X=n(m);X.current=m;const G=n(y);G.current=y;const Z=n(N);Z.current=N;const J=n(()=>null),Q=n(()=>{}),U=n(()=>{}),ee=r?function(e){const t=e.match(/^\[data-tooltip-id=(['"])((?:\\.|(?!\1).)*)\1\]$/);return t?t[2].replace(/\\(['"])/g,"$1"):null}(r):null;J.current=e=>{var t,o;const n=e;if(!(null==n?void 0:n.isConnected))return null;if(ee){const e=function(e,t){let o=e;for(;o;){if(o.dataset.tooltipId===t)return o;o=o.parentElement}return null}(n,ee);if(e&&!(null==a?void 0:a(e)))return e}else if(r)try{const e=null!==(t=n.matches(r)?n:n.closest(r))&&void 0!==t?t:null;if(e&&!(null==a?void 0:a(e)))return e}catch(e){return null}return null!==(o=Y.current.find(e=>e===n||e.contains(n)))&&void 0!==o?o:null},Q.current=e=>{e&&(e.isConnected?(null==a?void 0:a(e))||(u&&V.current&&e!==V.current?(L.current&&clearTimeout(L.current),L.current=setTimeout(()=>{O(e),m(!0)},u)):(O(e),u?f():m(!0)),R.current&&clearTimeout(R.current)):O(null))},U.current=()=>{c?v(s||100):s?v():m(!1),L.current&&clearTimeout(L.current)};const te=B.current,oe=z.current;te.setCallback(e=>Q.current(e)),oe.setCallback(()=>U.current()),o(()=>{const e=[],t=(t,o)=>{e.push(W(t,o))},o=e=>{var t;return Boolean((null==e?void 0:e.target)&&(null===(t=V.current)||void 0===t?void 0:t.contains(e.target)))},r=e=>{oe.cancel(),te(e)},n=()=>{te.cancel(),oe()},l=()=>{t("mouseover",e=>{const t=J.current(e.target);t&&J.current(e.relatedTarget)!==t&&r(t)})},i=()=>{t("mouseout",e=>{const t=J.current(e.target);if(!t&&!o(e))return;const r=e.relatedTarget,l=t||V.current;(null==l?void 0:l.contains(r))||n()})};P.mouseenter&&l(),q.mouseleave&&i(),P.mouseover&&l(),q.mouseout&&i(),P.focus&&t("focusin",e=>{r(J.current(e.target))}),q.blur&&t("focusout",e=>{const t=J.current(e.target);if(!t&&!o(e))return;const r=e.relatedTarget,l=t||V.current;(null==l?void 0:l.contains(r))||n()});const s=["mouseover","mouseout","mouseenter","mouseleave","focus","blur"],u=["click","dblclick","mousedown","mouseup"],a=e=>{var t;const o=J.current(null!==(t=null==e?void 0:e.target)&&void 0!==t?t:null);o&&(K.current&&V.current===o||Q.current(o))},p=e=>{K.current&&o(e)&&U.current()};Object.entries(P).forEach(([e,o])=>{o&&!s.includes(e)&&u.includes(e)&&t(e,a)}),Object.entries(q).forEach(([e,o])=>{o&&!s.includes(e)&&u.includes(e)&&t(e,p)}),d&&t("pointermove",e=>{const t=V.current;if(!t)return;if(J.current(e.target)!==t)return;const o=e,r={x:o.clientX,y:o.clientY};G.current(r),S.current=r});const v=x.current,m=()=>{w.current=!0},f=()=>{w.current=!1,U.current()},h=c&&(q.mouseout||q.mouseleave);return h&&(null==v||v.addEventListener("mouseover",m),null==v||v.addEventListener("mouseout",f)),()=>{e.forEach(e=>e()),h&&(null==v||v.removeEventListener("mouseover",m),null==v||v.removeEventListener("mouseout",f)),te.cancel(),oe.cancel()}},[P,q,d,c,T]),o(()=>{const t=()=>{X.current(!1)},o=$.current,r=I.current;F.scroll&&(window.addEventListener("scroll",t),null==r||r.addEventListener("scroll",t),null==o||o.addEventListener("scroll",t));let n=null;F.resize?window.addEventListener("resize",t):e&&x.current&&(n=h(e,x.current,()=>Z.current(),{ancestorResize:!0,elementResize:!0,layoutShift:!0}));const l=e=>{"Escape"===e.key&&X.current(!1)};F.escape&&window.addEventListener("keydown",l);const c=e=>{var t,o;if(!K.current)return;const r=e.target;(null==r?void 0:r.isConnected)&&((null===(t=x.current)||void 0===t?void 0:t.contains(r))||(null===(o=V.current)||void 0===o?void 0:o.contains(r))||Y.current.some(e=>null==e?void 0:e.contains(r))||(X.current(!1),k(L)))};return F.clickOutsideAnchor&&window.addEventListener("click",c),()=>{F.scroll&&(window.removeEventListener("scroll",t),null==r||r.removeEventListener("scroll",t),null==o||o.removeEventListener("scroll",t)),F.resize&&window.removeEventListener("resize",t),n&&n(),F.escape&&window.removeEventListener("keydown",l),F.clickOutsideAnchor&&window.removeEventListener("click",c)}},[F,e])})({activeAnchor:te,anchorElements:je,anchorSelector:De,clickable:$,closeEvents:D,delayHide:L,delayShow:x,disableTooltip:X,float:B,globalCloseEvents:M,handleHideTooltipDelayed:Ne,handleShow:Ce,handleShowTooltipDelayed:Le,handleTooltipPosition:Be,hoveringTooltip:Te,imperativeModeOnly:P,lastFloatPosition:_e,openEvents:j,openOnClick:b,rendered:be,setActiveAnchor:oe,show:ye,tooltipHideDelayTimerRef:pe,tooltipRef:ue,tooltipShowDelayTimerRef:de,updateTooltipPosition:ze});const He=n(ze);He.current=ze,o(()=>{be&&ze()},[be,ze]),o(()=>{if(!be||!(null==Z?void 0:Z.current))return()=>null;let e=null;const t=new ResizeObserver(()=>{e&&clearTimeout(e),e=setTimeout(()=>{ke.current&&He.current(),e=null},0)});return t.observe(Z.current),()=>{t.disconnect(),e&&clearTimeout(e)}},[G,Z,be]),o(()=>{var e;if(!(Q||Boolean(J)))return;const t=(()=>{if(!te||!(null==ge?void 0:ge.anchorSelect))return!1;try{return te.matches(ge.anchorSelect)}catch(e){return!1}})();if(!te||!je.includes(te)){if(t)return;oe(null!==(e=je[0])&&void 0!==e?e:null)}},[te,je,Q,null==ge?void 0:ge.anchorSelect,J,be,oe]),o(()=>(Q&&Ce(!0),()=>{k(de),k(pe),k(ve),k(me)}),[Q,Ce]),o(()=>{de.current&&(k(de),Le(x))},[x,Le]);const Me=null!==(se=null==ge?void 0:ge.content)&&void 0!==se?se:G,Pe=null!=Me,We=ye&&void 0!==fe.tooltipStyles.left,qe=l(()=>({...F,...fe.tooltipStyles,opacity:void 0!==ne&&We?ne:void 0}),[F,fe.tooltipStyles,ne,We]),Fe=l(()=>le?`linear-gradient(to right bottom, transparent 50%, ${le} 50%)`:void 0,[le]),Ve=l(()=>({...fe.tooltipArrowStyles,background:Fe,"--rt-arrow-size":`${ce}px`}),[fe.tooltipArrowStyles,Fe,ce]);s(t,()=>({open:e=>{let t=null;if(null==e?void 0:e.anchorSelect){try{t=document.querySelector(e.anchorSelect)}catch(e){return}if(!t)return}t&&oe(t),Ae(null!=e?e:null),(null==e?void 0:e.delay)?Le(e.delay):Ce(!0)},close:e=>{(null==e?void 0:e.delay)?Ne(e.delay):Ce(!1)},activeAnchor:te,place:fe.place,isOpen:Boolean(be&&!z&&Pe&&We)})),o(()=>()=>{k(de),k(pe),k(ve),k(me)},[]);const Ke=be&&!z&&Pe?e.createElement(R,{id:c,role:ie,className:u("react-tooltip",O.tooltip,C.tooltip,C[v],d,`react-tooltip__place-${fe.place}`,O[We?"show":"closing"],We?"react-tooltip__show":"react-tooltip__closing","fixed"===S&&O.fixed,$&&O.clickable),onTransitionEnd:e=>{k(me),ye||"opacity"!==e.propertyName||(Se(!1),Ae(null),null==Y||Y())},style:qe,ref:ue},e.createElement(R,{className:u("react-tooltip-content-wrapper",O.content,C.content)},Me),e.createElement(R,{className:u("react-tooltip-arrow",O.arrow,C.arrow,p,I&&O.noArrow),style:Ve,ref:ae})):null;return Ke?m?a(Ke,m):Ke:null});const V=new Map;let K=null;const Y={attributes:!0,childList:!1,subtree:!1};function X(e,t){const o=(K||(K=new MutationObserver(e=>{var t;for(const o of e){if("attributes"!==o.type||!(null===(t=o.attributeName)||void 0===t?void 0:t.startsWith("data-tooltip-")))continue;const e=o.target,r=V.get(e);r&&r.forEach(t=>t(e))}})),K);let r=V.get(e);return r||(r=new Set,V.set(e,r),o.observe(e,Y)),r.add(t),()=>{const r=V.get(e);r&&(r.delete(t),0===r.size&&(V.delete(e),0===V.size?o.disconnect():(o.disconnect(),V.forEach((e,t)=>{o.observe(t,Y)}))))}}const G=e.forwardRef(({id:t,anchorSelect:l,content:c,render:s,className:a,classNameArrow:d,variant:p="dark",portalRoot:v,place:m="top",offset:f=10,wrapper:h="div",children:y=null,openOnClick:w=!1,positionStrategy:b="absolute",middlewares:S,delayShow:g=0,delayHide:A=0,autoClose:E,float:_=!1,hidden:T=!1,noArrow:k=!1,clickable:O=!1,openEvents:C,closeEvents:R,globalCloseEvents:x,imperativeModeOnly:L=!1,style:N,position:B,isOpen:z,defaultIsOpen:I=!1,disableStyleInjection:$=!1,border:j,opacity:D,arrowColor:H,arrowSize:M,setIsOpen:P,afterShow:W,afterHide:q,disableTooltip:V,role:K="tooltip"},Y)=>{var G,Z,J,Q,U,ee,te,oe;const[re,ne]=r(null),[le,ce]=r({}),ie=n(null),se=n($),ue=i(e=>{ne(t=>((null==e?void 0:e.isSameNode(t))||(ie.current=t),e))},[]),ae=e=>{const t=null==e?void 0:e.getAttributeNames().reduce((t,o)=>{var r;if(o.startsWith("data-tooltip-")){t[o.replace(/^data-tooltip-/,"")]=null!==(r=null==e?void 0:e.getAttribute(o))&&void 0!==r?r:null}return t},{});return t};o(()=>{se.current},[$]),o(()=>{"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent("react-tooltip-inject-styles",{detail:{disableCore:"core"===$,disableBase:$}}))},[]),o(()=>{if(!re)return ce({}),()=>{};const e=e=>{const t=ae(e);ce(e=>{const o=Object.keys(t),r=Object.keys(e);return o.length===r.length&&o.every(o=>t[o]===e[o])?e:t})};e(re);return X(re,e)},[re,l]),o(()=>{},[j,D,null==N?void 0:N.border,null==N?void 0:N.opacity]);const de=re?ae(re):le,pe=null!==(G=de.content)&&void 0!==G?G:c,ve=null!==(Z=de.place)&&void 0!==Z?Z:m,me=null!==(J=de.variant)&&void 0!==J?J:p,fe=null==de.offset?f:Number(de.offset),he=null!==(Q=de.wrapper)&&void 0!==Q?Q:h,ye=null!==(U=de["position-strategy"])&&void 0!==U?U:b,we=null==de["delay-show"]?g:Number(de["delay-show"]),be=null==de["delay-hide"]?A:Number(de["delay-hide"]),Se=null==de["auto-close"]?E:Number(de["auto-close"]),ge=null==de.float?_:"true"===de.float,Ae=null==de.hidden?T:"true"===de.hidden,Ee=null!==(ee=de["class-name"])&&void 0!==ee?ee:null;let _e=y;const Te=n(null);if(s){const t=s({content:null!==(oe=null!==(te=de.content)&&void 0!==te?te:pe)&&void 0!==oe?oe:null,activeAnchor:re});_e=t?e.createElement("div",{ref:Te,className:"react-tooltip-content-wrapper"},t):null}else null!=pe&&(_e=pe);const ke={forwardRef:Y,id:t,anchorSelect:l,className:u(a,Ee),classNameArrow:d,content:_e,contentWrapperRef:Te,portalRoot:v,place:ve,variant:me,offset:fe,wrapper:he,openOnClick:w,positionStrategy:ye,middlewares:S,delayShow:we,delayHide:be,autoClose:Se,float:ge,hidden:Ae,noArrow:k,clickable:O,openEvents:C,closeEvents:R,globalCloseEvents:x,imperativeModeOnly:L,style:N,position:B,isOpen:z,defaultIsOpen:I,border:j,opacity:D,arrowColor:H,arrowSize:M,setIsOpen:P,afterShow:W,afterHide:q,disableTooltip:V,activeAnchor:re,previousActiveAnchor:ie.current,setActiveAnchor:ue,role:K};return e.createElement(F,{...ke})});var Z=c(G);"undefined"!=typeof window&&window.addEventListener("react-tooltip-inject-styles",e=>{e.detail.disableCore||w({css:`:root{--rt-color-white:#fff;--rt-color-dark:#222;--rt-color-success:#8dc572;--rt-color-error:#be6464;--rt-color-warning:#f0ad4e;--rt-color-info:#337ab7;--rt-opacity:0.9;--rt-transition-show-delay:0.15s;--rt-transition-closing-delay:0.15s;--rt-arrow-size:8px}.core-styles-module_tooltip__3vRRp{position:absolute;top:0;left:0;pointer-events:none;opacity:0}.core-styles-module_fixed__pcSol{position:fixed}.core-styles-module_arrow__cvMwQ{position:absolute;background:inherit;z-index:-1;-webkit-backface-visibility:hidden;backface-visibility:hidden}.core-styles-module_content__BRKdB{position:relative;z-index:1}.core-styles-module_noArrow__xock6{display:none}.core-styles-module_clickable__ZuTTB{pointer-events:auto}.core-styles-module_show__Nt9eE{opacity:var(--rt-opacity);transition:opacity var(--rt-transition-show-delay)ease-out;will-change:opacity}.core-styles-module_closing__sGnxF{opacity:0;transition:opacity var(--rt-transition-closing-delay)ease-in;will-change:opacity}`,type:"core"}),e.detail.disableBase||w({css:`
7
+ import e,{useLayoutEffect as t,useEffect as o,useState as r,useRef as n,useMemo as l,memo as c,useCallback as i,useImperativeHandle as s}from"react";import u from"clsx";import{createPortal as a}from"react-dom";import{flip as d,shift as p,arrow as v,computePosition as m,offset as f,autoUpdate as h}from"@floating-ui/dom";const y={core:!1,base:!1};function w({css:e,id:t="react-tooltip-base-styles",type:o="base",ref:r,state:n={}}){if(!e||"undefined"==typeof document||(void 0!==n[o]?n[o]:y[o]))return;if("core"===o&&"undefined"!=typeof process&&process.env&&process.env.REACT_TOOLTIP_DISABLE_CORE_STYLES)return;if("base"===o&&"undefined"!=typeof process&&process.env&&process.env.REACT_TOOLTIP_DISABLE_BASE_STYLES)return;"core"===o&&(t="react-tooltip-core-styles"),r||(r={});const{insertAt:l}=r;if(document.getElementById(t))return;const c=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.id=t,i.type="text/css","top"===l&&c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e)),void 0!==n[o]?n[o]=!0:y[o]=!0}const b=d({fallbackAxisSideDirection:"start"}),S=p({padding:5}),g=async({elementReference:e=null,tooltipReference:t=null,tooltipArrowReference:o=null,place:r="top",offset:n=10,strategy:l="absolute",middlewares:c=[f(Number(n)),b,S],border:i,arrowSize:s=8})=>{if(!e)return{tooltipStyles:{},tooltipArrowStyles:{},place:r};if(null===t)return{tooltipStyles:{},tooltipArrowStyles:{},place:r};const u=[...c];return o?(u.push(v({element:o,padding:5})),m(e,t,{placement:r,strategy:l,middleware:u}).then(({x:e,y:t,placement:o,middlewareData:r})=>{var n,l;const c={left:`${e}px`,top:`${t}px`,border:i},{x:u,y:a}=null!==(n=r.arrow)&&void 0!==n?n:{x:0,y:0},d=null!==(l={top:"bottom",right:"left",bottom:"top",left:"right"}[o.split("-")[0]])&&void 0!==l?l:"bottom",p=i&&{borderBottom:i,borderRight:i};let v=0;if(i){const e=`${i}`.match(/(\d+)px/);v=(null==e?void 0:e[1])?Number(e[1]):1}return{tooltipStyles:c,tooltipArrowStyles:{left:null!=u?`${u}px`:"",top:null!=a?`${a}px`:"",right:"",bottom:"",...p,[d]:`-${s/2+v-1}px`},place:o}})):m(e,t,{placement:"bottom",strategy:l,middleware:u}).then(({x:e,y:t,placement:o})=>({tooltipStyles:{left:`${e}px`,top:`${t}px`},tooltipArrowStyles:{},place:o}))},A=(e,t,o)=>{let r=null,n=e;const l=function(...e){const o=()=>{r=null};r||(n.apply(this,e),r=setTimeout(o,t))};return l.cancel=()=>{r&&(clearTimeout(r),r=null)},l.setCallback=e=>{n=e},l},E=e=>{if(!(e instanceof HTMLElement||e instanceof SVGElement))return!1;const t=getComputedStyle(e);return["overflow","overflow-x","overflow-y"].some(e=>{const o=t.getPropertyValue(e);return"auto"===o||"scroll"===o})},_=e=>{if(!e)return null;let t=e.parentElement;for(;t;){if(E(t))return t;t=t.parentElement}return document.scrollingElement||document.documentElement},T="undefined"!=typeof window&&void 0!==window.document&&void 0!==window.document.createElement?t:o,k=e=>{e.current&&(clearTimeout(e.current),e.current=null)};var O={tooltip:"core-styles-module_tooltip__3vRRp",fixed:"core-styles-module_fixed__pcSol",arrow:"core-styles-module_arrow__cvMwQ",content:"core-styles-module_content__BRKdB",noArrow:"core-styles-module_noArrow__xock6",clickable:"core-styles-module_clickable__ZuTTB",show:"core-styles-module_show__Nt9eE",closing:"core-styles-module_closing__sGnxF"},C={tooltip:"styles-module_tooltip__mnnfp",content:"styles-module_content__ydYdI",arrow:"styles-module_arrow__K0L3T",dark:"styles-module_dark__xNqje",light:"styles-module_light__Z6W-X",success:"styles-module_success__A2AKt",warning:"styles-module_warning__SCK0X",error:"styles-module_error__JvumD",info:"styles-module_info__BWdHW"};const R=new Map;let x=null;function L(e){const t=e.match(/^\[data-tooltip-id=(['"])((?:\\.|(?!\1).)*)\1\]$/);return t?t[2].replace(/\\(['"])/g,"$1"):null}function N(e){try{return{anchors:Array.from(document.querySelectorAll(e)),error:null}}catch(e){return{anchors:[],error:e instanceof Error?e:new Error(String(e))}}}function B(e,t){var o,r,n,l;const c=N(e),i=null!==(r=null===(o=c.error)||void 0===o?void 0:o.message)&&void 0!==r?r:null,s=null!==(l=null===(n=t.error)||void 0===n?void 0:n.message)&&void 0!==l?l:null;if(u=t.anchors,a=c.anchors,u.length===a.length&&u.every((e,t)=>e===a[t])&&i===s)return;var u,a;const d={...t,anchors:c.anchors,error:c.error};R.set(e,d),function(e){e.subscribers.forEach(t=>t(e.anchors,e.error))}(d)}let z=!1,$=null,I=!1;function j(e){if(e?($||($=new Set),e.forEach(e=>$.add(e))):I=!0,z)return;z=!0;const t=()=>{z=!1;const e=I,t=$;var o;I=!1,$=null,e?R.forEach((e,t)=>{B(t,e)}):t&&t.size>0&&(o=t,R.forEach((e,t)=>{(null===e.tooltipId||o.has(e.tooltipId))&&B(t,e)}))};"function"==typeof requestAnimationFrame?requestAnimationFrame(t):Promise.resolve().then(t)}function D(){x||"undefined"==typeof MutationObserver||(x=new MutationObserver(e=>{const t=function(e){var t;if(R.size<=4)return null;const o=new Set;for(const r of e){if("attributes"===r.type){const e=r.target,n=null===(t=e.getAttribute)||void 0===t?void 0:t.call(e,"data-tooltip-id");n&&o.add(n),r.oldValue&&o.add(r.oldValue);continue}if("childList"===r.type){const e=e=>{var t,r;for(let n=0;n<e.length;n++){const l=e[n];if(l.nodeType!==Node.ELEMENT_NODE)continue;const c=l,i=null===(t=c.getAttribute)||void 0===t?void 0:t.call(c,"data-tooltip-id");i&&o.add(i);const s=null===(r=c.querySelectorAll)||void 0===r?void 0:r.call(c,"[data-tooltip-id]");if(s){if(s.length>50)return!0;for(let e=0;e<s.length;e++){const t=s[e].getAttribute("data-tooltip-id");t&&o.add(t)}}}return!1};if(e(r.addedNodes)||e(r.removedNodes))return null;continue}}return o}(e);j(t)}),x.observe(document.body,{childList:!0,subtree:!0,attributes:!0,attributeFilter:["data-tooltip-id"],attributeOldValue:!0}))}function H(e,t){let o=R.get(e);if(!o){const t=N(e);o={anchors:t.anchors,error:t.error,subscribers:new Set,tooltipId:L(e)},R.set(e,o)}return o.subscribers.add(t),D(),t([...o.anchors],o.error),()=>{const o=R.get(e);o&&(o.subscribers.delete(t),0===o.subscribers.size&&R.delete(e),0===R.size&&x&&(x.disconnect(),x=null))}}const M=new Map;function P(e,t){return`${e}:${t?"capture":"bubble"}`}function W(e,t,o={}){const r=Boolean(o.capture),n=P(e,r),l=function(e,t){const o=P(e,t);let r=M.get(o);if(!r){const n=new Set,l=e=>{n.forEach(t=>{t(e)})};r={handlers:n,dispatch:l,eventType:e,capture:t},M.set(o,r),document.addEventListener(e,l,{capture:t})}return r}(e,r);return l.handlers.add(t),()=>{l.handlers.delete(t),0===l.handlers.size&&(M.delete(n),document.removeEventListener(e,l.dispatch,{capture:r}))}}let q=null;var F=c(({forwardRef:t,id:c,className:d,classNameArrow:p,variant:v="dark",portalRoot:m,anchorSelect:f,place:y="top",offset:w=10,openOnClick:b=!1,positionStrategy:S="absolute",middlewares:E,wrapper:R,delayShow:x=0,delayHide:L=0,autoClose:N,float:B=!1,hidden:z=!1,noArrow:$=!1,clickable:I=!1,openEvents:j,closeEvents:D,globalCloseEvents:M,imperativeModeOnly:P,style:F,position:V,afterShow:K,afterHide:Y,disableTooltip:X,content:G,contentWrapperRef:Z,isOpen:J,defaultIsOpen:Q=!1,setIsOpen:U,previousActiveAnchor:ee,activeAnchor:te,setActiveAnchor:oe,border:re,opacity:ne,arrowColor:le,arrowSize:ce=8,role:ie="tooltip"})=>{var se;const ue=n(null),ae=n(null),de=n(null),pe=n(null),ve=n(null),me=n(null),[fe,he]=r({tooltipStyles:{},tooltipArrowStyles:{},place:y}),[ye,we]=r(!1),[be,Se]=r(!1),[ge,Ae]=r(null),Ee=n(!1),_e=n(null),Te=n(!1),ke=n(!1),Oe=n({getBoundingClientRect:()=>({x:0,y:0,width:0,height:0,top:0,left:0,right:0,bottom:0})});T(()=>(ke.current=!0,()=>{ke.current=!1}),[]);const Ce=i(e=>{ke.current&&(e&&Se(!0),setTimeout(()=>{ke.current&&(null==U||U(e),void 0===J&&we(e))},10))},[J,U]);o(()=>{if(c){if(ye){t(ee);const o=e(te),r=[...new Set([...o,c])].filter(Boolean).join(" ");null==te||te.setAttribute("aria-describedby",r)}else t(te);return()=>{t(te),t(ee)}}function e(e){var t;return(null===(t=null==e?void 0:e.getAttribute("aria-describedby"))||void 0===t?void 0:t.split(" "))||[]}function t(t){const o=e(t).filter(e=>e!==c);o.length?null==t||t.setAttribute("aria-describedby",o.join(" ")):null==t||t.removeAttribute("aria-describedby")}},[te,ye,c,ee]),o(()=>{if(void 0===J)return()=>null;J&&Se(!0);const e=setTimeout(()=>{we(J)},10);return()=>{clearTimeout(e)}},[J]),o(()=>{if(ye!==Ee.current)if(k(me),Ee.current=ye,ye)null==K||K();else{if(null===q){const e=getComputedStyle(document.body);q=(e=>{const t=e.match(/^([\d.]+)(m?s)$/);if(!t)return 0;const[,o,r]=t;return Number(o)*("ms"===r?1:1e3)})(e.getPropertyValue("--rt-transition-show-delay"))}const e=q;me.current=setTimeout(()=>{Se(!1),Ae(null),null==Y||Y()},e+25)}},[Y,K,ye]),o(()=>(k(ve),!ye||!N||N<=0||(ve.current=setTimeout(()=>{Ce(!1)},N)),()=>{k(ve)}),[te,N,Ce,ye]);const Re=i(e=>{ke.current&&he(t=>t.place===e.place&&t.tooltipStyles.left===e.tooltipStyles.left&&t.tooltipStyles.top===e.tooltipStyles.top&&t.tooltipStyles.border===e.tooltipStyles.border&&t.tooltipArrowStyles.left===e.tooltipArrowStyles.left&&t.tooltipArrowStyles.top===e.tooltipArrowStyles.top&&t.tooltipArrowStyles.right===e.tooltipArrowStyles.right&&t.tooltipArrowStyles.bottom===e.tooltipArrowStyles.bottom&&t.tooltipArrowStyles.borderBottom===e.tooltipArrowStyles.borderBottom&&t.tooltipArrowStyles.borderRight===e.tooltipArrowStyles.borderRight?t:e)},[]),xe=n(be);xe.current=be;const Le=i((e=x)=>{de.current&&clearTimeout(de.current),xe.current?Ce(!0):de.current=setTimeout(()=>{Ce(!0)},e)},[x,Ce]),Ne=i((e=L)=>{pe.current&&clearTimeout(pe.current),pe.current=setTimeout(()=>{Te.current||Ce(!1)},e)},[L,Ce]),Be=i(({x:e,y:t})=>{var o;Oe.current.getBoundingClientRect=()=>({x:e,y:t,width:0,height:0,top:t,left:e,right:e,bottom:t}),g({place:null!==(o=null==ge?void 0:ge.place)&&void 0!==o?o:y,offset:w,elementReference:Oe.current,tooltipReference:ue.current,tooltipArrowReference:ae.current,strategy:S,middlewares:E,border:re,arrowSize:ce}).then(e=>{Re(e)})},[null==ge?void 0:ge.place,y,w,S,E,re,ce,Re]),ze=i(()=>{var e,t;const o=null!==(e=null==ge?void 0:ge.position)&&void 0!==e?e:V;o?Be(o):B?_e.current&&Be(_e.current):(null==te?void 0:te.isConnected)&&g({place:null!==(t=null==ge?void 0:ge.place)&&void 0!==t?t:y,offset:w,elementReference:te,tooltipReference:ue.current,tooltipArrowReference:ae.current,strategy:S,middlewares:E,border:re,arrowSize:ce}).then(e=>{ke.current&&Re(e)})},[null==ge?void 0:ge.position,null==ge?void 0:ge.place,V,B,te,y,w,S,E,re,Be,Re,ce]),$e=i(()=>{Se(!1),Ce(!1),oe(null),k(de),k(pe),k(ve)},[Ce,oe]),Ie=be||Q||Boolean(J)||Boolean(te)||Boolean(null==ge?void 0:ge.anchorSelect),{anchorElements:je,selector:De}=(({id:e,anchorSelect:t,imperativeAnchorSelect:c,activeAnchor:i,disableTooltip:s,onActiveAnchorRemoved:u,trackAnchors:a})=>{const[d,p]=r([]),[v,m]=r(null),f=n(null),h=l(()=>(({id:e,anchorSelect:t,imperativeAnchorSelect:o})=>{var r;let n=null!==(r=null!=o?o:t)&&void 0!==r?r:"";return!n&&e&&(n=`[data-tooltip-id='${e.replace(/'/g,"\\'")}']`),n})({id:e,anchorSelect:t,imperativeAnchorSelect:c}),[e,t,c]),y=l(()=>d.filter(e=>!(null==s?void 0:s(e))),[d,s]),w=l(()=>{if(!i||!h)return!1;try{return i.matches(h)}catch(e){return!1}},[i,h,y]);return o(()=>h&&a?H(h,(e,t)=>{p(e),m(t)}):(p([]),void m(null)),[h,a]),o(()=>{v&&f.current!==h&&(f.current=h)},[h,v]),o(()=>{i&&(i.isConnected&&(y.includes(i)||w)||u())},[i,y,w,u]),{anchorElements:y,selector:h}})({id:c,anchorSelect:f,imperativeAnchorSelect:null==ge?void 0:ge.anchorSelect,activeAnchor:te,disableTooltip:X,onActiveAnchorRemoved:$e,trackAnchors:Ie});(({activeAnchor:e,anchorElements:t,anchorSelector:r,clickable:c,closeEvents:i,delayHide:s,delayShow:u,disableTooltip:a,float:d,globalCloseEvents:p,handleHideTooltipDelayed:v,handleShow:m,handleShowTooltipDelayed:f,handleTooltipPosition:y,hoveringTooltip:w,imperativeModeOnly:b,lastFloatPosition:S,openEvents:g,openOnClick:E,rendered:T,setActiveAnchor:O,show:C,tooltipHideDelayTimerRef:R,tooltipRef:x,tooltipShowDelayTimerRef:L,updateTooltipPosition:N})=>{const B=n(A(e=>{},50)),z=n(A(()=>{},50)),$=n(null),I=n(null),j=n(null),D=n(null);e!==j.current&&(j.current=e,$.current=_(e));const H=x.current;H!==D.current&&(D.current=H,I.current=_(H));const M=E||(null==g?void 0:g.click)||(null==g?void 0:g.dblclick)||(null==g?void 0:g.mousedown),P=l(()=>{const e=g?{...g}:{mouseenter:!0,focus:!0,click:!1,dblclick:!1,mousedown:!1};return!g&&E&&Object.assign(e,{mouseenter:!1,focus:!1,click:!0}),b&&Object.assign(e,{mouseenter:!1,focus:!1,click:!1,dblclick:!1,mousedown:!1}),e},[g,E,b]),q=l(()=>{const e=i?{...i}:{mouseleave:!0,blur:!0,click:!1,dblclick:!1,mouseup:!1};return!i&&E&&Object.assign(e,{mouseleave:!1,blur:!1}),b&&Object.assign(e,{mouseleave:!1,blur:!1,click:!1,dblclick:!1,mouseup:!1}),e},[i,E,b]),F=l(()=>{const e=p?{...p}:{escape:!1,scroll:!1,resize:!1,clickOutsideAnchor:M||!1};return b&&Object.assign(e,{escape:!1,scroll:!1,resize:!1,clickOutsideAnchor:!1}),e},[p,M,b]),V=n(e);V.current=e;const K=n(C);K.current=C;const Y=n(t);Y.current=t;const X=n(m);X.current=m;const G=n(y);G.current=y;const Z=n(N);Z.current=N;const J=n(()=>null),Q=n(()=>{}),U=n(()=>{}),ee=r?function(e){const t=e.match(/^\[data-tooltip-id=(['"])((?:\\.|(?!\1).)*)\1\]$/);return t?t[2].replace(/\\(['"])/g,"$1"):null}(r):null;J.current=e=>{var t,o;const n=e;if(!(null==n?void 0:n.isConnected))return null;if(ee){const e=function(e,t){let o=e;for(;o;){if(o.dataset.tooltipId===t)return o;o=o.parentElement}return null}(n,ee);if(e&&!(null==a?void 0:a(e)))return e}else if(r)try{const e=null!==(t=n.matches(r)?n:n.closest(r))&&void 0!==t?t:null;if(e&&!(null==a?void 0:a(e)))return e}catch(e){return null}return null!==(o=Y.current.find(e=>e===n||e.contains(n)))&&void 0!==o?o:null},Q.current=e=>{e&&(e.isConnected?(null==a?void 0:a(e))||(u&&V.current&&e!==V.current?(L.current&&clearTimeout(L.current),L.current=setTimeout(()=>{O(e),m(!0)},u)):(O(e),u?f():m(!0)),R.current&&clearTimeout(R.current)):O(null))},U.current=()=>{c?v(s||100):s?v():m(!1),L.current&&clearTimeout(L.current)};const te=B.current,oe=z.current;te.setCallback(e=>Q.current(e)),oe.setCallback(()=>U.current()),o(()=>{const e=[],t=(t,o,r)=>{e.push(W(t,o,r))},o=e=>{var t;return Boolean((null==e?void 0:e.target)&&(null===(t=V.current)||void 0===t?void 0:t.contains(e.target)))},r=e=>{oe.cancel(),te(e)},n=()=>{te.cancel(),oe()},l=()=>{t("mouseover",e=>{const t=J.current(e.target);t&&J.current(e.relatedTarget)!==t&&r(t)})},i=()=>{t("mouseout",e=>{const t=J.current(e.target);if(!t&&!o(e))return;const r=e.relatedTarget,l=t||V.current;(null==l?void 0:l.contains(r))||n()})};P.mouseenter&&l(),q.mouseleave&&i(),P.mouseover&&l(),q.mouseout&&i(),P.focus&&t("focusin",e=>{r(J.current(e.target))}),q.blur&&t("focusout",e=>{const t=J.current(e.target);if(!t&&!o(e))return;const r=e.relatedTarget,l=t||V.current;(null==l?void 0:l.contains(r))||n()});const s=["mouseover","mouseout","mouseenter","mouseleave","focus","blur"],u=["click","dblclick","mousedown","mouseup"],a=e=>{var t;const o=J.current(null!==(t=null==e?void 0:e.target)&&void 0!==t?t:null);o&&(K.current&&V.current===o||Q.current(o))},p=e=>{K.current&&o(e)&&U.current()};Object.entries(P).forEach(([e,o])=>{o&&!s.includes(e)&&u.includes(e)&&t(e,a,{capture:!0})}),Object.entries(q).forEach(([e,o])=>{o&&!s.includes(e)&&u.includes(e)&&t(e,p,{capture:!0})}),d&&t("pointermove",e=>{const t=V.current;if(!t)return;if(J.current(e.target)!==t)return;const o=e,r={x:o.clientX,y:o.clientY};G.current(r),S.current=r});const v=x.current,m=()=>{w.current=!0},f=()=>{w.current=!1,U.current()},h=c&&(q.mouseout||q.mouseleave);return h&&(null==v||v.addEventListener("mouseover",m),null==v||v.addEventListener("mouseout",f)),()=>{e.forEach(e=>e()),h&&(null==v||v.removeEventListener("mouseover",m),null==v||v.removeEventListener("mouseout",f)),te.cancel(),oe.cancel()}},[P,q,d,c,T]),o(()=>{const t=()=>{X.current(!1)},o=I.current,r=$.current;F.scroll&&(window.addEventListener("scroll",t),null==r||r.addEventListener("scroll",t),null==o||o.addEventListener("scroll",t));let n=null;F.resize?window.addEventListener("resize",t):e&&x.current&&(n=h(e,x.current,()=>Z.current(),{ancestorResize:!0,elementResize:!0,layoutShift:!0}));const l=e=>{"Escape"===e.key&&X.current(!1)};F.escape&&window.addEventListener("keydown",l);const c=e=>{var t,o;if(!K.current)return;const r=e.target;(null==r?void 0:r.isConnected)&&((null===(t=x.current)||void 0===t?void 0:t.contains(r))||(null===(o=V.current)||void 0===o?void 0:o.contains(r))||Y.current.some(e=>null==e?void 0:e.contains(r))||(X.current(!1),k(L)))};return F.clickOutsideAnchor&&window.addEventListener("click",c),()=>{F.scroll&&(window.removeEventListener("scroll",t),null==r||r.removeEventListener("scroll",t),null==o||o.removeEventListener("scroll",t)),F.resize&&window.removeEventListener("resize",t),n&&n(),F.escape&&window.removeEventListener("keydown",l),F.clickOutsideAnchor&&window.removeEventListener("click",c)}},[F,e])})({activeAnchor:te,anchorElements:je,anchorSelector:De,clickable:I,closeEvents:D,delayHide:L,delayShow:x,disableTooltip:X,float:B,globalCloseEvents:M,handleHideTooltipDelayed:Ne,handleShow:Ce,handleShowTooltipDelayed:Le,handleTooltipPosition:Be,hoveringTooltip:Te,imperativeModeOnly:P,lastFloatPosition:_e,openEvents:j,openOnClick:b,rendered:be,setActiveAnchor:oe,show:ye,tooltipHideDelayTimerRef:pe,tooltipRef:ue,tooltipShowDelayTimerRef:de,updateTooltipPosition:ze});const He=n(ze);He.current=ze,o(()=>{be&&ze()},[be,ze]),o(()=>{if(!be||!(null==Z?void 0:Z.current))return()=>null;let e=null;const t=new ResizeObserver(()=>{e&&clearTimeout(e),e=setTimeout(()=>{ke.current&&He.current(),e=null},0)});return t.observe(Z.current),()=>{t.disconnect(),e&&clearTimeout(e)}},[G,Z,be]),o(()=>{var e;if(!(Q||Boolean(J)))return;const t=(()=>{if(!te||!(null==ge?void 0:ge.anchorSelect))return!1;try{return te.matches(ge.anchorSelect)}catch(e){return!1}})();if(!te||!je.includes(te)){if(t)return;oe(null!==(e=je[0])&&void 0!==e?e:null)}},[te,je,Q,null==ge?void 0:ge.anchorSelect,J,be,oe]),o(()=>(Q&&Ce(!0),()=>{k(de),k(pe),k(ve),k(me)}),[Q,Ce]),o(()=>{de.current&&(k(de),Le(x))},[x,Le]);const Me=null!==(se=null==ge?void 0:ge.content)&&void 0!==se?se:G,Pe=null!=Me,We=ye&&void 0!==fe.tooltipStyles.left,qe=l(()=>({...F,...fe.tooltipStyles,opacity:void 0!==ne&&We?ne:void 0}),[F,fe.tooltipStyles,ne,We]),Fe=l(()=>le?`linear-gradient(to right bottom, transparent 50%, ${le} 50%)`:void 0,[le]),Ve=l(()=>({...fe.tooltipArrowStyles,background:Fe,"--rt-arrow-size":`${ce}px`}),[fe.tooltipArrowStyles,Fe,ce]);s(t,()=>({open:e=>{let t=null;if(null==e?void 0:e.anchorSelect){try{t=document.querySelector(e.anchorSelect)}catch(e){return}if(!t)return}t&&oe(t),Ae(null!=e?e:null),(null==e?void 0:e.delay)?Le(e.delay):Ce(!0)},close:e=>{(null==e?void 0:e.delay)?Ne(e.delay):Ce(!1)},activeAnchor:te,place:fe.place,isOpen:Boolean(be&&!z&&Pe&&We)})),o(()=>()=>{k(de),k(pe),k(ve),k(me)},[]);const Ke=be&&!z&&Pe?e.createElement(R,{id:c,role:ie,className:u("react-tooltip",O.tooltip,C.tooltip,C[v],d,`react-tooltip__place-${fe.place}`,O[We?"show":"closing"],We?"react-tooltip__show":"react-tooltip__closing","fixed"===S&&O.fixed,I&&O.clickable),onTransitionEnd:e=>{k(me),ye||"opacity"!==e.propertyName||(Se(!1),Ae(null),null==Y||Y())},style:qe,ref:ue},e.createElement(R,{className:u("react-tooltip-content-wrapper",O.content,C.content)},Me),e.createElement(R,{className:u("react-tooltip-arrow",O.arrow,C.arrow,p,$&&O.noArrow),style:Ve,ref:ae})):null;return Ke?m?a(Ke,m):Ke:null});const V=new Map;let K=null;const Y={attributes:!0,childList:!1,subtree:!1};function X(e,t){const o=(K||(K=new MutationObserver(e=>{var t;for(const o of e){if("attributes"!==o.type||!(null===(t=o.attributeName)||void 0===t?void 0:t.startsWith("data-tooltip-")))continue;const e=o.target,r=V.get(e);r&&r.forEach(t=>t(e))}})),K);let r=V.get(e);return r||(r=new Set,V.set(e,r),o.observe(e,Y)),r.add(t),()=>{const r=V.get(e);r&&(r.delete(t),0===r.size&&(V.delete(e),0===V.size?o.disconnect():(o.disconnect(),V.forEach((e,t)=>{o.observe(t,Y)}))))}}const G=e.forwardRef(({id:t,anchorSelect:l,content:c,render:s,className:a,classNameArrow:d,variant:p="dark",portalRoot:v,place:m="top",offset:f=10,wrapper:h="div",children:y=null,openOnClick:w=!1,positionStrategy:b="absolute",middlewares:S,delayShow:g=0,delayHide:A=0,autoClose:E,float:_=!1,hidden:T=!1,noArrow:k=!1,clickable:O=!1,openEvents:C,closeEvents:R,globalCloseEvents:x,imperativeModeOnly:L=!1,style:N,position:B,isOpen:z,defaultIsOpen:$=!1,disableStyleInjection:I=!1,border:j,opacity:D,arrowColor:H,arrowSize:M,setIsOpen:P,afterShow:W,afterHide:q,disableTooltip:V,role:K="tooltip"},Y)=>{var G,Z,J,Q,U,ee,te,oe;const[re,ne]=r(null),[le,ce]=r({}),ie=n(null),se=n(I),ue=i(e=>{ne(t=>((null==e?void 0:e.isSameNode(t))||(ie.current=t),e))},[]),ae=e=>{const t=null==e?void 0:e.getAttributeNames().reduce((t,o)=>{var r;if(o.startsWith("data-tooltip-")){t[o.replace(/^data-tooltip-/,"")]=null!==(r=null==e?void 0:e.getAttribute(o))&&void 0!==r?r:null}return t},{});return t};o(()=>{se.current},[I]),o(()=>{"undefined"!=typeof window&&window.dispatchEvent(new CustomEvent("react-tooltip-inject-styles",{detail:{disableCore:"core"===I,disableBase:I}}))},[]),o(()=>{if(!re)return ce({}),()=>{};const e=e=>{const t=ae(e);ce(e=>{const o=Object.keys(t),r=Object.keys(e);return o.length===r.length&&o.every(o=>t[o]===e[o])?e:t})};e(re);return X(re,e)},[re,l]),o(()=>{},[j,D,null==N?void 0:N.border,null==N?void 0:N.opacity]);const de=re?ae(re):le,pe=null!==(G=de.content)&&void 0!==G?G:c,ve=null!==(Z=de.place)&&void 0!==Z?Z:m,me=null!==(J=de.variant)&&void 0!==J?J:p,fe=null==de.offset?f:Number(de.offset),he=null!==(Q=de.wrapper)&&void 0!==Q?Q:h,ye=null!==(U=de["position-strategy"])&&void 0!==U?U:b,we=null==de["delay-show"]?g:Number(de["delay-show"]),be=null==de["delay-hide"]?A:Number(de["delay-hide"]),Se=null==de["auto-close"]?E:Number(de["auto-close"]),ge=null==de.float?_:"true"===de.float,Ae=null==de.hidden?T:"true"===de.hidden,Ee=null!==(ee=de["class-name"])&&void 0!==ee?ee:null;let _e=y;const Te=n(null);if(s){const t=s({content:null!==(oe=null!==(te=de.content)&&void 0!==te?te:pe)&&void 0!==oe?oe:null,activeAnchor:re});_e=t?e.createElement("div",{ref:Te,className:"react-tooltip-content-wrapper"},t):null}else null!=pe&&(_e=pe);const ke={forwardRef:Y,id:t,anchorSelect:l,className:u(a,Ee),classNameArrow:d,content:_e,contentWrapperRef:Te,portalRoot:v,place:ve,variant:me,offset:fe,wrapper:he,openOnClick:w,positionStrategy:ye,middlewares:S,delayShow:we,delayHide:be,autoClose:Se,float:ge,hidden:Ae,noArrow:k,clickable:O,openEvents:C,closeEvents:R,globalCloseEvents:x,imperativeModeOnly:L,style:N,position:B,isOpen:z,defaultIsOpen:$,border:j,opacity:D,arrowColor:H,arrowSize:M,setIsOpen:P,afterShow:W,afterHide:q,disableTooltip:V,activeAnchor:re,previousActiveAnchor:ie.current,setActiveAnchor:ue,role:K};return e.createElement(F,{...ke})});var Z=c(G);"undefined"!=typeof window&&window.addEventListener("react-tooltip-inject-styles",e=>{e.detail.disableCore||w({css:`:root{--rt-color-white:#fff;--rt-color-dark:#222;--rt-color-success:#8dc572;--rt-color-error:#be6464;--rt-color-warning:#f0ad4e;--rt-color-info:#337ab7;--rt-opacity:0.9;--rt-transition-show-delay:0.15s;--rt-transition-closing-delay:0.15s;--rt-arrow-size:8px}.core-styles-module_tooltip__3vRRp{position:absolute;top:0;left:0;pointer-events:none;opacity:0}.core-styles-module_fixed__pcSol{position:fixed}.core-styles-module_arrow__cvMwQ{position:absolute;background:inherit;z-index:-1;-webkit-backface-visibility:hidden;backface-visibility:hidden}.core-styles-module_content__BRKdB{position:relative;z-index:1}.core-styles-module_noArrow__xock6{display:none}.core-styles-module_clickable__ZuTTB{pointer-events:auto}.core-styles-module_show__Nt9eE{opacity:var(--rt-opacity);transition:opacity var(--rt-transition-show-delay)ease-out;will-change:opacity}.core-styles-module_closing__sGnxF{opacity:0;transition:opacity var(--rt-transition-closing-delay)ease-in;will-change:opacity}`,type:"core"}),e.detail.disableBase||w({css:`
8
8
  .styles-module_tooltip__mnnfp{border-radius:3px;font-size:90%;width:max-content}.styles-module_content__ydYdI{background:inherit;border-radius:inherit;padding:8px 16px}.styles-module_arrow__K0L3T{width:var(--rt-arrow-size);height:var(--rt-arrow-size)}[class*='react-tooltip__place-top']>.styles-module_arrow__K0L3T{transform:rotate(45deg)}[class*='react-tooltip__place-right']>.styles-module_arrow__K0L3T{transform:rotate(135deg)}[class*='react-tooltip__place-bottom']>.styles-module_arrow__K0L3T{transform:rotate(225deg)}[class*='react-tooltip__place-left']>.styles-module_arrow__K0L3T{transform:rotate(315deg)}.styles-module_dark__xNqje{background:var(--rt-color-dark);color:var(--rt-color-white)}.styles-module_light__Z6W-X{background-color:var(--rt-color-white);color:var(--rt-color-dark)}.styles-module_success__A2AKt{background-color:var(--rt-color-success);color:var(--rt-color-white)}.styles-module_warning__SCK0X{background-color:var(--rt-color-warning);color:var(--rt-color-white)}.styles-module_error__JvumD{background-color:var(--rt-color-error);color:var(--rt-color-white)}.styles-module_info__BWdHW{background-color:var(--rt-color-info);color:var(--rt-color-white)}`,type:"base"})});export{Z as Tooltip};
9
9
  //# sourceMappingURL=react-tooltip.min.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"react-tooltip.min.mjs","sources":["../../src/utils/handle-style.ts","../../src/utils/compute-tooltip-position.ts","../../src/utils/debounce.ts","../../src/utils/get-scroll-parent.ts","../../src/utils/use-isomorphic-layout-effect.ts","../../src/utils/clear-timeout-ref.ts","../../src/components/Tooltip/anchor-registry.ts","../../src/components/Tooltip/use-tooltip-anchors.tsx","../../src/components/Tooltip/event-delegation.ts","../../src/components/Tooltip/Tooltip.tsx","../../src/utils/css-time-to-ms.ts","../../src/components/Tooltip/use-tooltip-events.tsx","../../src/utils/parse-data-tooltip-id-selector.ts","../../src/utils/resolve-data-tooltip-anchor.ts","../../src/components/TooltipController/shared-attribute-observer.ts","../../src/components/TooltipController/TooltipController.tsx","../../src/index.tsx"],"names":["injected","core","base","injectStyle","css","id","type","ref","state","document","process","env","REACT_TOOLTIP_DISABLE_CORE_STYLES","REACT_TOOLTIP_DISABLE_BASE_STYLES","insertAt","getElementById","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","defaultFlip","flip","fallbackAxisSideDirection","defaultShift","shift","padding","computeTooltipPosition","async","elementReference","tooltipReference","tooltipArrowReference","place","offset","offsetValue","strategy","middlewares","Number","border","arrowSize","tooltipStyles","tooltipArrowStyles","middleware","push","arrow","element","computePosition","placement","then","x","y","middlewareData","styles","left","top","arrowX","arrowY","_a","staticSide","_b","right","bottom","split","borderSide","borderBottom","borderRight","borderWidth","match","debounce","func","wait","immediate","timeout","currentFunc","debounced","args","later","apply","this","setTimeout","cancel","clearTimeout","setCallback","newFunc","isScrollable","node","HTMLElement","SVGElement","getComputedStyle","some","propertyName","value","getPropertyValue","getScrollParent","currentParent","parentElement","scrollingElement","documentElement","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","clearTimeoutRef","current","registry","Map","documentObserver","extractTooltipId","selector","replace","readAnchorsForSelector","anchors","Array","from","querySelectorAll","error","Error","String","refreshEntry","entry","nextState","nextErrorMessage","message","previousErrorMessage","_d","_c","length","every","anchor","index","nextEntry","set","subscribers","forEach","subscriber","notifySubscribers","refreshScheduled","pendingTooltipIds","pendingFullRefresh","scheduleRefresh","affectedTooltipIds","Set","add","flush","fullRefresh","ids","affectedIds","size","tooltipId","has","requestAnimationFrame","Promise","resolve","ensureDocumentObserver","MutationObserver","records","record","target","currentId","getAttribute","call","oldValue","gatherIds","nodes","i","nodeType","Node","ELEMENT_NODE","el","descendants","j","descId","addedNodes","removedNodes","collectAffectedTooltipIds","observe","body","childList","subtree","attributes","attributeFilter","attributeOldValue","subscribeAnchorSelector","get","initialState","currentEntry","delete","disconnect","handlersByType","dispatch","event","handlers","handler","addDelegatedEventListener","eventType","addEventListener","getOrCreateSet","removeEventListener","globalTransitionShowDelay","Tooltip$1","memo","forwardRef","className","classNameArrow","variant","portalRoot","anchorSelect","openOnClick","positionStrategy","wrapper","WrapperElement","delayShow","delayHide","autoClose","float","hidden","noArrow","clickable","openEvents","closeEvents","globalCloseEvents","imperativeModeOnly","externalStyles","position","afterShow","afterHide","disableTooltip","content","contentWrapperRef","isOpen","defaultIsOpen","setIsOpen","previousActiveAnchor","activeAnchor","setActiveAnchor","opacity","arrowColor","role","tooltipRef","useRef","tooltipArrowRef","tooltipShowDelayTimerRef","tooltipHideDelayTimerRef","tooltipAutoCloseTimerRef","missedTransitionTimerRef","computedPosition","setComputedPosition","useState","show","setShow","rendered","setRendered","imperativeOptions","setImperativeOptions","wasShowing","lastFloatPosition","hoveringTooltip","mounted","virtualElementRef","getBoundingClientRect","width","height","handleShow","useCallback","undefined","removeAriaDescribedBy","currentDescribedBy","getAriaDescribedBy","describedBy","filter","Boolean","join","setAttribute","newDescribedBy","s","removeAttribute","time","amount","unit","cssTimeToMs","transitionShowDelay","handleComputedPosition","newComputedPosition","oldComputedPosition","renderedRef","handleShowTooltipDelayed","delay","handleHideTooltipDelayed","handleTooltipPosition","computedStylesData","updateTooltipPosition","actualPosition","isConnected","handleActiveAnchorRemoved","shouldTrackAnchors","anchorElements","anchorSelector","imperativeAnchorSelect","onActiveAnchorRemoved","trackAnchors","rawAnchorElements","setRawAnchorElements","selectorError","setSelectorError","warnedSelectorRef","useMemo","getAnchorSelector","activeAnchorMatchesSelector","matches","includes","useTooltipAnchors","debouncedShowRef","_anchor","debouncedHideRef","anchorScrollParentRef","tooltipScrollParentRef","prevAnchorRef","prevTooltipRef","currentTooltipEl","hasClickEvent","click","dblclick","mousedown","actualOpenEvents","events","mouseenter","focus","Object","assign","actualCloseEvents","mouseleave","blur","mouseup","actualGlobalCloseEvents","escape","scroll","resize","clickOutsideAnchor","activeAnchorRef","showRef","anchorElementsRef","handleShowRef","handleTooltipPositionRef","updateTooltipPositionRef","resolveAnchorElementRef","handleShowTooltipRef","handleHideTooltipRef","dataTooltipId","parseDataTooltipIdSelector","targetElement","matchedAnchor","currentElement","dataset","resolveDataTooltipAnchor","closest","find","contains","debouncedShow","debouncedHide","cleanupFns","addDelegatedListener","listener","activeAnchorContainsTarget","debouncedHandleShowTooltip","debouncedHandleHideTooltip","addDelegatedHoverOpenListener","relatedTarget","addDelegatedHoverCloseListener","targetAnchor","containerAnchor","mouseover","mouseout","regularEvents","clickEvents","handleClickOpenTooltipAnchor","handleClickCloseTooltipAnchor","entries","enabled","currentActiveAnchor","mouseEvent","mousePosition","clientX","clientY","tooltipElement","handleMouseOverTooltip","handleMouseOutTooltip","addHoveringTooltipListeners","fn","handleScrollResize","tooltipScrollParent","anchorScrollParent","updateTooltipCleanup","autoUpdate","ancestorResize","elementResize","layoutShift","handleEsc","key","handleClickOutsideAnchors","useTooltipEvents","timeoutId","contentObserver","ResizeObserver","activeAnchorMatchesImperativeSelector","actualContent","hasContent","canShow","tooltipStyle","arrowBackground","arrowStyle","background","useImperativeHandle","open","options","imperativeAnchor","querySelector","close","tooltipNode","React","clsx","coreStyles","onTransitionEnd","createPortal","observedElements","sharedObserver","observerConfig","observeAnchorAttributes","callback","observer","mutationList","mutation","attributeName","startsWith","callbacks","cb","cbs","_cbs","TooltipController","render","children","disableStyleInjection","anchorDataAttributes","setAnchorDataAttributes","previousActiveAnchorRef","styleInjectionRef","handleSetActiveAnchor","prev","isSameNode","getDataAttributesFromAnchorElement","dataAttributes","getAttributeNames","reduce","acc","name","dispatchEvent","CustomEvent","detail","disableCore","disableBase","updateAttributes","attrs","keys","prevKeys","currentAnchorDataAttributes","tooltipContent","tooltipPlace","tooltipVariant","tooltipOffset","tooltipWrapper","tooltipPositionStrategy","_e","tooltipDelayShow","tooltipDelayHide","tooltipAutoClose","tooltipFloat","tooltipHidden","tooltipClassName","_f","renderedContent","_h","_g","props","Tooltip","TooltipController_default"],"mappings":"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"}
1
+ {"version":3,"file":"react-tooltip.min.mjs","sources":["../src/utils/handle-style.ts","../src/utils/compute-tooltip-position.ts","../src/utils/debounce.ts","../src/utils/get-scroll-parent.ts","../src/utils/use-isomorphic-layout-effect.ts","../src/utils/clear-timeout-ref.ts","../src/components/Tooltip/anchor-registry.ts","../src/components/Tooltip/use-tooltip-anchors.tsx","../src/components/Tooltip/event-delegation.ts","../src/components/Tooltip/Tooltip.tsx","../src/utils/css-time-to-ms.ts","../src/components/Tooltip/use-tooltip-events.tsx","../src/utils/parse-data-tooltip-id-selector.ts","../src/utils/resolve-data-tooltip-anchor.ts","../src/components/TooltipController/shared-attribute-observer.ts","../src/components/TooltipController/TooltipController.tsx","../src/index.tsx"],"sourcesContent":["// This is the ID for the core styles of ReactTooltip\nconst REACT_TOOLTIP_CORE_STYLES_ID = 'react-tooltip-core-styles'\n// This is the ID for the visual styles of ReactTooltip\nconst REACT_TOOLTIP_BASE_STYLES_ID = 'react-tooltip-base-styles'\n\nconst injected = {\n core: false,\n base: false,\n}\n\n/**\n * Note about `state` parameter:\n * This parameter is used to keep track of the state of the styles\n * into the tests since the const `injected` is not acessible or resettable in the tests\n */\nfunction injectStyle({\n css,\n id = REACT_TOOLTIP_BASE_STYLES_ID,\n type = 'base',\n ref,\n state = {},\n}: {\n css: string\n id?: string\n type?: 'core' | 'base'\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref?: any\n state?: { [key: string]: boolean }\n}) {\n if (\n !css ||\n typeof document === 'undefined' ||\n (typeof state[type] !== 'undefined' ? state[type] : injected[type])\n ) {\n return\n }\n\n if (\n type === 'core' &&\n typeof process !== 'undefined' && // this validation prevents docs from breaking even with `process?`\n process.env &&\n process.env.REACT_TOOLTIP_DISABLE_CORE_STYLES\n ) {\n return\n }\n\n if (\n type === 'base' &&\n typeof process !== 'undefined' && // this validation prevents docs from breaking even with `process?`\n process.env &&\n process.env.REACT_TOOLTIP_DISABLE_BASE_STYLES\n ) {\n return\n }\n\n if (type === 'core') {\n id = REACT_TOOLTIP_CORE_STYLES_ID\n }\n\n if (!ref) {\n ref = {}\n }\n const { insertAt } = ref\n\n if (document.getElementById(id)) {\n // this could happen in cases the tooltip is imported by multiple js modules\n return\n }\n\n const head = document.head || document.getElementsByTagName('head')[0]\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const style: any = document.createElement('style')\n style.id = id\n style.type = 'text/css'\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild)\n } else {\n head.appendChild(style)\n }\n } else {\n head.appendChild(style)\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css\n } else {\n style.appendChild(document.createTextNode(css))\n }\n\n if (typeof state[type] !== 'undefined') {\n state[type] = true\n } else {\n injected[type] = true // internal global state that jest doesn't have access\n }\n}\n\nexport { injectStyle, injected }\n","import { computePosition, offset, shift, arrow, flip } from '@floating-ui/dom'\nimport type { IComputePositionArgs } from './compute-tooltip-position-types'\n\n// Hoisted constant middlewares — these configs never change\nconst defaultFlip = flip({ fallbackAxisSideDirection: 'start' })\nconst defaultShift = shift({ padding: 5 })\n\nconst computeTooltipPosition = async ({\n elementReference = null,\n tooltipReference = null,\n tooltipArrowReference = null,\n place = 'top',\n offset: offsetValue = 10,\n strategy = 'absolute',\n middlewares = [offset(Number(offsetValue)), defaultFlip, defaultShift],\n border,\n arrowSize = 8,\n}: IComputePositionArgs) => {\n if (!elementReference) {\n // elementReference can be null or undefined and we will not compute the position\n\n // console.error('The reference element for tooltip was not defined: ', elementReference)\n return { tooltipStyles: {}, tooltipArrowStyles: {}, place }\n }\n\n if (tooltipReference === null) {\n return { tooltipStyles: {}, tooltipArrowStyles: {}, place }\n }\n\n const middleware = [...middlewares]\n\n if (tooltipArrowReference) {\n middleware.push(arrow({ element: tooltipArrowReference as HTMLElement, padding: 5 }))\n\n return computePosition(elementReference as HTMLElement, tooltipReference as HTMLElement, {\n placement: place,\n strategy,\n middleware,\n }).then(({ x, y, placement, middlewareData }) => {\n const styles = { left: `${x}px`, top: `${y}px`, border }\n\n /* c8 ignore start */\n const { x: arrowX, y: arrowY } = middlewareData.arrow ?? { x: 0, y: 0 }\n\n const staticSide =\n {\n top: 'bottom',\n right: 'left',\n bottom: 'top',\n left: 'right',\n }[placement.split('-')[0]] ?? 'bottom'\n /* c8 ignore end */\n\n const borderSide = border && {\n borderBottom: border,\n borderRight: border,\n }\n\n let borderWidth = 0\n if (border) {\n const match = `${border}`.match(/(\\d+)px/)\n if (match?.[1]) {\n borderWidth = Number(match[1])\n } else {\n /**\n * this means `border` was set without `width`,\n * or non-px value (such as `medium`, `thick`, ...)\n */\n borderWidth = 1\n }\n }\n\n /* c8 ignore start */\n const arrowStyle = {\n left: arrowX != null ? `${arrowX}px` : '',\n top: arrowY != null ? `${arrowY}px` : '',\n right: '',\n bottom: '',\n ...borderSide,\n [staticSide]: `-${arrowSize / 2 + borderWidth - 1}px`,\n }\n /* c8 ignore end */\n\n return { tooltipStyles: styles, tooltipArrowStyles: arrowStyle, place: placement }\n })\n }\n\n return computePosition(elementReference as HTMLElement, tooltipReference as HTMLElement, {\n placement: 'bottom',\n strategy,\n middleware,\n }).then(({ x, y, placement }) => {\n const styles = { left: `${x}px`, top: `${y}px` }\n\n return { tooltipStyles: styles, tooltipArrowStyles: {}, place: placement }\n })\n}\n\nexport default computeTooltipPosition\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * This function debounce the received function\n * @param { function } \tfunc\t\t\t\tFunction to be debounced\n * @param { number } \t\twait\t\t\t\tTime to wait before execut the function\n * @param { boolean } \timmediate\t\tParam to define if the function will be executed immediately\n */\nconst debounce = <T, A extends any[]>(\n func: (...args: A) => void,\n wait?: number,\n immediate?: boolean,\n) => {\n let timeout: NodeJS.Timeout | null = null\n let currentFunc = func\n\n const debounced = function debounced(this: T, ...args: A): void {\n const later = () => {\n timeout = null\n if (!immediate) {\n currentFunc.apply(this, args)\n }\n }\n\n if (immediate && !timeout) {\n /**\n * there's no need to clear the timeout\n * since we expect it to resolve and set `timeout = null`\n */\n currentFunc.apply(this, args)\n timeout = setTimeout(later, wait)\n }\n\n if (!immediate) {\n if (timeout) {\n clearTimeout(timeout)\n }\n timeout = setTimeout(later, wait)\n }\n }\n\n debounced.cancel = () => {\n /* c8 ignore start */\n if (!timeout) {\n return\n }\n /* c8 ignore end */\n clearTimeout(timeout)\n timeout = null\n }\n\n debounced.setCallback = (newFunc: (...args: A) => void) => {\n currentFunc = newFunc\n }\n\n return debounced\n}\n\nexport default debounce\n","export const isScrollable = (node: Element) => {\n if (!(node instanceof HTMLElement || node instanceof SVGElement)) {\n return false\n }\n const style = getComputedStyle(node)\n return ['overflow', 'overflow-x', 'overflow-y'].some((propertyName) => {\n const value = style.getPropertyValue(propertyName)\n return value === 'auto' || value === 'scroll'\n })\n}\n\nconst getScrollParent = (node: Element | null) => {\n if (!node) {\n return null\n }\n let currentParent = node.parentElement\n while (currentParent) {\n if (isScrollable(currentParent)) {\n return currentParent\n }\n currentParent = currentParent.parentElement\n }\n return document.scrollingElement || document.documentElement\n}\n\nexport default getScrollParent\n","import { useLayoutEffect, useEffect } from 'react'\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\nconst isHopefullyDomEnvironment =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n\nconst useIsomorphicLayoutEffect = isHopefullyDomEnvironment ? useLayoutEffect : useEffect\n\nexport default useIsomorphicLayoutEffect\n","const clearTimeoutRef = (ref: React.RefObject<NodeJS.Timeout | null>) => {\n if (ref.current) {\n clearTimeout(ref.current)\n\n ref.current = null\n }\n}\n\nexport default clearTimeoutRef\n","type AnchorRegistrySubscriber = (anchors: HTMLElement[], error: Error | null) => void\n\ntype AnchorRegistryEntry = {\n anchors: HTMLElement[]\n error: Error | null\n subscribers: Set<AnchorRegistrySubscriber>\n /**\n * When the selector is a simple `[data-tooltip-id='value']` pattern,\n * this holds the extracted tooltip ID so we can skip expensive\n * querySelectorAll calls when the mutation doesn't affect it.\n */\n tooltipId: string | null\n}\n\nconst registry = new Map<string, AnchorRegistryEntry>()\n\nlet documentObserver: MutationObserver | null = null\n\n/**\n * Extract a tooltip ID from a simple `[data-tooltip-id='value']` selector.\n * Returns null for complex or custom selectors.\n */\nfunction extractTooltipId(selector: string): string | null {\n const match = selector.match(/^\\[data-tooltip-id=(['\"])((?:\\\\.|(?!\\1).)*)\\1\\]$/)\n return match ? match[2].replace(/\\\\(['\"])/g, '$1') : null\n}\n\nfunction areAnchorListsEqual(left: HTMLElement[], right: HTMLElement[]) {\n if (left.length !== right.length) {\n return false\n }\n\n return left.every((anchor, index) => anchor === right[index])\n}\n\nfunction readAnchorsForSelector(selector: string) {\n try {\n return {\n anchors: Array.from(document.querySelectorAll<HTMLElement>(selector)),\n error: null,\n }\n } catch (error) {\n return {\n anchors: [],\n error: error instanceof Error ? error : new Error(String(error)),\n }\n }\n}\n\nfunction notifySubscribers(entry: AnchorRegistryEntry) {\n entry.subscribers.forEach((subscriber) => subscriber(entry.anchors, entry.error))\n}\n\nfunction refreshEntry(selector: string, entry: AnchorRegistryEntry) {\n const nextState = readAnchorsForSelector(selector)\n const nextErrorMessage = nextState.error?.message ?? null\n const previousErrorMessage = entry.error?.message ?? null\n\n if (\n areAnchorListsEqual(entry.anchors, nextState.anchors) &&\n nextErrorMessage === previousErrorMessage\n ) {\n return\n }\n\n const nextEntry = {\n ...entry,\n anchors: nextState.anchors,\n error: nextState.error,\n }\n\n registry.set(selector, nextEntry)\n notifySubscribers(nextEntry)\n}\n\nfunction refreshAllEntries() {\n registry.forEach((entry, selector) => {\n refreshEntry(selector, entry)\n })\n}\n\nlet refreshScheduled = false\nlet pendingTooltipIds: Set<string> | null = null\nlet pendingFullRefresh = false\n\nfunction scheduleRefresh(affectedTooltipIds: Set<string> | null) {\n if (affectedTooltipIds) {\n if (!pendingTooltipIds) {\n pendingTooltipIds = new Set()\n }\n affectedTooltipIds.forEach((id) => pendingTooltipIds!.add(id))\n } else {\n pendingFullRefresh = true\n }\n\n if (refreshScheduled) {\n return\n }\n refreshScheduled = true\n\n const flush = () => {\n refreshScheduled = false\n const fullRefresh = pendingFullRefresh\n const ids = pendingTooltipIds\n pendingFullRefresh = false\n pendingTooltipIds = null\n\n if (fullRefresh) {\n refreshAllEntries()\n } else if (ids && ids.size > 0) {\n refreshEntriesForTooltipIds(ids)\n }\n }\n\n if (typeof requestAnimationFrame === 'function') {\n requestAnimationFrame(flush)\n } else {\n Promise.resolve().then(flush)\n }\n}\n\n/**\n * Only refresh entries whose tooltipId is in the affected set,\n * plus any entries with custom (non-tooltipId) selectors.\n */\nfunction refreshEntriesForTooltipIds(affectedIds: Set<string>) {\n registry.forEach((entry, selector) => {\n if (entry.tooltipId === null || affectedIds.has(entry.tooltipId)) {\n refreshEntry(selector, entry)\n }\n })\n}\n\n/**\n * Collect tooltip IDs from mutation records. Returns null when targeted\n * analysis is not worthwhile (few registry entries, or too many nodes to scan).\n */\nfunction collectAffectedTooltipIds(records: MutationRecord[]): Set<string> | null {\n // Targeted refresh only pays off when there are many distinct selectors.\n // With few entries, full refresh is already cheap — skip the analysis overhead.\n if (registry.size <= 4) {\n return null\n }\n\n const ids = new Set<string>()\n\n for (const record of records) {\n if (record.type === 'attributes') {\n const target = record.target as HTMLElement\n const currentId = target.getAttribute?.('data-tooltip-id')\n if (currentId) ids.add(currentId)\n if (record.oldValue) ids.add(record.oldValue)\n continue\n }\n\n if (record.type === 'childList') {\n const gatherIds = (nodes: NodeList) => {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if (node.nodeType !== Node.ELEMENT_NODE) continue\n const el = node as HTMLElement\n const id = el.getAttribute?.('data-tooltip-id')\n if (id) ids.add(id)\n // For large subtrees, bail out to full refresh to avoid double-scanning\n const descendants = el.querySelectorAll?.('[data-tooltip-id]')\n if (descendants) {\n if (descendants.length > 50) {\n return true // signal bail-out\n }\n for (let j = 0; j < descendants.length; j++) {\n const descId = descendants[j].getAttribute('data-tooltip-id')\n if (descId) ids.add(descId)\n }\n }\n }\n return false\n }\n if (gatherIds(record.addedNodes) || gatherIds(record.removedNodes)) {\n return null // large mutation — full refresh is cheaper\n }\n continue\n }\n }\n\n return ids\n}\n\nfunction ensureDocumentObserver() {\n if (documentObserver || typeof MutationObserver === 'undefined') {\n return\n }\n\n documentObserver = new MutationObserver((records) => {\n const affectedIds = collectAffectedTooltipIds(records)\n scheduleRefresh(affectedIds)\n })\n\n documentObserver.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: true,\n attributeFilter: ['data-tooltip-id'],\n attributeOldValue: true,\n })\n}\n\nfunction cleanupDocumentObserverIfUnused() {\n if (registry.size !== 0 || !documentObserver) {\n return\n }\n\n documentObserver.disconnect()\n documentObserver = null\n}\n\nexport function subscribeAnchorSelector(selector: string, subscriber: AnchorRegistrySubscriber) {\n let entry = registry.get(selector)\n\n if (!entry) {\n const initialState = readAnchorsForSelector(selector)\n entry = {\n anchors: initialState.anchors,\n error: initialState.error,\n subscribers: new Set(),\n tooltipId: extractTooltipId(selector),\n }\n registry.set(selector, entry)\n }\n\n entry.subscribers.add(subscriber)\n ensureDocumentObserver()\n subscriber([...entry.anchors], entry.error)\n\n return () => {\n const currentEntry = registry.get(selector)\n if (!currentEntry) {\n return\n }\n\n currentEntry.subscribers.delete(subscriber)\n if (currentEntry.subscribers.size === 0) {\n registry.delete(selector)\n }\n cleanupDocumentObserverIfUnused()\n }\n}\n\n/** @internal Reset module state between tests */\nexport function resetAnchorRegistry() {\n registry.clear()\n if (documentObserver) {\n documentObserver.disconnect()\n documentObserver = null\n }\n refreshScheduled = false\n pendingTooltipIds = null\n pendingFullRefresh = false\n}\n","import { useEffect, useMemo, useRef, useState } from 'react'\nimport { subscribeAnchorSelector } from './anchor-registry'\n\nconst getAnchorSelector = ({\n id,\n anchorSelect,\n imperativeAnchorSelect,\n}: {\n id?: string\n anchorSelect?: string\n imperativeAnchorSelect?: string\n}) => {\n let selector = imperativeAnchorSelect ?? anchorSelect ?? ''\n if (!selector && id) {\n selector = `[data-tooltip-id='${id.replace(/'/g, \"\\\\'\")}']`\n }\n return selector\n}\n\nconst useTooltipAnchors = ({\n id,\n anchorSelect,\n imperativeAnchorSelect,\n activeAnchor,\n disableTooltip,\n onActiveAnchorRemoved,\n trackAnchors,\n}: {\n id?: string\n anchorSelect?: string\n imperativeAnchorSelect?: string\n activeAnchor: HTMLElement | null\n disableTooltip?: (anchorRef: HTMLElement | null) => boolean\n onActiveAnchorRemoved: () => void\n trackAnchors: boolean\n}) => {\n const [rawAnchorElements, setRawAnchorElements] = useState<HTMLElement[]>([])\n const [selectorError, setSelectorError] = useState<Error | null>(null)\n const warnedSelectorRef = useRef<string | null>(null)\n const selector = useMemo(\n () => getAnchorSelector({ id, anchorSelect, imperativeAnchorSelect }),\n [id, anchorSelect, imperativeAnchorSelect],\n )\n const anchorElements = useMemo(\n () => rawAnchorElements.filter((anchor) => !disableTooltip?.(anchor)),\n [rawAnchorElements, disableTooltip],\n )\n\n const activeAnchorMatchesSelector = useMemo(() => {\n if (!activeAnchor || !selector) {\n return false\n }\n\n try {\n return activeAnchor.matches(selector)\n } catch {\n return false\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [activeAnchor, selector, anchorElements])\n\n useEffect(() => {\n if (!selector || !trackAnchors) {\n setRawAnchorElements([])\n setSelectorError(null)\n return undefined\n }\n\n return subscribeAnchorSelector(selector, (anchors, error) => {\n setRawAnchorElements(anchors)\n setSelectorError(error)\n })\n }, [selector, trackAnchors])\n\n useEffect(() => {\n if (!selectorError || warnedSelectorRef.current === selector) {\n return\n }\n warnedSelectorRef.current = selector\n /* c8 ignore start */\n if (!process.env.NODE_ENV || process.env.NODE_ENV !== 'production') {\n console.warn(`[react-tooltip] \"${selector}\" is not a valid CSS selector`)\n }\n /* c8 ignore end */\n }, [selector, selectorError])\n\n useEffect(() => {\n if (!activeAnchor) {\n return\n }\n\n if (!activeAnchor.isConnected) {\n onActiveAnchorRemoved()\n return\n }\n\n if (!anchorElements.includes(activeAnchor) && !activeAnchorMatchesSelector) {\n onActiveAnchorRemoved()\n }\n }, [activeAnchor, anchorElements, activeAnchorMatchesSelector, onActiveAnchorRemoved])\n\n return {\n anchorElements,\n selector,\n }\n}\n\nexport default useTooltipAnchors\n","/**\n * Shared document event delegation.\n *\n * Instead of N tooltips each calling document.addEventListener(type, handler),\n * we maintain ONE document listener per event type. When the event fires,\n * we iterate through all registered handlers for that type.\n *\n * This reduces document-level listeners from O(N × eventTypes) to O(eventTypes).\n */\n\ntype Handler = (event: Event) => void\n\ntype DelegatedListener = {\n handlers: Set<Handler>\n dispatch: (event: Event) => void\n eventType: string\n capture: boolean\n}\n\nconst handlersByType = new Map<string, DelegatedListener>()\n\nfunction getListenerKey(eventType: string, capture: boolean): string {\n return `${eventType}:${capture ? 'capture' : 'bubble'}`\n}\n\nfunction getOrCreateListener(eventType: string, capture: boolean): DelegatedListener {\n const key = getListenerKey(eventType, capture)\n let listener = handlersByType.get(key)\n if (!listener) {\n const handlers = new Set<Handler>()\n const dispatch = (event: Event): void => {\n handlers.forEach((handler) => {\n handler(event)\n })\n }\n listener = { handlers, dispatch, eventType, capture }\n handlersByType.set(key, listener)\n document.addEventListener(eventType, dispatch, { capture })\n }\n return listener\n}\n\n/**\n * Register a handler for a document-level event type.\n * Returns an unsubscribe function.\n */\nexport function addDelegatedEventListener(\n eventType: string,\n handler: Handler,\n options: AddEventListenerOptions = {},\n): () => void {\n const capture = Boolean(options.capture)\n const key = getListenerKey(eventType, capture)\n const listener = getOrCreateListener(eventType, capture)\n listener.handlers.add(handler)\n\n return () => {\n listener.handlers.delete(handler)\n if (listener.handlers.size === 0) {\n handlersByType.delete(key)\n document.removeEventListener(eventType, listener.dispatch, { capture })\n }\n }\n}\n\n/**\n * Reset for testing purposes.\n */\nexport function resetEventDelegation(): void {\n handlersByType.forEach((listener) => {\n document.removeEventListener(listener.eventType, listener.dispatch, {\n capture: listener.capture,\n })\n })\n handlersByType.clear()\n}\n","import React, {\n useEffect,\n useMemo,\n useState,\n useRef,\n useCallback,\n useImperativeHandle,\n memo,\n} from 'react'\nimport { createPortal } from 'react-dom'\nimport clsx from 'clsx'\nimport {\n useIsomorphicLayoutEffect,\n computeTooltipPosition,\n cssTimeToMs,\n clearTimeoutRef,\n} from '../../utils'\nimport type { IComputedPosition } from '../../utils'\nimport coreStyles from './core-styles.module.css'\nimport styles from './styles.module.css'\nimport useTooltipAnchors from './use-tooltip-anchors'\nimport useTooltipEvents from './use-tooltip-events'\nimport type { IPosition, ITooltip, TooltipImperativeOpenOptions } from './TooltipTypes'\n\n// Shared across all tooltip instances — the CSS variable is on :root and never changes per-instance\nlet globalTransitionShowDelay: number | null = null\n\nconst Tooltip = ({\n // props\n forwardRef,\n id,\n className,\n classNameArrow,\n variant = 'dark',\n portalRoot,\n anchorSelect,\n place = 'top',\n offset = 10,\n openOnClick = false,\n positionStrategy = 'absolute',\n middlewares,\n wrapper: WrapperElement,\n delayShow = 0,\n delayHide = 0,\n autoClose,\n float = false,\n hidden = false,\n noArrow = false,\n clickable = false,\n openEvents,\n closeEvents,\n globalCloseEvents,\n imperativeModeOnly,\n style: externalStyles,\n position,\n afterShow,\n afterHide,\n disableTooltip,\n // props handled by controller\n content,\n contentWrapperRef,\n isOpen,\n defaultIsOpen = false,\n setIsOpen,\n previousActiveAnchor,\n activeAnchor,\n setActiveAnchor,\n border,\n opacity,\n arrowColor,\n arrowSize = 8,\n role = 'tooltip',\n}: ITooltip) => {\n const tooltipRef = useRef<HTMLElement>(null)\n const tooltipArrowRef = useRef<HTMLElement>(null)\n const tooltipShowDelayTimerRef = useRef<NodeJS.Timeout | null>(null)\n const tooltipHideDelayTimerRef = useRef<NodeJS.Timeout | null>(null)\n const tooltipAutoCloseTimerRef = useRef<NodeJS.Timeout | null>(null)\n const missedTransitionTimerRef = useRef<NodeJS.Timeout | null>(null)\n const [computedPosition, setComputedPosition] = useState<IComputedPosition>({\n tooltipStyles: {},\n tooltipArrowStyles: {},\n place,\n })\n const [show, setShow] = useState(false)\n const [rendered, setRendered] = useState(false)\n const [imperativeOptions, setImperativeOptions] = useState<TooltipImperativeOpenOptions | null>(\n null,\n )\n const wasShowing = useRef(false)\n const lastFloatPosition = useRef<IPosition | null>(null)\n const hoveringTooltip = useRef(false)\n const mounted = useRef(false)\n const virtualElementRef = useRef({\n getBoundingClientRect: () => ({\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n }),\n })\n\n /**\n * useLayoutEffect runs before useEffect,\n * but should be used carefully because of caveats\n * https://beta.reactjs.org/reference/react/useLayoutEffect#caveats\n */\n useIsomorphicLayoutEffect(() => {\n mounted.current = true\n return () => {\n mounted.current = false\n }\n }, [])\n\n const handleShow = useCallback(\n (value: boolean) => {\n if (!mounted.current) {\n return\n }\n if (value) {\n setRendered(true)\n }\n /**\n * wait for the component to render and calculate position\n * before actually showing\n */\n setTimeout(() => {\n if (!mounted.current) {\n return\n }\n setIsOpen?.(value)\n if (isOpen === undefined) {\n setShow(value)\n }\n }, 10)\n },\n [isOpen, setIsOpen],\n )\n\n /**\n * Add aria-describedby to activeAnchor when tooltip is active\n */\n useEffect(() => {\n if (!id) return\n\n function getAriaDescribedBy(element: HTMLElement | null) {\n return element?.getAttribute('aria-describedby')?.split(' ') || []\n }\n\n function removeAriaDescribedBy(element: HTMLElement | null) {\n const newDescribedBy = getAriaDescribedBy(element).filter((s) => s !== id)\n if (newDescribedBy.length) {\n element?.setAttribute('aria-describedby', newDescribedBy.join(' '))\n } else {\n element?.removeAttribute('aria-describedby')\n }\n }\n\n if (show) {\n removeAriaDescribedBy(previousActiveAnchor)\n const currentDescribedBy = getAriaDescribedBy(activeAnchor)\n const describedBy = [...new Set([...currentDescribedBy, id])].filter(Boolean).join(' ')\n activeAnchor?.setAttribute('aria-describedby', describedBy)\n } else {\n removeAriaDescribedBy(activeAnchor)\n }\n\n return () => {\n // cleanup aria-describedby when the tooltip is closed\n removeAriaDescribedBy(activeAnchor)\n removeAriaDescribedBy(previousActiveAnchor)\n }\n }, [activeAnchor, show, id, previousActiveAnchor])\n\n /**\n * this replicates the effect from `handleShow()`\n * when `isOpen` is changed from outside\n */\n useEffect(() => {\n if (isOpen === undefined) {\n return () => null\n }\n if (isOpen) {\n setRendered(true)\n }\n const timeout = setTimeout(() => {\n setShow(isOpen)\n }, 10)\n return () => {\n clearTimeout(timeout)\n }\n }, [isOpen])\n\n useEffect(() => {\n if (show === wasShowing.current) {\n return\n }\n clearTimeoutRef(missedTransitionTimerRef)\n wasShowing.current = show\n if (show) {\n afterShow?.()\n } else {\n /**\n * see `onTransitionEnd` on tooltip wrapper\n */\n if (globalTransitionShowDelay === null) {\n const style = getComputedStyle(document.body)\n globalTransitionShowDelay = cssTimeToMs(\n style.getPropertyValue('--rt-transition-show-delay'),\n )\n }\n const transitionShowDelay = globalTransitionShowDelay\n missedTransitionTimerRef.current = setTimeout(() => {\n /**\n * if the tooltip switches from `show === true` to `show === false` too fast\n * the transition never runs, so `onTransitionEnd` callback never gets fired\n */\n setRendered(false)\n setImperativeOptions(null)\n afterHide?.()\n // +25ms just to make sure `onTransitionEnd` (if it gets fired) has time to run\n }, transitionShowDelay + 25)\n }\n }, [afterHide, afterShow, show])\n\n useEffect(() => {\n clearTimeoutRef(tooltipAutoCloseTimerRef)\n\n if (!show || !autoClose || autoClose <= 0) {\n return () => {\n clearTimeoutRef(tooltipAutoCloseTimerRef)\n }\n }\n\n tooltipAutoCloseTimerRef.current = setTimeout(() => {\n handleShow(false)\n }, autoClose)\n\n return () => {\n clearTimeoutRef(tooltipAutoCloseTimerRef)\n }\n }, [activeAnchor, autoClose, handleShow, show])\n\n const handleComputedPosition = useCallback((newComputedPosition: IComputedPosition) => {\n if (!mounted.current) {\n return\n }\n setComputedPosition((oldComputedPosition) => {\n if (\n oldComputedPosition.place === newComputedPosition.place &&\n oldComputedPosition.tooltipStyles.left === newComputedPosition.tooltipStyles.left &&\n oldComputedPosition.tooltipStyles.top === newComputedPosition.tooltipStyles.top &&\n oldComputedPosition.tooltipStyles.border === newComputedPosition.tooltipStyles.border &&\n oldComputedPosition.tooltipArrowStyles.left ===\n newComputedPosition.tooltipArrowStyles.left &&\n oldComputedPosition.tooltipArrowStyles.top === newComputedPosition.tooltipArrowStyles.top &&\n oldComputedPosition.tooltipArrowStyles.right ===\n newComputedPosition.tooltipArrowStyles.right &&\n oldComputedPosition.tooltipArrowStyles.bottom ===\n newComputedPosition.tooltipArrowStyles.bottom &&\n oldComputedPosition.tooltipArrowStyles.borderBottom ===\n newComputedPosition.tooltipArrowStyles.borderBottom &&\n oldComputedPosition.tooltipArrowStyles.borderRight ===\n newComputedPosition.tooltipArrowStyles.borderRight\n ) {\n return oldComputedPosition\n }\n return newComputedPosition\n })\n }, [])\n\n const renderedRef = useRef(rendered)\n renderedRef.current = rendered\n\n const handleShowTooltipDelayed = useCallback(\n (delay = delayShow) => {\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n\n if (renderedRef.current) {\n // if the tooltip is already rendered, ignore delay\n handleShow(true)\n return\n }\n\n tooltipShowDelayTimerRef.current = setTimeout(() => {\n handleShow(true)\n }, delay)\n },\n [delayShow, handleShow],\n )\n\n const handleHideTooltipDelayed = useCallback(\n (delay = delayHide) => {\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n\n tooltipHideDelayTimerRef.current = setTimeout(() => {\n if (hoveringTooltip.current) {\n return\n }\n handleShow(false)\n }, delay)\n },\n [delayHide, handleShow],\n )\n\n const handleTooltipPosition = useCallback(\n ({ x, y }: IPosition) => {\n virtualElementRef.current.getBoundingClientRect = () => ({\n x,\n y,\n width: 0,\n height: 0,\n top: y,\n left: x,\n right: x,\n bottom: y,\n })\n computeTooltipPosition({\n place: imperativeOptions?.place ?? place,\n offset,\n elementReference: virtualElementRef.current as unknown as Element,\n tooltipReference: tooltipRef.current,\n tooltipArrowReference: tooltipArrowRef.current,\n strategy: positionStrategy,\n middlewares,\n border,\n arrowSize,\n }).then((computedStylesData) => {\n handleComputedPosition(computedStylesData)\n })\n },\n [\n imperativeOptions?.place,\n place,\n offset,\n positionStrategy,\n middlewares,\n border,\n arrowSize,\n handleComputedPosition,\n ],\n )\n\n const updateTooltipPosition = useCallback(() => {\n const actualPosition = imperativeOptions?.position ?? position\n if (actualPosition) {\n // if `position` is set, override regular and `float` positioning\n handleTooltipPosition(actualPosition)\n return\n }\n\n if (float) {\n if (lastFloatPosition.current) {\n /*\n Without this, changes to `content`, `place`, `offset`, ..., will only\n trigger a position calculation after a `mousemove` event.\n\n To see why this matters, comment this line, run `yarn dev` and click the\n \"Hover me!\" anchor.\n */\n handleTooltipPosition(lastFloatPosition.current)\n }\n // if `float` is set, override regular positioning\n return\n }\n\n if (!activeAnchor?.isConnected) {\n return\n }\n\n computeTooltipPosition({\n place: imperativeOptions?.place ?? place,\n offset,\n elementReference: activeAnchor,\n tooltipReference: tooltipRef.current,\n tooltipArrowReference: tooltipArrowRef.current,\n strategy: positionStrategy,\n middlewares,\n border,\n arrowSize,\n }).then((computedStylesData) => {\n if (!mounted.current) {\n // invalidate computed positions after remount\n return\n }\n handleComputedPosition(computedStylesData)\n })\n }, [\n imperativeOptions?.position,\n imperativeOptions?.place,\n position,\n float,\n activeAnchor,\n place,\n offset,\n positionStrategy,\n middlewares,\n border,\n handleTooltipPosition,\n handleComputedPosition,\n arrowSize,\n ])\n\n const handleActiveAnchorRemoved = useCallback(() => {\n setRendered(false)\n handleShow(false)\n setActiveAnchor(null)\n clearTimeoutRef(tooltipShowDelayTimerRef)\n clearTimeoutRef(tooltipHideDelayTimerRef)\n clearTimeoutRef(tooltipAutoCloseTimerRef)\n }, [handleShow, setActiveAnchor])\n\n const shouldTrackAnchors =\n rendered ||\n defaultIsOpen ||\n Boolean(isOpen) ||\n Boolean(activeAnchor) ||\n Boolean(imperativeOptions?.anchorSelect)\n\n const { anchorElements, selector: anchorSelector } = useTooltipAnchors({\n id,\n anchorSelect,\n imperativeAnchorSelect: imperativeOptions?.anchorSelect,\n activeAnchor,\n disableTooltip,\n onActiveAnchorRemoved: handleActiveAnchorRemoved,\n trackAnchors: shouldTrackAnchors,\n })\n\n useTooltipEvents({\n activeAnchor,\n anchorElements,\n anchorSelector,\n clickable,\n closeEvents,\n delayHide,\n delayShow,\n disableTooltip,\n float,\n globalCloseEvents,\n handleHideTooltipDelayed,\n handleShow,\n handleShowTooltipDelayed,\n handleTooltipPosition,\n hoveringTooltip,\n imperativeModeOnly,\n lastFloatPosition,\n openEvents,\n openOnClick,\n rendered,\n setActiveAnchor,\n show,\n tooltipHideDelayTimerRef,\n tooltipRef,\n tooltipShowDelayTimerRef,\n updateTooltipPosition,\n })\n\n const updateTooltipPositionRef = useRef(updateTooltipPosition)\n updateTooltipPositionRef.current = updateTooltipPosition\n\n useEffect(() => {\n if (!rendered) {\n return\n }\n updateTooltipPosition()\n }, [rendered, updateTooltipPosition])\n\n useEffect(() => {\n if (!rendered || !contentWrapperRef?.current) {\n return () => null\n }\n\n let timeoutId: NodeJS.Timeout | null = null\n const contentObserver = new ResizeObserver(() => {\n // Clear any existing timeout to prevent memory leaks\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n timeoutId = setTimeout(() => {\n if (mounted.current) {\n updateTooltipPositionRef.current()\n }\n timeoutId = null\n }, 0)\n })\n contentObserver.observe(contentWrapperRef.current)\n\n return () => {\n contentObserver.disconnect()\n if (timeoutId) {\n clearTimeout(timeoutId)\n }\n }\n }, [content, contentWrapperRef, rendered])\n\n useEffect(() => {\n const shouldResolveInitialActiveAnchor = defaultIsOpen || Boolean(isOpen)\n\n if (!shouldResolveInitialActiveAnchor) {\n return\n }\n\n const activeAnchorMatchesImperativeSelector = (() => {\n if (!activeAnchor || !imperativeOptions?.anchorSelect) {\n return false\n }\n\n try {\n return activeAnchor.matches(imperativeOptions.anchorSelect)\n } catch {\n return false\n }\n })()\n\n if (!activeAnchor || !anchorElements.includes(activeAnchor)) {\n /**\n * if there is no active anchor,\n * or if the current active anchor is not amongst the allowed ones,\n * reset it\n */\n if (activeAnchorMatchesImperativeSelector) {\n return\n }\n setActiveAnchor(anchorElements[0] ?? null)\n }\n }, [\n activeAnchor,\n anchorElements,\n defaultIsOpen,\n imperativeOptions?.anchorSelect,\n isOpen,\n rendered,\n setActiveAnchor,\n ])\n\n useEffect(() => {\n if (defaultIsOpen) {\n handleShow(true)\n }\n return () => {\n clearTimeoutRef(tooltipShowDelayTimerRef)\n clearTimeoutRef(tooltipHideDelayTimerRef)\n clearTimeoutRef(tooltipAutoCloseTimerRef)\n clearTimeoutRef(missedTransitionTimerRef)\n }\n }, [defaultIsOpen, handleShow])\n\n useEffect(() => {\n if (tooltipShowDelayTimerRef.current) {\n /**\n * if the delay changes while the tooltip is waiting to show,\n * reset the timer with the new delay\n */\n clearTimeoutRef(tooltipShowDelayTimerRef)\n handleShowTooltipDelayed(delayShow)\n }\n }, [delayShow, handleShowTooltipDelayed])\n\n const actualContent = imperativeOptions?.content ?? content\n const hasContent = actualContent !== null && actualContent !== undefined\n const canShow = show && computedPosition.tooltipStyles.left !== undefined\n\n const tooltipStyle = useMemo(\n () => ({\n ...externalStyles,\n ...computedPosition.tooltipStyles,\n opacity: opacity !== undefined && canShow ? opacity : undefined,\n }),\n [externalStyles, computedPosition.tooltipStyles, opacity, canShow],\n )\n\n const arrowBackground = useMemo(\n () =>\n arrowColor\n ? `linear-gradient(to right bottom, transparent 50%, ${arrowColor} 50%)`\n : undefined,\n [arrowColor],\n )\n\n const arrowStyle = useMemo(\n () => ({\n ...computedPosition.tooltipArrowStyles,\n background: arrowBackground,\n '--rt-arrow-size': `${arrowSize}px`,\n }),\n [computedPosition.tooltipArrowStyles, arrowBackground, arrowSize],\n )\n\n useImperativeHandle(forwardRef, () => ({\n open: (options) => {\n let imperativeAnchor: HTMLElement | null = null\n if (options?.anchorSelect) {\n try {\n imperativeAnchor = document.querySelector<HTMLElement>(options.anchorSelect)\n } catch {\n if (!process.env.NODE_ENV || process.env.NODE_ENV !== 'production') {\n console.warn(`[react-tooltip] \"${options.anchorSelect}\" is not a valid CSS selector`)\n }\n return\n }\n if (!imperativeAnchor) {\n return\n }\n }\n if (imperativeAnchor) {\n setActiveAnchor(imperativeAnchor)\n }\n setImperativeOptions(options ?? null)\n if (options?.delay) {\n handleShowTooltipDelayed(options.delay)\n } else {\n handleShow(true)\n }\n },\n close: (options) => {\n if (options?.delay) {\n handleHideTooltipDelayed(options.delay)\n } else {\n handleShow(false)\n }\n },\n activeAnchor,\n place: computedPosition.place,\n isOpen: Boolean(rendered && !hidden && hasContent && canShow),\n }))\n\n useEffect(() => {\n return () => {\n // Final cleanup to ensure no memory leaks\n clearTimeoutRef(tooltipShowDelayTimerRef)\n clearTimeoutRef(tooltipHideDelayTimerRef)\n clearTimeoutRef(tooltipAutoCloseTimerRef)\n clearTimeoutRef(missedTransitionTimerRef)\n }\n }, [])\n\n const tooltipNode =\n rendered && !hidden && hasContent ? (\n <WrapperElement\n id={id}\n role={role}\n className={clsx(\n 'react-tooltip',\n coreStyles['tooltip'],\n styles['tooltip'],\n styles[variant],\n className,\n `react-tooltip__place-${computedPosition.place}`,\n coreStyles[canShow ? 'show' : 'closing'],\n canShow ? 'react-tooltip__show' : 'react-tooltip__closing',\n positionStrategy === 'fixed' && coreStyles['fixed'],\n clickable && coreStyles['clickable'],\n )}\n onTransitionEnd={(event: TransitionEvent) => {\n clearTimeoutRef(missedTransitionTimerRef)\n if (show || event.propertyName !== 'opacity') {\n return\n }\n setRendered(false)\n setImperativeOptions(null)\n afterHide?.()\n }}\n style={tooltipStyle}\n ref={tooltipRef}\n >\n <WrapperElement\n className={clsx(\n 'react-tooltip-content-wrapper',\n coreStyles['content'],\n styles['content'],\n )}\n >\n {actualContent}\n </WrapperElement>\n <WrapperElement\n className={clsx(\n 'react-tooltip-arrow',\n coreStyles['arrow'],\n styles['arrow'],\n classNameArrow,\n noArrow && coreStyles['noArrow'],\n )}\n style={arrowStyle}\n ref={tooltipArrowRef}\n />\n </WrapperElement>\n ) : null\n\n if (!tooltipNode) {\n return null\n }\n\n if (portalRoot) {\n return createPortal(tooltipNode, portalRoot)\n }\n\n return tooltipNode\n}\n\nexport default memo(Tooltip)\n","const cssTimeToMs = (time: string): number => {\n const match = time.match(/^([\\d.]+)(m?s)$/)\n if (!match) {\n return 0\n }\n const [, amount, unit] = match\n return Number(amount) * (unit === 'ms' ? 1 : 1000)\n}\n\nexport default cssTimeToMs\n","import { useEffect, useMemo, useRef } from 'react'\nimport type { RefObject } from 'react'\nimport { autoUpdate } from '@floating-ui/dom'\nimport {\n debounce,\n getScrollParent,\n clearTimeoutRef,\n parseDataTooltipIdSelector,\n resolveDataTooltipAnchor,\n} from '../../utils'\nimport type {\n AnchorCloseEvents,\n AnchorOpenEvents,\n GlobalCloseEvents,\n IPosition,\n} from './TooltipTypes'\nimport { addDelegatedEventListener } from './event-delegation'\n\nconst useTooltipEvents = ({\n activeAnchor,\n anchorElements,\n anchorSelector,\n clickable,\n closeEvents,\n delayHide,\n delayShow,\n disableTooltip,\n float,\n globalCloseEvents,\n handleHideTooltipDelayed,\n handleShow,\n handleShowTooltipDelayed,\n handleTooltipPosition,\n hoveringTooltip,\n imperativeModeOnly,\n lastFloatPosition,\n openEvents,\n openOnClick,\n rendered,\n setActiveAnchor,\n show,\n tooltipHideDelayTimerRef,\n tooltipRef,\n tooltipShowDelayTimerRef,\n updateTooltipPosition,\n}: {\n activeAnchor: HTMLElement | null\n anchorElements: HTMLElement[]\n anchorSelector: string\n clickable: boolean\n closeEvents?: AnchorCloseEvents\n delayHide: number\n delayShow: number\n disableTooltip?: (anchorRef: HTMLElement | null) => boolean\n float: boolean\n globalCloseEvents?: GlobalCloseEvents\n handleHideTooltipDelayed: (delay?: number) => void\n handleShow: (value: boolean) => void\n handleShowTooltipDelayed: (delay?: number) => void\n handleTooltipPosition: ({ x, y }: IPosition) => void\n hoveringTooltip: RefObject<boolean>\n imperativeModeOnly?: boolean\n lastFloatPosition: RefObject<IPosition | null>\n openEvents?: AnchorOpenEvents\n openOnClick: boolean\n rendered: boolean\n setActiveAnchor: (anchor: HTMLElement | null) => void\n show: boolean\n tooltipHideDelayTimerRef: RefObject<NodeJS.Timeout | null>\n tooltipRef: RefObject<HTMLElement | null>\n tooltipShowDelayTimerRef: RefObject<NodeJS.Timeout | null>\n updateTooltipPosition: () => void\n}) => {\n // Ref-stable debounced handlers — avoids recreating debounce instances on every effect run\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const debouncedShowRef = useRef(debounce((_anchor: HTMLElement | null) => {}, 50, true))\n const debouncedHideRef = useRef(debounce(() => {}, 50, true))\n\n // Cache scroll parents — only recompute when the element actually changes\n const anchorScrollParentRef = useRef<Element | null>(null)\n const tooltipScrollParentRef = useRef<Element | null>(null)\n const prevAnchorRef = useRef<HTMLElement | null>(null)\n const prevTooltipRef = useRef<HTMLElement | null>(null)\n\n if (activeAnchor !== prevAnchorRef.current) {\n prevAnchorRef.current = activeAnchor\n anchorScrollParentRef.current = getScrollParent(activeAnchor)\n }\n const currentTooltipEl = tooltipRef.current\n if (currentTooltipEl !== prevTooltipRef.current) {\n prevTooltipRef.current = currentTooltipEl\n tooltipScrollParentRef.current = getScrollParent(currentTooltipEl)\n }\n\n // Memoize event config objects — only rebuild when the relevant props change\n const hasClickEvent =\n openOnClick || openEvents?.click || openEvents?.dblclick || openEvents?.mousedown\n const actualOpenEvents: AnchorOpenEvents = useMemo(() => {\n const events: AnchorOpenEvents = openEvents\n ? { ...openEvents }\n : {\n mouseenter: true,\n focus: true,\n click: false,\n dblclick: false,\n mousedown: false,\n }\n if (!openEvents && openOnClick) {\n Object.assign(events, {\n mouseenter: false,\n focus: false,\n click: true,\n })\n }\n if (imperativeModeOnly) {\n Object.assign(events, {\n mouseenter: false,\n focus: false,\n click: false,\n dblclick: false,\n mousedown: false,\n })\n }\n return events\n }, [openEvents, openOnClick, imperativeModeOnly])\n\n const actualCloseEvents: AnchorCloseEvents = useMemo(() => {\n const events: AnchorCloseEvents = closeEvents\n ? { ...closeEvents }\n : {\n mouseleave: true,\n blur: true,\n click: false,\n dblclick: false,\n mouseup: false,\n }\n if (!closeEvents && openOnClick) {\n Object.assign(events, {\n mouseleave: false,\n blur: false,\n })\n }\n if (imperativeModeOnly) {\n Object.assign(events, {\n mouseleave: false,\n blur: false,\n click: false,\n dblclick: false,\n mouseup: false,\n })\n }\n return events\n }, [closeEvents, openOnClick, imperativeModeOnly])\n\n const actualGlobalCloseEvents: GlobalCloseEvents = useMemo(() => {\n const events: GlobalCloseEvents = globalCloseEvents\n ? { ...globalCloseEvents }\n : {\n escape: false,\n scroll: false,\n resize: false,\n clickOutsideAnchor: hasClickEvent || false,\n }\n if (imperativeModeOnly) {\n Object.assign(events, {\n escape: false,\n scroll: false,\n resize: false,\n clickOutsideAnchor: false,\n })\n }\n return events\n }, [globalCloseEvents, hasClickEvent, imperativeModeOnly])\n\n // --- Refs for values read inside event handlers (avoids effect deps) ---\n const activeAnchorRef = useRef(activeAnchor)\n activeAnchorRef.current = activeAnchor\n const showRef = useRef(show)\n showRef.current = show\n const anchorElementsRef = useRef(anchorElements)\n anchorElementsRef.current = anchorElements\n const handleShowRef = useRef(handleShow)\n handleShowRef.current = handleShow\n const handleTooltipPositionRef = useRef(handleTooltipPosition)\n handleTooltipPositionRef.current = handleTooltipPosition\n const updateTooltipPositionRef = useRef(updateTooltipPosition)\n updateTooltipPositionRef.current = updateTooltipPosition\n\n // --- Handler refs (updated every render, read via ref indirection in effects) ---\n const resolveAnchorElementRef = useRef<(target: EventTarget | null) => HTMLElement | null>(\n () => null,\n )\n const handleShowTooltipRef = useRef<(anchor: HTMLElement | null) => void>(() => {})\n const handleHideTooltipRef = useRef<() => void>(() => {})\n\n const dataTooltipId = anchorSelector ? parseDataTooltipIdSelector(anchorSelector) : null\n\n resolveAnchorElementRef.current = (target: EventTarget | null) => {\n const targetElement = target as HTMLElement | null\n\n if (!targetElement?.isConnected) {\n return null\n }\n\n if (dataTooltipId) {\n const matchedAnchor = resolveDataTooltipAnchor(targetElement, dataTooltipId)\n\n if (matchedAnchor && !disableTooltip?.(matchedAnchor)) {\n return matchedAnchor\n }\n } else if (anchorSelector) {\n try {\n const matchedAnchor =\n (targetElement.matches(anchorSelector)\n ? targetElement\n : targetElement.closest(anchorSelector)) ?? null\n\n if (matchedAnchor && !disableTooltip?.(matchedAnchor as HTMLElement)) {\n return matchedAnchor as HTMLElement\n }\n } catch {\n return null\n }\n }\n\n return (\n anchorElementsRef.current.find(\n (anchor) => anchor === targetElement || anchor.contains(targetElement),\n ) ?? null\n )\n }\n\n handleShowTooltipRef.current = (anchor: HTMLElement | null) => {\n if (!anchor) {\n return\n }\n if (!anchor.isConnected) {\n setActiveAnchor(null)\n return\n }\n if (disableTooltip?.(anchor)) {\n return\n }\n if (delayShow && activeAnchorRef.current && anchor !== activeAnchorRef.current) {\n // Moving to a different anchor while one is already active — defer the anchor\n // switch until the show delay fires to prevent content/position from updating\n // before visibility transitions complete.\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n tooltipShowDelayTimerRef.current = setTimeout(() => {\n setActiveAnchor(anchor)\n handleShow(true)\n }, delayShow)\n } else {\n setActiveAnchor(anchor)\n if (delayShow) {\n handleShowTooltipDelayed()\n } else {\n handleShow(true)\n }\n }\n\n if (tooltipHideDelayTimerRef.current) {\n clearTimeout(tooltipHideDelayTimerRef.current)\n }\n }\n\n handleHideTooltipRef.current = () => {\n if (clickable) {\n handleHideTooltipDelayed(delayHide || 100)\n } else if (delayHide) {\n handleHideTooltipDelayed()\n } else {\n handleShow(false)\n }\n\n if (tooltipShowDelayTimerRef.current) {\n clearTimeout(tooltipShowDelayTimerRef.current)\n }\n }\n\n // Update debounced callbacks to always delegate to latest handler refs\n const debouncedShow = debouncedShowRef.current\n const debouncedHide = debouncedHideRef.current\n debouncedShow.setCallback((anchor: HTMLElement | null) => handleShowTooltipRef.current(anchor))\n debouncedHide.setCallback(() => handleHideTooltipRef.current())\n\n // --- Effect 1: Delegated anchor events + tooltip hover ---\n // Only re-runs when the set of active event types or interaction mode changes.\n // Handlers read reactive values (activeAnchor, show, etc.) from refs at invocation\n // time, so this effect is decoupled from show/hide state changes.\n useEffect(() => {\n const cleanupFns: (() => void)[] = []\n\n const addDelegatedListener = (\n eventType: string,\n listener: (event: Event) => void,\n options?: AddEventListenerOptions,\n ) => {\n cleanupFns.push(addDelegatedEventListener(eventType, listener, options))\n }\n\n const activeAnchorContainsTarget = (event?: Event): boolean =>\n Boolean(event?.target && activeAnchorRef.current?.contains(event.target as HTMLElement))\n\n const debouncedHandleShowTooltip = (anchor: HTMLElement | null) => {\n debouncedHide.cancel()\n debouncedShow(anchor)\n }\n const debouncedHandleHideTooltip = () => {\n debouncedShow.cancel()\n debouncedHide()\n }\n\n const addDelegatedHoverOpenListener = () => {\n addDelegatedListener('mouseover', (event) => {\n const anchor = resolveAnchorElementRef.current(event.target)\n if (!anchor) {\n return\n }\n const relatedAnchor = resolveAnchorElementRef.current((event as MouseEvent).relatedTarget)\n if (relatedAnchor === anchor) {\n return\n }\n debouncedHandleShowTooltip(anchor)\n })\n }\n\n const addDelegatedHoverCloseListener = () => {\n addDelegatedListener('mouseout', (event) => {\n const targetAnchor = resolveAnchorElementRef.current(event.target)\n if (!targetAnchor && !activeAnchorContainsTarget(event)) {\n return\n }\n const relatedTarget = (event as MouseEvent).relatedTarget as HTMLElement | null\n const containerAnchor = targetAnchor || activeAnchorRef.current\n if (containerAnchor?.contains(relatedTarget)) {\n return\n }\n debouncedHandleHideTooltip()\n })\n }\n\n if (actualOpenEvents.mouseenter) {\n addDelegatedHoverOpenListener()\n }\n if (actualCloseEvents.mouseleave) {\n addDelegatedHoverCloseListener()\n }\n if (actualOpenEvents.mouseover) {\n addDelegatedHoverOpenListener()\n }\n if (actualCloseEvents.mouseout) {\n addDelegatedHoverCloseListener()\n }\n if (actualOpenEvents.focus) {\n addDelegatedListener('focusin', (event) => {\n debouncedHandleShowTooltip(resolveAnchorElementRef.current(event.target))\n })\n }\n if (actualCloseEvents.blur) {\n addDelegatedListener('focusout', (event) => {\n const targetAnchor = resolveAnchorElementRef.current(event.target)\n if (!targetAnchor && !activeAnchorContainsTarget(event)) {\n return\n }\n const relatedTarget = (event as FocusEvent).relatedTarget as HTMLElement | null\n const containerAnchor = targetAnchor || activeAnchorRef.current\n if (containerAnchor?.contains(relatedTarget)) {\n return\n }\n debouncedHandleHideTooltip()\n })\n }\n\n const regularEvents = ['mouseover', 'mouseout', 'mouseenter', 'mouseleave', 'focus', 'blur']\n const clickEvents = ['click', 'dblclick', 'mousedown', 'mouseup']\n\n const handleClickOpenTooltipAnchor = (event?: Event) => {\n const anchor = resolveAnchorElementRef.current(event?.target ?? null)\n if (!anchor) {\n return\n }\n if (showRef.current && activeAnchorRef.current === anchor) {\n return\n }\n handleShowTooltipRef.current(anchor)\n }\n const handleClickCloseTooltipAnchor = (event?: Event) => {\n if (!showRef.current || !activeAnchorContainsTarget(event)) {\n return\n }\n handleHideTooltipRef.current()\n }\n\n Object.entries(actualOpenEvents).forEach(([event, enabled]) => {\n if (!enabled || regularEvents.includes(event)) {\n return\n }\n if (clickEvents.includes(event)) {\n addDelegatedListener(event, handleClickOpenTooltipAnchor as (event: Event) => void, {\n capture: true,\n })\n }\n })\n\n Object.entries(actualCloseEvents).forEach(([event, enabled]) => {\n if (!enabled || regularEvents.includes(event)) {\n return\n }\n if (clickEvents.includes(event)) {\n addDelegatedListener(event, handleClickCloseTooltipAnchor as (event: Event) => void, {\n capture: true,\n })\n }\n })\n\n if (float) {\n addDelegatedListener('pointermove', (event) => {\n const currentActiveAnchor = activeAnchorRef.current\n if (!currentActiveAnchor) {\n return\n }\n const targetAnchor = resolveAnchorElementRef.current(event.target)\n if (targetAnchor !== currentActiveAnchor) {\n return\n }\n const mouseEvent = event as MouseEvent\n const mousePosition = {\n x: mouseEvent.clientX,\n y: mouseEvent.clientY,\n }\n handleTooltipPositionRef.current(mousePosition)\n lastFloatPosition.current = mousePosition\n })\n }\n\n const tooltipElement = tooltipRef.current\n const handleMouseOverTooltip = () => {\n hoveringTooltip.current = true\n }\n const handleMouseOutTooltip = () => {\n hoveringTooltip.current = false\n handleHideTooltipRef.current()\n }\n\n const addHoveringTooltipListeners =\n clickable && (actualCloseEvents.mouseout || actualCloseEvents.mouseleave)\n if (addHoveringTooltipListeners) {\n tooltipElement?.addEventListener('mouseover', handleMouseOverTooltip)\n tooltipElement?.addEventListener('mouseout', handleMouseOutTooltip)\n }\n\n return () => {\n cleanupFns.forEach((fn) => fn())\n if (addHoveringTooltipListeners) {\n tooltipElement?.removeEventListener('mouseover', handleMouseOverTooltip)\n tooltipElement?.removeEventListener('mouseout', handleMouseOutTooltip)\n }\n debouncedShow.cancel()\n debouncedHide.cancel()\n }\n // `rendered` needs to be a dependency because `tooltipRef` becomes stale when the\n // tooltip is removed from / added to the DOM.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [actualOpenEvents, actualCloseEvents, float, clickable, rendered])\n\n // --- Effect 2: Global close events + auto-update ---\n // Re-runs when the global close config changes, or when the active anchor changes\n // (for scroll parent listeners and floating-ui autoUpdate).\n useEffect(() => {\n const handleScrollResize = () => {\n handleShowRef.current(false)\n }\n\n const tooltipScrollParent = tooltipScrollParentRef.current\n const anchorScrollParent = anchorScrollParentRef.current\n\n if (actualGlobalCloseEvents.scroll) {\n window.addEventListener('scroll', handleScrollResize)\n anchorScrollParent?.addEventListener('scroll', handleScrollResize)\n tooltipScrollParent?.addEventListener('scroll', handleScrollResize)\n }\n let updateTooltipCleanup: null | (() => void) = null\n if (actualGlobalCloseEvents.resize) {\n window.addEventListener('resize', handleScrollResize)\n } else if (activeAnchor && tooltipRef.current) {\n updateTooltipCleanup = autoUpdate(\n activeAnchor as HTMLElement,\n tooltipRef.current as HTMLElement,\n () => updateTooltipPositionRef.current(),\n {\n ancestorResize: true,\n elementResize: true,\n layoutShift: true,\n },\n )\n }\n\n const handleEsc = (event: KeyboardEvent) => {\n if (event.key !== 'Escape') {\n return\n }\n handleShowRef.current(false)\n }\n if (actualGlobalCloseEvents.escape) {\n window.addEventListener('keydown', handleEsc)\n }\n\n const handleClickOutsideAnchors = (event: Event) => {\n if (!showRef.current) {\n return\n }\n const target = (event as MouseEvent).target as HTMLElement\n if (!target?.isConnected) {\n return\n }\n if (tooltipRef.current?.contains(target)) {\n return\n }\n if (activeAnchorRef.current?.contains(target)) {\n return\n }\n if (anchorElementsRef.current.some((anchor) => anchor?.contains(target))) {\n return\n }\n handleShowRef.current(false)\n clearTimeoutRef(tooltipShowDelayTimerRef)\n }\n\n if (actualGlobalCloseEvents.clickOutsideAnchor) {\n window.addEventListener('click', handleClickOutsideAnchors)\n }\n\n return () => {\n if (actualGlobalCloseEvents.scroll) {\n window.removeEventListener('scroll', handleScrollResize)\n anchorScrollParent?.removeEventListener('scroll', handleScrollResize)\n tooltipScrollParent?.removeEventListener('scroll', handleScrollResize)\n }\n if (actualGlobalCloseEvents.resize) {\n window.removeEventListener('resize', handleScrollResize)\n }\n if (updateTooltipCleanup) {\n updateTooltipCleanup()\n }\n if (actualGlobalCloseEvents.escape) {\n window.removeEventListener('keydown', handleEsc)\n }\n if (actualGlobalCloseEvents.clickOutsideAnchor) {\n window.removeEventListener('click', handleClickOutsideAnchors)\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [actualGlobalCloseEvents, activeAnchor])\n}\n\nexport default useTooltipEvents\n","function parseDataTooltipIdSelector(selector: string) {\n const match = selector.match(/^\\[data-tooltip-id=(['\"])((?:\\\\.|(?!\\1).)*)\\1\\]$/)\n\n if (!match) {\n return null\n }\n\n return match[2].replace(/\\\\(['\"])/g, '$1')\n}\n\nexport default parseDataTooltipIdSelector\n","function resolveDataTooltipAnchor(targetElement: HTMLElement, tooltipId: string) {\n let currentElement: HTMLElement | null = targetElement\n\n while (currentElement) {\n if (currentElement.dataset.tooltipId === tooltipId) {\n return currentElement\n }\n currentElement = currentElement.parentElement\n }\n\n return null\n}\n\nexport default resolveDataTooltipAnchor\n","/**\n * Shared MutationObserver for data-tooltip-* attribute changes.\n * Instead of N observers (one per tooltip), a single observer watches\n * all active anchors and dispatches changes to registered callbacks.\n */\n\ntype AttributeCallback = (element: HTMLElement) => void\n\nconst observedElements = new Map<HTMLElement, Set<AttributeCallback>>()\n\nlet sharedObserver: MutationObserver | null = null\n\nconst observerConfig: MutationObserverInit = {\n attributes: true,\n childList: false,\n subtree: false,\n}\n\nfunction getObserver(): MutationObserver {\n if (!sharedObserver) {\n sharedObserver = new MutationObserver((mutationList) => {\n for (const mutation of mutationList) {\n if (\n mutation.type !== 'attributes' ||\n !mutation.attributeName?.startsWith('data-tooltip-')\n ) {\n continue\n }\n const target = mutation.target as HTMLElement\n const callbacks = observedElements.get(target)\n if (callbacks) {\n callbacks.forEach((cb) => cb(target))\n }\n }\n })\n }\n return sharedObserver\n}\n\nexport function observeAnchorAttributes(\n element: HTMLElement,\n callback: AttributeCallback,\n): () => void {\n const observer = getObserver()\n let callbacks = observedElements.get(element)\n if (!callbacks) {\n callbacks = new Set()\n observedElements.set(element, callbacks)\n observer.observe(element, observerConfig)\n }\n callbacks.add(callback)\n\n return () => {\n const cbs = observedElements.get(element)\n if (cbs) {\n cbs.delete(callback)\n if (cbs.size === 0) {\n observedElements.delete(element)\n // MutationObserver doesn't have unobserve — if no elements left, disconnect & reset\n if (observedElements.size === 0) {\n observer.disconnect()\n } else {\n // Re-observe remaining elements (MutationObserver has no per-target unobserve)\n observer.disconnect()\n observedElements.forEach((_cbs, el) => {\n observer.observe(el, observerConfig)\n })\n }\n }\n }\n }\n}\n\n/**\n * Reset for testing purposes\n */\nexport function resetSharedAttributeObserver(): void {\n sharedObserver?.disconnect()\n sharedObserver = null\n observedElements.clear()\n}\n","import React, { useCallback, useEffect, useRef, useState, memo } from 'react'\nimport clsx from 'clsx'\nimport { Tooltip } from '../Tooltip'\nimport type {\n PositionStrategy,\n PlacesType,\n VariantType,\n WrapperType,\n DataAttribute,\n ITooltip,\n TooltipRefProps,\n} from '../Tooltip/TooltipTypes'\nimport type { ITooltipController } from './TooltipControllerTypes'\nimport { observeAnchorAttributes } from './shared-attribute-observer'\n\nconst TooltipController = React.forwardRef<TooltipRefProps, ITooltipController>(\n (\n {\n id,\n anchorSelect,\n content,\n render,\n className,\n classNameArrow,\n variant = 'dark',\n portalRoot,\n place = 'top',\n offset = 10,\n wrapper = 'div',\n children = null,\n openOnClick = false,\n positionStrategy = 'absolute',\n middlewares,\n delayShow = 0,\n delayHide = 0,\n autoClose,\n float = false,\n hidden = false,\n noArrow = false,\n clickable = false,\n openEvents,\n closeEvents,\n globalCloseEvents,\n imperativeModeOnly = false,\n style,\n position,\n isOpen,\n defaultIsOpen = false,\n disableStyleInjection = false,\n border,\n opacity,\n arrowColor,\n arrowSize,\n setIsOpen,\n afterShow,\n afterHide,\n disableTooltip,\n role = 'tooltip',\n }: ITooltipController,\n ref,\n ) => {\n const [activeAnchor, setActiveAnchor] = useState<HTMLElement | null>(null)\n const [anchorDataAttributes, setAnchorDataAttributes] = useState<\n Partial<Record<DataAttribute, string | null>>\n >({})\n const previousActiveAnchorRef = useRef<HTMLElement | null>(null)\n const styleInjectionRef = useRef(disableStyleInjection)\n\n const handleSetActiveAnchor = useCallback((anchor: HTMLElement | null) => {\n setActiveAnchor((prev) => {\n if (!anchor?.isSameNode(prev)) {\n previousActiveAnchorRef.current = prev\n }\n return anchor\n })\n }, [])\n\n /* c8 ignore start */\n const getDataAttributesFromAnchorElement = (elementReference: HTMLElement) => {\n const dataAttributes = elementReference?.getAttributeNames().reduce(\n (acc, name) => {\n if (name.startsWith('data-tooltip-')) {\n const parsedAttribute = name.replace(/^data-tooltip-/, '') as DataAttribute\n acc[parsedAttribute] = elementReference?.getAttribute(name) ?? null\n }\n return acc\n },\n {} as Record<DataAttribute, string | null>,\n )\n\n return dataAttributes\n }\n /* c8 ignore end */\n\n useEffect(() => {\n if (styleInjectionRef.current === disableStyleInjection) {\n return\n }\n /* c8 ignore start */\n if (process.env.NODE_ENV !== 'production') {\n console.warn('[react-tooltip] Do not change `disableStyleInjection` dynamically.')\n }\n /* c8 ignore end */\n }, [disableStyleInjection])\n\n useEffect(() => {\n if (typeof window !== 'undefined') {\n window.dispatchEvent(\n new CustomEvent('react-tooltip-inject-styles', {\n detail: {\n disableCore: disableStyleInjection === 'core',\n disableBase: disableStyleInjection,\n },\n }),\n )\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n useEffect(() => {\n if (!activeAnchor) {\n setAnchorDataAttributes({})\n return () => {}\n }\n\n const updateAttributes = (element: HTMLElement) => {\n const attrs = getDataAttributesFromAnchorElement(element)\n setAnchorDataAttributes((prev) => {\n const keys = Object.keys(attrs) as DataAttribute[]\n const prevKeys = Object.keys(prev) as DataAttribute[]\n if (keys.length === prevKeys.length && keys.every((key) => attrs[key] === prev[key])) {\n return prev\n }\n return attrs\n })\n }\n\n updateAttributes(activeAnchor)\n\n const unsubscribe = observeAnchorAttributes(activeAnchor, updateAttributes)\n\n return unsubscribe\n }, [activeAnchor, anchorSelect])\n\n useEffect(() => {\n /* c8 ignore start */\n if (process.env.NODE_ENV === 'production') {\n return\n }\n /* c8 ignore end */\n if (style?.border) {\n console.warn('[react-tooltip] Do not set `style.border`. Use `border` prop instead.')\n }\n if (style?.opacity) {\n console.warn('[react-tooltip] Do not set `style.opacity`. Use `opacity` prop instead.')\n }\n }, [border, opacity, style?.border, style?.opacity])\n\n const currentAnchorDataAttributes = activeAnchor\n ? getDataAttributesFromAnchorElement(activeAnchor)\n : anchorDataAttributes\n\n /**\n * content priority: children < render or content < html\n * children should be lower priority so that it can be used as the \"default\" content\n */\n const tooltipContent = currentAnchorDataAttributes.content ?? content\n const tooltipPlace = (currentAnchorDataAttributes.place as PlacesType | undefined) ?? place\n const tooltipVariant =\n (currentAnchorDataAttributes.variant as VariantType | undefined) ?? variant\n const tooltipOffset =\n currentAnchorDataAttributes.offset == null\n ? offset\n : Number(currentAnchorDataAttributes.offset)\n const tooltipWrapper =\n (currentAnchorDataAttributes.wrapper as WrapperType | undefined) ?? wrapper\n const tooltipPositionStrategy =\n (currentAnchorDataAttributes['position-strategy'] as PositionStrategy | undefined) ??\n positionStrategy\n const tooltipDelayShow =\n currentAnchorDataAttributes['delay-show'] == null\n ? delayShow\n : Number(currentAnchorDataAttributes['delay-show'])\n const tooltipDelayHide =\n currentAnchorDataAttributes['delay-hide'] == null\n ? delayHide\n : Number(currentAnchorDataAttributes['delay-hide'])\n const tooltipAutoClose =\n currentAnchorDataAttributes['auto-close'] == null\n ? autoClose\n : Number(currentAnchorDataAttributes['auto-close'])\n const tooltipFloat =\n currentAnchorDataAttributes.float == null\n ? float\n : currentAnchorDataAttributes.float === 'true'\n const tooltipHidden =\n currentAnchorDataAttributes.hidden == null\n ? hidden\n : currentAnchorDataAttributes.hidden === 'true'\n const tooltipClassName = currentAnchorDataAttributes['class-name'] ?? null\n\n let renderedContent = children\n const contentWrapperRef = useRef<HTMLDivElement>(null)\n if (render) {\n const actualContent = currentAnchorDataAttributes.content ?? tooltipContent ?? null\n const rendered = render({ content: actualContent, activeAnchor }) as React.ReactNode\n renderedContent = rendered ? (\n <div ref={contentWrapperRef} className=\"react-tooltip-content-wrapper\">\n {rendered}\n </div>\n ) : null\n } else if (tooltipContent !== null && tooltipContent !== undefined) {\n renderedContent = tooltipContent\n }\n\n const props: ITooltip = {\n forwardRef: ref,\n id,\n anchorSelect,\n className: clsx(className, tooltipClassName),\n classNameArrow,\n content: renderedContent,\n contentWrapperRef,\n portalRoot,\n place: tooltipPlace,\n variant: tooltipVariant,\n offset: tooltipOffset,\n wrapper: tooltipWrapper,\n openOnClick,\n positionStrategy: tooltipPositionStrategy,\n middlewares,\n delayShow: tooltipDelayShow,\n delayHide: tooltipDelayHide,\n autoClose: tooltipAutoClose,\n float: tooltipFloat,\n hidden: tooltipHidden,\n noArrow,\n clickable,\n openEvents,\n closeEvents,\n globalCloseEvents,\n imperativeModeOnly,\n style,\n position,\n isOpen,\n defaultIsOpen,\n border,\n opacity,\n arrowColor,\n arrowSize,\n setIsOpen,\n afterShow,\n afterHide,\n disableTooltip,\n activeAnchor,\n previousActiveAnchor: previousActiveAnchorRef.current,\n setActiveAnchor: handleSetActiveAnchor,\n role,\n }\n\n return <Tooltip {...props} />\n },\n)\n\nexport default memo(TooltipController)\n","import './tokens.css'\n\nimport { injectStyle } from './utils/handle-style'\n\nimport type {\n DataAttribute,\n PlacesType,\n PositionStrategy,\n VariantType,\n WrapperType,\n IPosition,\n Middleware,\n TooltipRefProps,\n} from './components/Tooltip/TooltipTypes'\nimport type { ITooltipController } from './components/TooltipController/TooltipControllerTypes'\n\n// those content will be replaced in build time with the `react-tooltip.css` builded content\nconst TooltipCoreStyles = 'react-tooltip-core-css-placeholder'\nconst TooltipStyles = 'react-tooltip-css-placeholder'\n\nif (typeof window !== 'undefined') {\n window.addEventListener('react-tooltip-inject-styles', ((\n event: CustomEvent<{ disableCore: boolean; disableBase: boolean }>,\n ) => {\n if (!event.detail.disableCore) {\n injectStyle({ css: TooltipCoreStyles, type: 'core' })\n }\n if (!event.detail.disableBase) {\n injectStyle({ css: TooltipStyles, type: 'base' })\n }\n }) as EventListener)\n}\n\nexport { TooltipController as Tooltip } from './components/TooltipController'\nexport type {\n DataAttribute,\n PlacesType,\n PositionStrategy,\n VariantType,\n WrapperType,\n ITooltipController as ITooltip,\n IPosition,\n Middleware,\n TooltipRefProps,\n}\n"],"names":["injected","core","base","injectStyle","css","id","type","ref","state","document","process","env","REACT_TOOLTIP_DISABLE_CORE_STYLES","REACT_TOOLTIP_DISABLE_BASE_STYLES","insertAt","getElementById","head","getElementsByTagName","style","createElement","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","defaultFlip","flip","fallbackAxisSideDirection","defaultShift","shift","padding","computeTooltipPosition","async","elementReference","tooltipReference","tooltipArrowReference","place","offset","offsetValue","strategy","middlewares","Number","border","arrowSize","tooltipStyles","tooltipArrowStyles","middleware","push","arrow","element","computePosition","placement","then","x","y","middlewareData","styles","left","top","arrowX","arrowY","_a","staticSide","_b","right","bottom","split","borderSide","borderBottom","borderRight","borderWidth","match","debounce","func","wait","immediate","timeout","currentFunc","debounced","args","later","apply","this","setTimeout","cancel","clearTimeout","setCallback","newFunc","isScrollable","node","HTMLElement","SVGElement","getComputedStyle","some","propertyName","value","getPropertyValue","getScrollParent","currentParent","parentElement","scrollingElement","documentElement","useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","clearTimeoutRef","current","registry","Map","documentObserver","extractTooltipId","selector","replace","readAnchorsForSelector","anchors","Array","from","querySelectorAll","error","Error","String","refreshEntry","entry","nextState","nextErrorMessage","message","previousErrorMessage","_d","_c","length","every","anchor","index","nextEntry","set","subscribers","forEach","subscriber","notifySubscribers","refreshScheduled","pendingTooltipIds","pendingFullRefresh","scheduleRefresh","affectedTooltipIds","Set","add","flush","fullRefresh","ids","affectedIds","size","tooltipId","has","requestAnimationFrame","Promise","resolve","ensureDocumentObserver","MutationObserver","records","record","target","currentId","getAttribute","call","oldValue","gatherIds","nodes","i","nodeType","Node","ELEMENT_NODE","el","descendants","j","descId","addedNodes","removedNodes","collectAffectedTooltipIds","observe","body","childList","subtree","attributes","attributeFilter","attributeOldValue","subscribeAnchorSelector","get","initialState","currentEntry","delete","disconnect","handlersByType","getListenerKey","eventType","capture","addDelegatedEventListener","handler","options","Boolean","key","listener","handlers","dispatch","event","addEventListener","getOrCreateListener","removeEventListener","globalTransitionShowDelay","Tooltip$1","memo","forwardRef","className","classNameArrow","variant","portalRoot","anchorSelect","openOnClick","positionStrategy","wrapper","WrapperElement","delayShow","delayHide","autoClose","float","hidden","noArrow","clickable","openEvents","closeEvents","globalCloseEvents","imperativeModeOnly","externalStyles","position","afterShow","afterHide","disableTooltip","content","contentWrapperRef","isOpen","defaultIsOpen","setIsOpen","previousActiveAnchor","activeAnchor","setActiveAnchor","opacity","arrowColor","role","tooltipRef","useRef","tooltipArrowRef","tooltipShowDelayTimerRef","tooltipHideDelayTimerRef","tooltipAutoCloseTimerRef","missedTransitionTimerRef","computedPosition","setComputedPosition","useState","show","setShow","rendered","setRendered","imperativeOptions","setImperativeOptions","wasShowing","lastFloatPosition","hoveringTooltip","mounted","virtualElementRef","getBoundingClientRect","width","height","handleShow","useCallback","undefined","removeAriaDescribedBy","currentDescribedBy","getAriaDescribedBy","describedBy","filter","join","setAttribute","newDescribedBy","s","removeAttribute","time","amount","unit","cssTimeToMs","transitionShowDelay","handleComputedPosition","newComputedPosition","oldComputedPosition","renderedRef","handleShowTooltipDelayed","delay","handleHideTooltipDelayed","handleTooltipPosition","computedStylesData","updateTooltipPosition","actualPosition","isConnected","handleActiveAnchorRemoved","shouldTrackAnchors","anchorElements","anchorSelector","imperativeAnchorSelect","onActiveAnchorRemoved","trackAnchors","rawAnchorElements","setRawAnchorElements","selectorError","setSelectorError","warnedSelectorRef","useMemo","getAnchorSelector","activeAnchorMatchesSelector","matches","includes","useTooltipAnchors","debouncedShowRef","_anchor","debouncedHideRef","anchorScrollParentRef","tooltipScrollParentRef","prevAnchorRef","prevTooltipRef","currentTooltipEl","hasClickEvent","click","dblclick","mousedown","actualOpenEvents","events","mouseenter","focus","Object","assign","actualCloseEvents","mouseleave","blur","mouseup","actualGlobalCloseEvents","escape","scroll","resize","clickOutsideAnchor","activeAnchorRef","showRef","anchorElementsRef","handleShowRef","handleTooltipPositionRef","updateTooltipPositionRef","resolveAnchorElementRef","handleShowTooltipRef","handleHideTooltipRef","dataTooltipId","parseDataTooltipIdSelector","targetElement","matchedAnchor","currentElement","dataset","resolveDataTooltipAnchor","closest","find","contains","debouncedShow","debouncedHide","cleanupFns","addDelegatedListener","activeAnchorContainsTarget","debouncedHandleShowTooltip","debouncedHandleHideTooltip","addDelegatedHoverOpenListener","relatedTarget","addDelegatedHoverCloseListener","targetAnchor","containerAnchor","mouseover","mouseout","regularEvents","clickEvents","handleClickOpenTooltipAnchor","handleClickCloseTooltipAnchor","entries","enabled","currentActiveAnchor","mouseEvent","mousePosition","clientX","clientY","tooltipElement","handleMouseOverTooltip","handleMouseOutTooltip","addHoveringTooltipListeners","fn","handleScrollResize","tooltipScrollParent","anchorScrollParent","updateTooltipCleanup","autoUpdate","ancestorResize","elementResize","layoutShift","handleEsc","handleClickOutsideAnchors","useTooltipEvents","timeoutId","contentObserver","ResizeObserver","activeAnchorMatchesImperativeSelector","actualContent","hasContent","canShow","tooltipStyle","arrowBackground","arrowStyle","background","useImperativeHandle","open","imperativeAnchor","querySelector","close","tooltipNode","React","clsx","coreStyles","onTransitionEnd","createPortal","observedElements","sharedObserver","observerConfig","observeAnchorAttributes","callback","observer","mutationList","mutation","attributeName","startsWith","callbacks","cb","cbs","_cbs","TooltipController","render","children","disableStyleInjection","anchorDataAttributes","setAnchorDataAttributes","previousActiveAnchorRef","styleInjectionRef","handleSetActiveAnchor","prev","isSameNode","getDataAttributesFromAnchorElement","dataAttributes","getAttributeNames","reduce","acc","name","dispatchEvent","CustomEvent","detail","disableCore","disableBase","updateAttributes","attrs","keys","prevKeys","currentAnchorDataAttributes","tooltipContent","tooltipPlace","tooltipVariant","tooltipOffset","tooltipWrapper","tooltipPositionStrategy","_e","tooltipDelayShow","tooltipDelayHide","tooltipAutoClose","tooltipFloat","tooltipHidden","tooltipClassName","_f","renderedContent","_h","_g","props","Tooltip","TooltipController_default"],"mappings":"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"}
@@ -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 getOrCreateSet(eventType) {
554
- let set = handlersByType.get(eventType);
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 dispatch(event) {
563
- const handlers = handlersByType.get(event.type);
564
- if (handlers) {
565
- // Safe to iterate directly — mutations (add/remove) only happen in
566
- // setup/cleanup, not during dispatch. Set iteration is stable for
567
- // entries that existed when iteration began.
568
- handlers.forEach((handler) => {
569
- handler(event);
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 set = getOrCreateSet(eventType);
579
- set.add(handler);
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
- set.delete(handler);
582
- if (set.size === 0) {
583
- handlersByType.delete(eventType);
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) {