dgz-ui
Version:
Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript
2 lines (1 loc) • 9.05 kB
JavaScript
;const f=require("./jsx-runtime-DUiatUiq.cjs"),Y=require("react"),C=require("./index-Ch6ABCiC.cjs"),A=require("./index-t1JFNXJ1.cjs"),X=require("./index-DcWZbXs6.cjs"),K=require("./index-k4DXjtBr.cjs"),S=require("./index-C1ZpNc2P.cjs"),b=require("./index-BMPRo8_U.cjs"),W=require("./index-CMmIsz5H.cjs"),J=require("./index-DcmSRCDy.cjs"),Q=require("./utils-C1Nf1RtL.cjs");function Z(t){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const r=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(o,e,r.get?r:{enumerable:!0,get:()=>t[e]})}}return o.default=t,Object.freeze(o)}const s=Z(Y);var[_,Ee]=X.createContextScope("Tooltip",[b.createPopperScope]),O=b.createPopperScope(),I="TooltipProvider",ee=700,L="tooltip.open",[te,H]=_(I),q=t=>{const{__scopeTooltip:o,delayDuration:e=ee,skipDelayDuration:r=300,disableHoverableContent:n=!1,children:c}=t,a=s.useRef(!0),x=s.useRef(!1),i=s.useRef(0);return s.useEffect(()=>{const p=i.current;return()=>window.clearTimeout(p)},[]),f.jsxRuntimeExports.jsx(te,{scope:o,isOpenDelayedRef:a,delayDuration:e,onOpen:s.useCallback(()=>{window.clearTimeout(i.current),a.current=!1},[]),onClose:s.useCallback(()=>{window.clearTimeout(i.current),i.current=window.setTimeout(()=>a.current=!0,r)},[r]),isPointerInTransitRef:x,onPointerInTransitChange:s.useCallback(p=>{x.current=p},[]),disableHoverableContent:n,children:c})};q.displayName=I;var j="Tooltip",[oe,D]=_(j),$=t=>{const{__scopeTooltip:o,children:e,open:r,defaultOpen:n,onOpenChange:c,disableHoverableContent:a,delayDuration:x}=t,i=H(j,t.__scopeTooltip),p=O(o),[l,d]=s.useState(null),v=S.useId(),u=s.useRef(0),m=a??i.disableHoverableContent,h=x??i.delayDuration,T=s.useRef(!1),[g,y]=S.useControllableState({prop:r,defaultProp:n??!1,onChange:N=>{N?(i.onOpen(),document.dispatchEvent(new CustomEvent(L))):i.onClose(),c==null||c(N)},caller:j}),R=s.useMemo(()=>g?T.current?"delayed-open":"instant-open":"closed",[g]),w=s.useCallback(()=>{window.clearTimeout(u.current),u.current=0,T.current=!1,y(!0)},[y]),P=s.useCallback(()=>{window.clearTimeout(u.current),u.current=0,y(!1)},[y]),M=s.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>{T.current=!0,y(!0),u.current=0},h)},[h,y]);return s.useEffect(()=>()=>{u.current&&(window.clearTimeout(u.current),u.current=0)},[]),f.jsxRuntimeExports.jsx(b.Root2,{...p,children:f.jsxRuntimeExports.jsx(oe,{scope:o,contentId:v,open:g,stateAttribute:R,trigger:l,onTriggerChange:d,onTriggerEnter:s.useCallback(()=>{i.isOpenDelayedRef.current?M():w()},[i.isOpenDelayedRef,M,w]),onTriggerLeave:s.useCallback(()=>{m?P():(window.clearTimeout(u.current),u.current=0)},[P,m]),onOpen:w,onClose:P,disableHoverableContent:m,children:e})})};$.displayName=j;var k="TooltipTrigger",G=s.forwardRef((t,o)=>{const{__scopeTooltip:e,...r}=t,n=D(k,e),c=H(k,e),a=O(e),x=s.useRef(null),i=A.useComposedRefs(o,x,n.onTriggerChange),p=s.useRef(!1),l=s.useRef(!1),d=s.useCallback(()=>p.current=!1,[]);return s.useEffect(()=>()=>document.removeEventListener("pointerup",d),[d]),f.jsxRuntimeExports.jsx(b.Anchor,{asChild:!0,...a,children:f.jsxRuntimeExports.jsx(W.Primitive.button,{"aria-describedby":n.open?n.contentId:void 0,"data-state":n.stateAttribute,...r,ref:i,onPointerMove:C.composeEventHandlers(t.onPointerMove,v=>{v.pointerType!=="touch"&&!l.current&&!c.isPointerInTransitRef.current&&(n.onTriggerEnter(),l.current=!0)}),onPointerLeave:C.composeEventHandlers(t.onPointerLeave,()=>{n.onTriggerLeave(),l.current=!1}),onPointerDown:C.composeEventHandlers(t.onPointerDown,()=>{n.open&&n.onClose(),p.current=!0,document.addEventListener("pointerup",d,{once:!0})}),onFocus:C.composeEventHandlers(t.onFocus,()=>{p.current||n.onOpen()}),onBlur:C.composeEventHandlers(t.onBlur,n.onClose),onClick:C.composeEventHandlers(t.onClick,n.onClose)})})});G.displayName=k;var re="TooltipPortal",[be,ne]=_(re,{forceMount:void 0}),E="TooltipContent",F=s.forwardRef((t,o)=>{const e=ne(E,t.__scopeTooltip),{forceMount:r=e.forceMount,side:n="top",...c}=t,a=D(E,t.__scopeTooltip);return f.jsxRuntimeExports.jsx(C.Presence,{present:r||a.open,children:a.disableHoverableContent?f.jsxRuntimeExports.jsx(z,{side:n,...c,ref:o}):f.jsxRuntimeExports.jsx(se,{side:n,...c,ref:o})})}),se=s.forwardRef((t,o)=>{const e=D(E,t.__scopeTooltip),r=H(E,t.__scopeTooltip),n=s.useRef(null),c=A.useComposedRefs(o,n),[a,x]=s.useState(null),{trigger:i,onClose:p}=e,l=n.current,{onPointerInTransitChange:d}=r,v=s.useCallback(()=>{x(null),d(!1)},[d]),u=s.useCallback((m,h)=>{const T=m.currentTarget,g={x:m.clientX,y:m.clientY},y=ue(g,T.getBoundingClientRect()),R=pe(g,y),w=de(h.getBoundingClientRect()),P=xe([...R,...w]);x(P),d(!0)},[d]);return s.useEffect(()=>()=>v(),[v]),s.useEffect(()=>{if(i&&l){const m=T=>u(T,l),h=T=>u(T,i);return i.addEventListener("pointerleave",m),l.addEventListener("pointerleave",h),()=>{i.removeEventListener("pointerleave",m),l.removeEventListener("pointerleave",h)}}},[i,l,u,v]),s.useEffect(()=>{if(a){const m=h=>{const T=h.target,g={x:h.clientX,y:h.clientY},y=(i==null?void 0:i.contains(T))||(l==null?void 0:l.contains(T)),R=!fe(g,a);y?v():R&&(v(),p())};return document.addEventListener("pointermove",m),()=>document.removeEventListener("pointermove",m)}},[i,l,a,p,v]),f.jsxRuntimeExports.jsx(z,{...t,ref:c})}),[ie,ae]=_(j,{isInside:!1}),ce=A.createSlottable("TooltipContent"),z=s.forwardRef((t,o)=>{const{__scopeTooltip:e,children:r,"aria-label":n,onEscapeKeyDown:c,onPointerDownOutside:a,...x}=t,i=D(E,e),p=O(e),{onClose:l}=i;return s.useEffect(()=>(document.addEventListener(L,l),()=>document.removeEventListener(L,l)),[l]),s.useEffect(()=>{if(i.trigger){const d=v=>{const u=v.target;u!=null&&u.contains(i.trigger)&&l()};return window.addEventListener("scroll",d,{capture:!0}),()=>window.removeEventListener("scroll",d,{capture:!0})}},[i.trigger,l]),f.jsxRuntimeExports.jsx(K.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:a,onFocusOutside:d=>d.preventDefault(),onDismiss:l,children:f.jsxRuntimeExports.jsxs(b.Content,{"data-state":i.stateAttribute,...p,...x,ref:o,style:{...x.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:[f.jsxRuntimeExports.jsx(ce,{children:r}),f.jsxRuntimeExports.jsx(ie,{scope:e,isInside:!0,children:f.jsxRuntimeExports.jsx(J.Root,{id:i.contentId,role:"tooltip",children:n||r})})]})})});F.displayName=E;var B="TooltipArrow",le=s.forwardRef((t,o)=>{const{__scopeTooltip:e,...r}=t,n=O(e);return ae(B,e).isInside?null:f.jsxRuntimeExports.jsx(b.Arrow,{...n,...r,ref:o})});le.displayName=B;function ue(t,o){const e=Math.abs(o.top-t.y),r=Math.abs(o.bottom-t.y),n=Math.abs(o.right-t.x),c=Math.abs(o.left-t.x);switch(Math.min(e,r,n,c)){case c:return"left";case n:return"right";case e:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function pe(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 de(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 fe(t,o){const{x:e,y:r}=t;let n=!1;for(let c=0,a=o.length-1;c<o.length;a=c++){const x=o[c],i=o[a],p=x.x,l=x.y,d=i.x,v=i.y;l>r!=v>r&&e<(d-p)*(r-l)/(v-l)+p&&(n=!n)}return n}function xe(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),ve(o)}function ve(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 c=o[o.length-1],a=o[o.length-2];if((c.x-a.x)*(n.y-a.y)>=(c.y-a.y)*(n.x-a.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 c=e[e.length-1],a=e[e.length-2];if((c.x-a.x)*(n.y-a.y)>=(c.y-a.y)*(n.x-a.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 me=q,Te=$,he=G,U=F;const ye=me,ge=Te,Ce=he,V=s.forwardRef(({className:t,sideOffset:o=4,...e},r)=>f.jsxRuntimeExports.jsx(U,{ref:r,sideOffset:o,className:Q.cn("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]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2",t),...e}));V.displayName=U.displayName;exports.Tooltip=ge;exports.TooltipContent=V;exports.TooltipProvider=ye;exports.TooltipTrigger=Ce;