UNPKG

ivt

Version:

Ivt Components Library

3 lines (2 loc) 5.31 kB
import*as e from"react";import t from"react";import{c as r,P as o,u as n}from"./index-BgU_7G37.mjs";import{c as a}from"./index-BXKQJZ6z.mjs";import{u as i}from"./index-CJw5YZXp.mjs";import{c as s,R as c,A as d,C as l,a as u}from"./index-DN2GfLYB.mjs";import{P as p,D as f}from"./index-DX37fts-.mjs";import{P as m}from"./index-Bj6b6xW8.mjs";import{jsx as h}from"react/jsx-runtime";import{c as v}from"./utils-B4HRExF_.mjs";var C,w="HoverCard",[g,P]=a(w,[s]),x=s(),[E,O]=g(w),R=t=>{const{__scopeHoverCard:r,children:o,open:n,defaultOpen:a,onOpenChange:s,openDelay:d=700,closeDelay:l=300}=t,u=x(r),p=e.useRef(0),f=e.useRef(0),m=e.useRef(!1),v=e.useRef(!1),[C,g]=i({prop:n,defaultProp:a??!1,onChange:s,caller:w}),P=e.useCallback((()=>{clearTimeout(f.current),p.current=window.setTimeout((()=>g(!0)),d)}),[d,g]),O=e.useCallback((()=>{clearTimeout(p.current),m.current||v.current||(f.current=window.setTimeout((()=>g(!1)),l))}),[l,g]),R=e.useCallback((()=>g(!1)),[g]);return e.useEffect((()=>()=>{clearTimeout(p.current),clearTimeout(f.current)}),[]),h(E,{scope:r,open:C,onOpenChange:g,onOpen:P,onClose:O,onDismiss:R,hasSelectionRef:m,isPointerDownOnContentRef:v,children:h(c,{...u,children:o})})};R.displayName=w;var b="HoverCardTrigger",S=e.forwardRef(((e,t)=>{const{__scopeHoverCard:o,...n}=e,a=O(b,o),i=x(o);return h(d,{asChild:!0,...i,children:h(m.a,{"data-state":a.open?"open":"closed",...n,ref:t,onPointerEnter:r(e.onPointerEnter,F(a.onOpen)),onPointerLeave:r(e.onPointerLeave,F(a.onClose)),onFocus:r(e.onFocus,a.onOpen),onBlur:r(e.onBlur,a.onClose),onTouchStart:r(e.onTouchStart,(e=>e.preventDefault()))})})}));S.displayName=b;var y="HoverCardPortal",[D,T]=g(y,{forceMount:void 0}),_=e=>{const{__scopeHoverCard:t,forceMount:r,children:n,container:a}=e,i=O(y,t);return h(D,{scope:t,forceMount:r,children:h(o,{present:r||i.open,children:h(p,{asChild:!0,container:a,children:n})})})};_.displayName=y;var H="HoverCardContent",N=e.forwardRef(((e,t)=>{const n=T(H,e.__scopeHoverCard),{forceMount:a=n.forceMount,...i}=e,s=O(H,e.__scopeHoverCard);return h(o,{present:a||s.open,children:h(k,{"data-state":s.open?"open":"closed",...i,onPointerEnter:r(e.onPointerEnter,F(s.onOpen)),onPointerLeave:r(e.onPointerLeave,F(s.onClose)),ref:t})})}));N.displayName=H;var k=e.forwardRef(((t,o)=>{const{__scopeHoverCard:a,onEscapeKeyDown:i,onPointerDownOutside:s,onFocusOutside:c,onInteractOutside:d,...u}=t,p=O(H,a),m=x(a),v=e.useRef(null),w=n(o,v),[g,P]=e.useState(!1);return e.useEffect((()=>{if(g){const e=document.body;return C=e.style.userSelect||e.style.webkitUserSelect,e.style.userSelect="none",e.style.webkitUserSelect="none",()=>{e.style.userSelect=C,e.style.webkitUserSelect=C}}}),[g]),e.useEffect((()=>{if(v.current){const e=()=>{P(!1),p.isPointerDownOnContentRef.current=!1,setTimeout((()=>{""!==document.getSelection()?.toString()&&(p.hasSelectionRef.current=!0)}))};return document.addEventListener("pointerup",e),()=>{document.removeEventListener("pointerup",e),p.hasSelectionRef.current=!1,p.isPointerDownOnContentRef.current=!1}}}),[p.isPointerDownOnContentRef,p.hasSelectionRef]),e.useEffect((()=>{if(v.current){(function(e){const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP});for(;r.nextNode();)t.push(r.currentNode);return t})(v.current).forEach((e=>e.setAttribute("tabindex","-1")))}})),h(f,{asChild:!0,disableOutsidePointerEvents:!1,onInteractOutside:d,onEscapeKeyDown:i,onPointerDownOutside:s,onFocusOutside:r(c,(e=>{e.preventDefault()})),onDismiss:p.onDismiss,children:h(l,{...m,...u,onPointerDown:r(u.onPointerDown,(e=>{e.currentTarget.contains(e.target)&&P(!0),p.hasSelectionRef.current=!1,p.isPointerDownOnContentRef.current=!0})),ref:w,style:{...u.style,userSelect:g?"text":void 0,WebkitUserSelect:g?"text":void 0,"--radix-hover-card-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-hover-card-content-available-width":"var(--radix-popper-available-width)","--radix-hover-card-content-available-height":"var(--radix-popper-available-height)","--radix-hover-card-trigger-width":"var(--radix-popper-anchor-width)","--radix-hover-card-trigger-height":"var(--radix-popper-anchor-height)"}})})}));function F(e){return t=>"touch"===t.pointerType?void 0:e()}e.forwardRef(((e,t)=>{const{__scopeHoverCard:r,...o}=e,n=x(r);return h(u,{...n,...o,ref:t})})).displayName="HoverCardArrow";var L=R,j=S,I=_,M=N;function A({...e}){return t.createElement(L,{"data-slot":"hover-card",...e})}function U({...e}){return t.createElement(j,{"data-slot":"hover-card-trigger",...e})}function z({className:e,align:r="center",sideOffset:o=4,...n}){return t.createElement(I,{"data-slot":"hover-card-portal"},t.createElement(M,{"data-slot":"hover-card-content",align:r,sideOffset:o,className:v("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-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 w-64 rounded-md border p-4 shadow-md outline-hidden",e),...n}))}export{A as H,U as a,z as b}; //# sourceMappingURL=hover-card-BkSVghU4.mjs.map