PageSourceSearch

https://app.attive.ai/assets/tooltip-BJdGgfWM.js

js attive.ai collected 2026-10-05 11:50:34 UTC 8,568 bytes, 2 lines download raw bytes

vendor: 8,382 bytes, line 1
1import{j as p}from"./jsx-runtime-BjG_zV1W.js";import{c as X}from"./cn-l-f-T-wk.js";import{r as s}from"./chunk-JZWAC4HX-CVgnHJ12.js";import{a as K,c as g}from"./index-Ck5kLTDB.js";import{u as I,a as W}from"./index-BVWBl0a3.js";import{c as J}from"./index-GoJZ84dt.js";import{P as Q,D as Z}from"./index-Gop08UKJ.js";import{u as ee}from"./index-DzOPe2ko.js";import{c as H,R as te,A as oe,C as re,a as ne}from"./index-CoDjhavy.js";import{P as S}from"./index-VEoAxHKb.js";import{P as se}from"./index-CRKtzHY0.js";import{R as ae}from"./index-DsttZo4N.js";var[j]=J("Tooltip",[H]),D=H(),G="TooltipProvider",ie=700,O="tooltip.open",[le,L]=j(G),F=t=>{const{__scopeTooltip:o,delayDuration:e=ie,skipDelayDuration:r=300,disableHoverableContent:n=!1,children:i}=t,l=s.useRef(!0),v=s.useRef(!1),a=s.useRef(0);return s.useEffect(()=>{const d=a.current;return()=>window.clearTimeout(d)},[]),p.jsx(le,{scope:o,isOpenDelayedRef:l,delayDuration:e,onOpen:s.useCallback(()=>{window.clearTimeout(a.current),l.current=!1},[]),onClose:s.useCallback(()=>{window.clearTimeout(a.current),a.current=window.setTimeout(()=>l.current=!0,r)},[r]),isPointerInTransitRef:v,onPointerInTransitChange:s.useCallback(d=>{v.current=d},[]),disableHoverableContent:n,children:i})};F.displayName=G;var R="Tooltip",[ce,_]=j(R),$=t=>{const{__scopeTooltip:o,children:e,open:r,defaultOpen:n,onOpenChange:i,disableHoverableContent:l,delayDuration:v}=t,a=L(R,t.__scopeTooltip),d=D(o),[c,f]=s.useState(null),m=ee(),u=s.useRef(0),x=l??a.disableHoverableContent,T=v??a.delayDuration,h=s.useRef(!1),[C,y]=K({prop:r,defaultProp:n??!1,onChange:N=>{N?(a.onOpen(),document.dispatchEvent(new CustomEvent(O))):a.onClose(),i==null||i(N)},caller:R}),w=s.useMemo(()=>C?h.current?"delayed-open":"instant-open":"closed",[C]),P=s.useCallback(()=>{window.clearTimeout(u.current),u.current=0,h.current=!1,y(!0)},[y]),E=s.useCallback(()=>{window.clearTimeout(u.current),u.current=0,y(!1)},[y]),M=s.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>{h.current=!0,y(!0),u.current=0},T)},[T,y]);return s.useEffect(()=>()=>{u.current&&(window.clearTimeout(u.current),u.current=0)},[]),p.jsx(te,{...d,children:p.jsx(ce,{scope:o,contentId:m,open:C,stateAttribute:w,trigger:c,onTriggerChange:f,onTriggerEnter:s.useCallback(()=>{a.isOpenDelayedRef.current?M():P()},[a.isOpenDelayedRef,M,P]),onTriggerLeave:s.useCallback(()=>{x?E():(window.clearTimeout(u.current),u.current=0)},[E,x]),onOpen:P,onClose:E,disableHoverableContent:x,children:e})})};$.displayName=R;var A="TooltipTrigger",B=s.forwardRef((t,o)=>{const{__scopeTooltip:e,...r}=t,n=_(A,e),i=L(A,e),l=D(e),v=s.useRef(null),a=I(o,v,n.onTriggerChange),d=s.useRef(!1),c=s.useRef(!1),f=s.useCallback(()=>d.current=!1,[]);return s.useEffect(()=>()=>document.removeEventListener("pointerup",f),[f]),p.jsx(oe,{asChild:!0,...l,children:p.jsx(se.button,{"aria-describedby":n.open?n.contentId:void 0,"data-state":n.stateAttribute,...r,ref:a,onPointerMove:g(t.onPointerMove,m=>{m.pointerType!=="touch"&&!c.current&&!i.isPointerInTransitRef.current&&(n.onTriggerEnter(),c.current=!0)}),onPointerLeave:g(t.onPointerLeave,()=>{n.onTriggerLeave(),c.current=!1}),onPointerDown:g(t.onPointerDown,()=>{n.open&&n.onClose(),d.current=!0,document.addEventListener("pointerup",f,{once:!0})}),onFocus:g(t.onFocus,()=>{d.current||n.onOpen()}),onBlur:g(t.onBlur,n.onClose),onClick:g(t.onClick,n.onClose)})})});B.displayName=A;var k="TooltipPortal",[ue,pe]=j(k,{forceMount:void 0}),z=t=>{const{__scopeTooltip:o,forceMount:e,children:r,container:n}=t,i=_(k,o);return p.jsx(ue,{scope:o,forceMount:e,children:p.jsx(S,{present:e||i.open,children:p.jsx(Q,{asChild:!0,container:n,children:r})})})};z.displayName=k;var b="TooltipContent",U=s.forwardRef((t,o)=>{const e=pe(b,t.__scopeTooltip),{forceMount:r=e.forceMount,side:n="top",...i}=t,l=_(b,t.__scopeTooltip);return p.jsx(S,{present:r||l.open,children:l.disableHoverableContent?p.jsx(V,{side:n,...i,ref:o}):p.jsx(de,{side:n,...i,ref:o})})}),de=s.forwardRef((t,o)=>{const e=_(b,t.__scopeTooltip),r=L(b,t.__scopeTooltip),n=s.useRef(null),i=I(o,n),[l,v]=s.useState(null),{trigger:a,onClose:d}=e,c=n.current,{onPointerInTransitChange:f}=r,m=s.useCallback(()=>{v(null),f(!1)},[f]),u=s.useCallback((x,T)=>{const h=x.currentTarget,C={x:x.clientX,y:x.clientY},y=he(C,h.getBoundingClientRect()),w=Te(C,y),P=ye(T.getBoundingClientRect()),E=ge([...w,...P]);v(E),f(!0)},[f]);return s.useEffect(()=>()=>m(),[m]),s.useEffect(()=>{if(a&&c){const x=h=>u(h,c),T=h=>u(h,a);return a.addEventListener("pointerleave",x),c.addEventListener("pointerleave",T),()=>{a.removeEventListener("pointerleave",x),c.removeEventListener("pointerleave",T)}}},[a,c,u,m]),s.useEffect(()=>{if(l){const x=T=>{const h=T.target,C={x:T.clientX,y:T.clientY},y=(a==null?void 0:a.contains(h))||(c==null?void 0:c.contains(h)),w=!Ce(C,l);y?m():w&&(m(),d())};return document.addEventListener("pointermove",x),()=>document.removeEventListener("pointermove",x)}},[a,c,l,d,m]),p.jsx(V,{...t,ref:i})}),[fe,ve]=j(R,{isInside:!1}),me=W("TooltipContent"),V=s.forwardRef((t,o)=>{const{__scopeTooltip:e,children:r,"aria-label":n,onEscapeKeyDown:i,onPointerDownOutside:l,...v}=t,a=_(b,e),d=D(e),{onClose:c}=a;return s.useEffect(()=>(document.addEventListener(O,c),()=>document.removeEventListener(O,c)),[c]),s.useEffect(()=>{if(a.trigger){const f=m=>{const u=m.target;u!=null&&u.contains(a.trigger)&&c()};return window.addEventListener("scroll",f,{capture:!0}),()=>window.removeEventListener("scroll",f,{capture:!0})}},[a.trigger,c]),p.jsx(Z,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:f=>f.preventDefault(),onDismiss:c,children:p.jsxs(re,{"data-state":a.stateAttribute,...d,...v,ref:o,style:{...v.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[p.jsx(me,{children:r}),p.jsx(fe,{scope:e,isInside:!0,children:p.jsx(ae,{id:a.contentId,role:"tooltip",children:n||r})})]})})});U.displayName=b;var Y="TooltipArrow",xe=s.forwardRef((t,o)=>{const{__scopeTooltip:e,...r}=t,n=D(e);return ve(Y,e).isInside?null:p.jsx(ne,{...n,...r,ref:o})});xe.displayName=Y;function he(t,o){const e=Math.abs(o.top-t.y),r=Math.abs(o.bottom-t.y),n=Math.abs(o.right-t.x),i=Math.abs(o.left-t.x);switch(Math.min(e,r,n,i)){case i:return"left";case n:return"right";case e:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function Te(t,o,e=5){const r=[];switch(o){case"top":r.push({x:t.x-e,y:t.y+e},{x:t.x+e,y:t.y+e});break;case"bottom":r.push({x:t.x-e,y:t.y-e},{x:t.x+e,y:t.y-e});break;case"left":r.push({x:t.x+e,y:t.y-e},{x:t.x+e,y:t.y+e});break;case"right":r.push({x:t.x-e,y:t.y-e},{x:t.x-e,y:t.y+e});break}return r}function ye(t){const{top:o,right:e,bottom:r,left:n}=t;return[{x:n,y:o},{x:e,y:o},{x:e,y:r},{x:n,y:r}]}function Ce(t,o){const{x:e,y:r}=t;let n=!1;for(let i=0,l=o.length-1;i<o.length;l=i++){const v=o[i],a=o[l],d=v.x,c=v.y,f=a.x,m=a.y;c>r!=m>r&&e<(f-d)*(r-c)/(m-c)+d&&(n=!n)}return n}function ge(t){const o=t.slice();return o.sort((e,r)=>e.x<r.x?-1:e.x>r.x?1:e.y<r.y?-1:e.y>r.y?1:0),be(o)}function be(t){if(t.length<=1)return t.slice();const o=[];for(let r=0;r<t.length;r++){const n=t[r];for(;o.length>=2;){const i=o[o.length-1],l=o[o.length-2];if((i.x-l.x)*(n.y-l.y)>=(i.y-l.y)*(n.x-l.x))o.pop();else break}o.push(n)}o.pop();const e=[];for(let r=t.length-1;r>=0;r--){const n=t[r];for(;e.length>=2;){const i=e[e.length-1],l=e[e.length-2];if((i.x-l.x)*(n.y-l.y)>=(i.y-l.y)*(n.x-l.x))e.pop();else break}e.push(n)}return e.pop(),o.length===1&&e.length===1&&o[0].x===e[0].x&&o[0].y===e[0].y?o:o.concat(e)}var we=F,Pe=$,Ee=B,Re=z,q=U;const Fe=we,$e=Pe,Be=Ee,_e=s.forwardRef(({className:t,sideOffset:o=4,...e},r)=>p.jsx(Re,{children:p.jsx(q,{ref:r,sideOffset:o,className:X("z-50 overflow-hidden rounded-md border bg-popover px-3 py-1.5 text-sm text-popover-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:sli
1de-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...e})}));_e.displayName=q.displayName;export{Fe as T,$e as a,Be as b,_e as c};
2//# sourceMappingURL=tooltip-BJdGgfWM.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.