ivt
Version:
Ivt Components Library
3 lines (2 loc) • 9.05 kB
JavaScript
import{c as e}from"../chunks/utils-C-nkZ_Ir.mjs";import*as t from"react";import n from"react";import{c as o}from"../chunks/index-DVnblQ-a.mjs";import{u as r}from"../chunks/index-C-j8pU3U.mjs";import{c as i}from"../chunks/index-Dr5ObK3L.mjs";import{P as a,D as s}from"../chunks/index-C_Mk3Jfk.mjs";import{u as c}from"../chunks/index-UQBMY2z8.mjs";import{c as l,R as u,A as d,C as p,a as m}from"../chunks/index-DtZD7YmJ.mjs";import{P as f}from"../chunks/index-1xuBLrml.mjs";import{P as h}from"../chunks/index-DiPp8h7C.mjs";import{createSlottable as x}from"@radix-ui/react-slot";import{u as g}from"../chunks/index-BOUg6o32.mjs";import{R as y}from"../chunks/index-CKqioLrK.mjs";import{jsx as v,jsxs as b}from"react/jsx-runtime";import"../chunks/bundle-mjs-DHbvkKp4.mjs";import"../chunks/index-DSUHCtxx.mjs";import"react-dom";import"../chunks/index-0-u0cdz8.mjs";import"../chunks/index-CnLJ482V.mjs";var[w,C]=i("Tooltip",[l]),T=l(),k="TooltipProvider",E=700,R="tooltip.open",[_,D]=w(k),P=e=>{const{__scopeTooltip:n,delayDuration:o=E,skipDelayDuration:r=300,disableHoverableContent:i=!1,children:a}=e,s=t.useRef(!0),c=t.useRef(!1),l=t.useRef(0);return t.useEffect(()=>{const e=l.current;return()=>window.clearTimeout(e)},[]),v(_,{scope:n,isOpenDelayedRef:s,delayDuration:o,onOpen:t.useCallback(()=>{window.clearTimeout(l.current),s.current=!1},[]),onClose:t.useCallback(()=>{window.clearTimeout(l.current),l.current=window.setTimeout(()=>s.current=!0,r)},[r]),isPointerInTransitRef:c,onPointerInTransitChange:t.useCallback(e=>{c.current=e},[]),disableHoverableContent:i,children:a})};P.displayName=k;var j="Tooltip",[L,O]=w(j),M=e=>{const{__scopeTooltip:n,children:o,open:r,defaultOpen:i,onOpenChange:a,disableHoverableContent:s,delayDuration:l}=e,d=D(j,e.__scopeTooltip),p=T(n),[m,f]=t.useState(null),h=c(),x=t.useRef(0),y=s??d.disableHoverableContent,b=l??d.delayDuration,w=t.useRef(!1),[C,k]=g({prop:r,defaultProp:i??!1,onChange:e=>{e?(d.onOpen(),document.dispatchEvent(new CustomEvent(R))):d.onClose(),a?.(e)},caller:j}),E=t.useMemo(()=>C?w.current?"delayed-open":"instant-open":"closed",[C]),_=t.useCallback(()=>{window.clearTimeout(x.current),x.current=0,w.current=!1,k(!0)},[k]),P=t.useCallback(()=>{window.clearTimeout(x.current),x.current=0,k(!1)},[k]),O=t.useCallback(()=>{window.clearTimeout(x.current),x.current=window.setTimeout(()=>{w.current=!0,k(!0),x.current=0},b)},[b,k]);return t.useEffect(()=>()=>{x.current&&(window.clearTimeout(x.current),x.current=0)},[]),v(u,{...p,children:v(L,{scope:n,contentId:h,open:C,stateAttribute:E,trigger:m,onTriggerChange:f,onTriggerEnter:t.useCallback(()=>{d.isOpenDelayedRef.current?O():_()},[d.isOpenDelayedRef,O,_]),onTriggerLeave:t.useCallback(()=>{y?P():(window.clearTimeout(x.current),x.current=0)},[P,y]),onOpen:_,onClose:P,disableHoverableContent:y,children:o})})};M.displayName=j;var I="TooltipTrigger",N=t.forwardRef((e,n)=>{const{__scopeTooltip:i,...a}=e,s=O(I,i),c=D(I,i),l=T(i),u=t.useRef(null),p=r(n,u,s.onTriggerChange),m=t.useRef(!1),f=t.useRef(!1),x=t.useCallback(()=>m.current=!1,[]);return t.useEffect(()=>()=>document.removeEventListener("pointerup",x),[x]),v(d,{asChild:!0,...l,children:v(h.button,{"aria-describedby":s.open?s.contentId:void 0,"data-state":s.stateAttribute,...a,ref:p,onPointerMove:o(e.onPointerMove,e=>{"touch"!==e.pointerType&&(f.current||c.isPointerInTransitRef.current||(s.onTriggerEnter(),f.current=!0))}),onPointerLeave:o(e.onPointerLeave,()=>{s.onTriggerLeave(),f.current=!1}),onPointerDown:o(e.onPointerDown,()=>{s.open&&s.onClose(),m.current=!0,document.addEventListener("pointerup",x,{once:!0})}),onFocus:o(e.onFocus,()=>{m.current||s.onOpen()}),onBlur:o(e.onBlur,s.onClose),onClick:o(e.onClick,s.onClose)})})});N.displayName=I;var H="TooltipPortal",[A,B]=w(H,{forceMount:void 0}),z=e=>{const{__scopeTooltip:t,forceMount:n,children:o,container:r}=e,i=O(H,t);return v(A,{scope:t,forceMount:n,children:v(f,{present:n||i.open,children:v(a,{asChild:!0,container:r,children:o})})})};z.displayName=H;var F="TooltipContent",K=t.forwardRef((e,t)=>{const n=B(F,e.__scopeTooltip),{forceMount:o=n.forceMount,side:r="top",...i}=e,a=O(F,e.__scopeTooltip);return v(f,{present:o||a.open,children:a.disableHoverableContent?v(G,{side:r,...i,ref:t}):v(S,{side:r,...i,ref:t})})}),S=t.forwardRef((e,n)=>{const o=O(F,e.__scopeTooltip),i=D(F,e.__scopeTooltip),a=t.useRef(null),s=r(n,a),[c,l]=t.useState(null),{trigger:u,onClose:d}=o,p=a.current,{onPointerInTransitChange:m}=i,f=t.useCallback(()=>{l(null),m(!1)},[m]),h=t.useCallback((e,t)=>{const n=e.currentTarget,o={x:e.clientX,y:e.clientY},r=function(e,t,n=5){const o=[];switch(t){case"top":o.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":o.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":o.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":o.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return o}(o,function(e,t){const n=Math.abs(t.top-e.y),o=Math.abs(t.bottom-e.y),r=Math.abs(t.right-e.x),i=Math.abs(t.left-e.x);switch(Math.min(n,o,r,i)){case i:return"left";case r:return"right";case n:return"top";case o:return"bottom";default:throw new Error("unreachable")}}(o,n.getBoundingClientRect())),i=function(e){const t=e.slice();return t.sort((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const o=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(o.y-n.y)>=(e.y-n.y)*(o.x-n.x)))break;t.pop()}t.push(o)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const o=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(o.y-t.y)>=(e.y-t.y)*(o.x-t.x)))break;n.pop()}n.push(o)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...r,...function(e){const{top:t,right:n,bottom:o,left:r}=e;return[{x:r,y:t},{x:n,y:t},{x:n,y:o},{x:r,y:o}]}(t.getBoundingClientRect())]);l(i),m(!0)},[m]);return t.useEffect(()=>()=>f(),[f]),t.useEffect(()=>{if(u&&p){const e=e=>h(e,p),t=e=>h(e,u);return u.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{u.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}},[u,p,h,f]),t.useEffect(()=>{if(c){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},o=u?.contains(t)||p?.contains(t),r=!function(e,t){const{x:n,y:o}=e;let r=!1;for(let e=0,i=t.length-1;e<t.length;i=e++){const a=t[e],s=t[i],c=a.x,l=a.y,u=s.x,d=s.y;l>o!=d>o&&n<(u-c)*(o-l)/(d-l)+c&&(r=!r)}return r}(n,c);o?f():r&&(f(),d())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[u,p,c,d,f]),v(G,{...e,ref:s})}),[X,Y]=w(j,{isInside:!1}),q=x("TooltipContent"),G=t.forwardRef((e,n)=>{const{__scopeTooltip:o,children:r,"aria-label":i,onEscapeKeyDown:a,onPointerDownOutside:c,...l}=e,u=O(F,o),d=T(o),{onClose:m}=u;return t.useEffect(()=>(document.addEventListener(R,m),()=>document.removeEventListener(R,m)),[m]),t.useEffect(()=>{if(u.trigger){const e=e=>{const t=e.target;t?.contains(u.trigger)&&m()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[u.trigger,m]),v(s,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:c,onFocusOutside:e=>e.preventDefault(),onDismiss:m,children:b(p,{"data-state":u.stateAttribute,...d,...l,ref:n,style:{...l.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:[v(q,{children:r}),v(X,{scope:o,isInside:!0,children:v(y,{id:u.contentId,role:"tooltip",children:i||r})})]})})});K.displayName=F;var J="TooltipArrow";t.forwardRef((e,t)=>{const{__scopeTooltip:n,...o}=e,r=T(n);return Y(J,n).isInside?null:v(m,{...r,...o,ref:t})}).displayName=J;var Q=P,U=M,V=N,W=z,Z=K;function $({delayDuration:e=700,...t}){return n.createElement(Q,{"data-slot":"tooltip-provider",delayDuration:e,...t})}function ee({...e}){return n.createElement($,null,n.createElement(U,{"data-slot":"tooltip",...e}))}function te({...e}){return n.createElement(V,{"data-slot":"tooltip-trigger",...e})}function ne({className:t,sideOffset:o=0,children:r,...i}){return n.createElement(W,null,n.createElement(Z,{"data-slot":"tooltip-content",sideOffset:o,className:e("bg-popover text-popover-foreground 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]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 overflow-hidden rounded-md px-3 py-1.5 text-sm shadow-md drop-shadow",t),...i},r))}export{ee as Tooltip,ne as TooltipContent,$ as TooltipProvider,te as TooltipTrigger};
//# sourceMappingURL=index.mjs.map