@stanfordspezi/spezi-web-design-system
Version:
Stanford Biodesign Digital Health Spezi Web Design System
2 lines (1 loc) • 9.92 kB
JavaScript
"use strict";const u=require("react/jsx-runtime"),ee=require("./index-DTLvoP6e.js"),te=require("./index-DwV9MiDB.js"),oe=require("react"),C=require("./index-DMAkK3b-.js"),O=require("./index-CajSSBH7.js"),re=require("./index-DO-atGp-.js"),I=require("./index-Do9UgWQm.js"),ne=require("./index-C7R_tQdV.js"),w=require("./index-BeS1NXiP.js"),q=require("./index-B4SDXrpf.js");require("react-dom");const se=require("./index-BhY3ui5c.js"),ie=require("./index-V7nJjm5x.js");function ae(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=ae(oe);var ce=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],le=ce.reduce((t,o)=>{const e=O.createSlot(`Primitive.${o}`),r=s.forwardRef((n,c)=>{const{asChild:i,...d}=n,a=i?e:o;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),u.jsx(a,{...d,ref:c})});return r.displayName=`Primitive.${o}`,{...t,[o]:r}},{}),[D]=re.createContextScope("Tooltip",[w.createPopperScope]),L=w.createPopperScope(),$="TooltipProvider",ue=700,k="tooltip.open",[de,N]=D($),G=t=>{const{__scopeTooltip:o,delayDuration:e=ue,skipDelayDuration:r=300,disableHoverableContent:n=!1,children:c}=t,i=s.useRef(!0),d=s.useRef(!1),a=s.useRef(0);return s.useEffect(()=>{const f=a.current;return()=>window.clearTimeout(f)},[]),u.jsx(de,{scope:o,isOpenDelayedRef:i,delayDuration:e,onOpen:s.useCallback(()=>{window.clearTimeout(a.current),i.current=!1},[]),onClose:s.useCallback(()=>{window.clearTimeout(a.current),a.current=window.setTimeout(()=>i.current=!0,r)},[r]),isPointerInTransitRef:d,onPointerInTransitChange:s.useCallback(f=>{d.current=f},[]),disableHoverableContent:n,children:c})};G.displayName=$;var _="Tooltip",[pe,j]=D(_),V=t=>{const{__scopeTooltip:o,children:e,open:r,defaultOpen:n,onOpenChange:c,disableHoverableContent:i,delayDuration:d}=t,a=N(_,t.__scopeTooltip),f=L(o),[l,v]=s.useState(null),x=ne.useId(),p=s.useRef(0),h=i??a.disableHoverableContent,T=d??a.delayDuration,m=s.useRef(!1),[y,g]=se.useControllableState({prop:r,defaultProp:n??!1,onChange:M=>{M?(a.onOpen(),document.dispatchEvent(new CustomEvent(k))):a.onClose(),c?.(M)},caller:_}),P=s.useMemo(()=>y?m.current?"delayed-open":"instant-open":"closed",[y]),E=s.useCallback(()=>{window.clearTimeout(p.current),p.current=0,m.current=!1,g(!0)},[g]),R=s.useCallback(()=>{window.clearTimeout(p.current),p.current=0,g(!1)},[g]),H=s.useCallback(()=>{window.clearTimeout(p.current),p.current=window.setTimeout(()=>{m.current=!0,g(!0),p.current=0},T)},[T,g]);return s.useEffect(()=>()=>{p.current&&(window.clearTimeout(p.current),p.current=0)},[]),u.jsx(w.Root2,{...f,children:u.jsx(pe,{scope:o,contentId:x,open:y,stateAttribute:P,trigger:l,onTriggerChange:v,onTriggerEnter:s.useCallback(()=>{a.isOpenDelayedRef.current?H():E()},[a.isOpenDelayedRef,H,E]),onTriggerLeave:s.useCallback(()=>{h?R():(window.clearTimeout(p.current),p.current=0)},[R,h]),onOpen:E,onClose:R,disableHoverableContent:h,children:e})})};V.displayName=_;var A="TooltipTrigger",F=s.forwardRef((t,o)=>{const{__scopeTooltip:e,...r}=t,n=j(A,e),c=N(A,e),i=L(e),d=s.useRef(null),a=O.useComposedRefs(o,d,n.onTriggerChange),f=s.useRef(!1),l=s.useRef(!1),v=s.useCallback(()=>f.current=!1,[]);return s.useEffect(()=>()=>document.removeEventListener("pointerup",v),[v]),u.jsx(w.Anchor,{asChild:!0,...i,children:u.jsx(le.button,{"aria-describedby":n.open?n.contentId:void 0,"data-state":n.stateAttribute,...r,ref:a,onPointerMove:C.composeEventHandlers(t.onPointerMove,x=>{x.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(),f.current=!0,document.addEventListener("pointerup",v,{once:!0})}),onFocus:C.composeEventHandlers(t.onFocus,()=>{f.current||n.onOpen()}),onBlur:C.composeEventHandlers(t.onBlur,n.onClose),onClick:C.composeEventHandlers(t.onClick,n.onClose)})})});F.displayName=A;var S="TooltipPortal",[fe,ve]=D(S,{forceMount:void 0}),z=t=>{const{__scopeTooltip:o,forceMount:e,children:r,container:n}=t,c=j(S,o);return u.jsx(fe,{scope:o,forceMount:e,children:u.jsx(q.Presence,{present:e||c.open,children:u.jsx(I.Portal,{asChild:!0,container:n,children:r})})})};z.displayName=S;var b="TooltipContent",B=s.forwardRef((t,o)=>{const e=ve(b,t.__scopeTooltip),{forceMount:r=e.forceMount,side:n="top",...c}=t,i=j(b,t.__scopeTooltip);return u.jsx(q.Presence,{present:r||i.open,children:i.disableHoverableContent?u.jsx(U,{side:n,...c,ref:o}):u.jsx(xe,{side:n,...c,ref:o})})}),xe=s.forwardRef((t,o)=>{const e=j(b,t.__scopeTooltip),r=N(b,t.__scopeTooltip),n=s.useRef(null),c=O.useComposedRefs(o,n),[i,d]=s.useState(null),{trigger:a,onClose:f}=e,l=n.current,{onPointerInTransitChange:v}=r,x=s.useCallback(()=>{d(null),v(!1)},[v]),p=s.useCallback((h,T)=>{const m=h.currentTarget,y={x:h.clientX,y:h.clientY},g=ye(y,m.getBoundingClientRect()),P=Ce(y,g),E=be(T.getBoundingClientRect()),R=Pe([...P,...E]);d(R),v(!0)},[v]);return s.useEffect(()=>()=>x(),[x]),s.useEffect(()=>{if(a&&l){const h=m=>p(m,l),T=m=>p(m,a);return a.addEventListener("pointerleave",h),l.addEventListener("pointerleave",T),()=>{a.removeEventListener("pointerleave",h),l.removeEventListener("pointerleave",T)}}},[a,l,p,x]),s.useEffect(()=>{if(i){const h=T=>{const m=T.target,y={x:T.clientX,y:T.clientY},g=a?.contains(m)||l?.contains(m),P=!we(y,i);g?x():P&&(x(),f())};return document.addEventListener("pointermove",h),()=>document.removeEventListener("pointermove",h)}},[a,l,i,f,x]),u.jsx(U,{...t,ref:c})}),[he,me]=D(_,{isInside:!1}),Te=O.createSlottable("TooltipContent"),U=s.forwardRef((t,o)=>{const{__scopeTooltip:e,children:r,"aria-label":n,onEscapeKeyDown:c,onPointerDownOutside:i,...d}=t,a=j(b,e),f=L(e),{onClose:l}=a;return s.useEffect(()=>(document.addEventListener(k,l),()=>document.removeEventListener(k,l)),[l]),s.useEffect(()=>{if(a.trigger){const v=x=>{x.target?.contains(a.trigger)&&l()};return window.addEventListener("scroll",v,{capture:!0}),()=>window.removeEventListener("scroll",v,{capture:!0})}},[a.trigger,l]),u.jsx(I.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:c,onPointerDownOutside:i,onFocusOutside:v=>v.preventDefault(),onDismiss:l,children:u.jsxs(w.Content,{"data-state":a.stateAttribute,...f,...d,ref:o,style:{...d.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:[u.jsx(Te,{children:r}),u.jsx(he,{scope:e,isInside:!0,children:u.jsx(ie.Root,{id:a.contentId,role:"tooltip",children:n||r})})]})})});B.displayName=b;var Y="TooltipArrow",ge=s.forwardRef((t,o)=>{const{__scopeTooltip:e,...r}=t,n=L(e);return me(Y,e).isInside?null:u.jsx(w.Arrow,{...n,...r,ref:o})});ge.displayName=Y;function ye(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 Ce(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 be(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 we(t,o){const{x:e,y:r}=t;let n=!1;for(let c=0,i=o.length-1;c<o.length;i=c++){const d=o[c],a=o[i],f=d.x,l=d.y,v=a.x,x=a.y;l>r!=x>r&&e<(v-f)*(r-l)/(x-l)+f&&(n=!n)}return n}function Pe(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),Ee(o)}function Ee(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],i=o[o.length-2];if((c.x-i.x)*(n.y-i.y)>=(c.y-i.y)*(n.x-i.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],i=e[e.length-2];if((c.x-i.x)*(n.y-i.y)>=(c.y-i.y)*(n.x-i.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 Re=G,_e=V,je=F,Oe=z,De=B;const X=Re,K=_e,W=je,J={variant:{default:"bg-popover text-popover-foreground",inverted:"bg-inverted text-inverted-foreground"}},Q=ee.cva("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 w-max overflow-hidden rounded-sm border px-2 py-0.5 shadow-sm",{variants:J,defaultVariants:{variant:"default"}}),Z=({className:t,sideOffset:o=4,variant:e="default",...r})=>u.jsx(De,{"data-slot":"tooltip-content","data-variant":e,sideOffset:o,className:te.cn(Q({variant:e,className:t})),...r}),Le=({children:t,tooltip:o,className:e,sideOffset:r,side:n,variant:c,delayDuration:i=0,...d})=>u.jsx(X,{children:u.jsxs(K,{...d,delayDuration:i,children:[t&&u.jsx(W,{asChild:!0,children:t}),u.jsx(Z,{side:n,sideOffset:r,variant:c,className:e,children:o})]})});exports.Portal=Oe;exports.Tooltip=Le;exports.TooltipContent=Z;exports.TooltipProvider=X;exports.TooltipRoot=K;exports.TooltipTrigger=W;exports.tooltipVariance=Q;exports.tooltipVariants=J;