@anoki/fse-ui
Version:
FSE UI components library
3 lines (2 loc) • 7.25 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const F=require("react"),y=require("./index.cjs466.js"),O=require("./index.cjs465.js"),B=require("./index.cjs464.js"),U=require("./index.cjs473.js"),g=require("./index.cjs570.js"),V=require("./index.cjs476.js"),Y=require("./index.cjs477.js"),X=require("./index.cjs467.js"),z=require("./index.cjs641.js"),f=require("./index.cjs237.js");function K(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 c=K(F);var[R]=B.createContextScope("Tooltip",[g.createPopperScope]),_=g.createPopperScope(),D="TooltipProvider",W=700,L="tooltip.open",[J,k]=R(D),A=t=>{const{__scopeTooltip:o,delayDuration:e=W,skipDelayDuration:r=300,disableHoverableContent:n=!1,children:a}=t,s=c.useRef(!0),d=c.useRef(!1),i=c.useRef(0);return c.useEffect(()=>{const u=i.current;return()=>window.clearTimeout(u)},[]),f.jsxRuntimeExports.jsx(J,{scope:o,isOpenDelayedRef:s,delayDuration:e,onOpen:c.useCallback(()=>{window.clearTimeout(i.current),s.current=!1},[]),onClose:c.useCallback(()=>{window.clearTimeout(i.current),i.current=window.setTimeout(()=>s.current=!0,r)},[r]),isPointerInTransitRef:d,onPointerInTransitChange:c.useCallback(u=>{d.current=u},[]),disableHoverableContent:n,children:a})};A.displayName=D;var M="Tooltip",[pe,b]=R(M),j="TooltipTrigger",H=c.forwardRef((t,o)=>{const{__scopeTooltip:e,...r}=t,n=b(j,e),a=k(j,e),s=_(e),d=c.useRef(null),i=O.useComposedRefs(o,d,n.onTriggerChange),u=c.useRef(!1),l=c.useRef(!1),p=c.useCallback(()=>u.current=!1,[]);return c.useEffect(()=>()=>document.removeEventListener("pointerup",p),[p]),f.jsxRuntimeExports.jsx(g.Anchor,{asChild:!0,...s,children:f.jsxRuntimeExports.jsx(Y.Primitive.button,{"aria-describedby":n.open?n.contentId:void 0,"data-state":n.stateAttribute,...r,ref:i,onPointerMove:y.composeEventHandlers(t.onPointerMove,x=>{x.pointerType!=="touch"&&!l.current&&!a.isPointerInTransitRef.current&&(n.onTriggerEnter(),l.current=!0)}),onPointerLeave:y.composeEventHandlers(t.onPointerLeave,()=>{n.onTriggerLeave(),l.current=!1}),onPointerDown:y.composeEventHandlers(t.onPointerDown,()=>{n.open&&n.onClose(),u.current=!0,document.addEventListener("pointerup",p,{once:!0})}),onFocus:y.composeEventHandlers(t.onFocus,()=>{u.current||n.onOpen()}),onBlur:y.composeEventHandlers(t.onBlur,n.onClose),onClick:y.composeEventHandlers(t.onClick,n.onClose)})})});H.displayName=j;var Q="TooltipPortal",[de,Z]=R(Q,{forceMount:void 0}),E="TooltipContent",S=c.forwardRef((t,o)=>{const e=Z(E,t.__scopeTooltip),{forceMount:r=e.forceMount,side:n="top",...a}=t,s=b(E,t.__scopeTooltip);return f.jsxRuntimeExports.jsx(V.Presence,{present:r||s.open,children:s.disableHoverableContent?f.jsxRuntimeExports.jsx(I,{side:n,...a,ref:o}):f.jsxRuntimeExports.jsx(ee,{side:n,...a,ref:o})})}),ee=c.forwardRef((t,o)=>{const e=b(E,t.__scopeTooltip),r=k(E,t.__scopeTooltip),n=c.useRef(null),a=O.useComposedRefs(o,n),[s,d]=c.useState(null),{trigger:i,onClose:u}=e,l=n.current,{onPointerInTransitChange:p}=r,x=c.useCallback(()=>{d(null),p(!1)},[p]),h=c.useCallback((v,m)=>{const T=v.currentTarget,C={x:v.clientX,y:v.clientY},P=ne(C,T.getBoundingClientRect()),w=se(C,P),G=ie(m.getBoundingClientRect()),$=ae([...w,...G]);d($),p(!0)},[p]);return c.useEffect(()=>()=>x(),[x]),c.useEffect(()=>{if(i&&l){const v=T=>h(T,l),m=T=>h(T,i);return i.addEventListener("pointerleave",v),l.addEventListener("pointerleave",m),()=>{i.removeEventListener("pointerleave",v),l.removeEventListener("pointerleave",m)}}},[i,l,h,x]),c.useEffect(()=>{if(s){const v=m=>{const T=m.target,C={x:m.clientX,y:m.clientY},P=(i==null?void 0:i.contains(T))||(l==null?void 0:l.contains(T)),w=!ce(C,s);P?x():w&&(x(),u())};return document.addEventListener("pointermove",v),()=>document.removeEventListener("pointermove",v)}},[i,l,s,u,x]),f.jsxRuntimeExports.jsx(I,{...t,ref:a})}),[te,oe]=R(M,{isInside:!1}),re=X.createSlottable("TooltipContent"),I=c.forwardRef((t,o)=>{const{__scopeTooltip:e,children:r,"aria-label":n,onEscapeKeyDown:a,onPointerDownOutside:s,...d}=t,i=b(E,e),u=_(e),{onClose:l}=i;return c.useEffect(()=>(document.addEventListener(L,l),()=>document.removeEventListener(L,l)),[l]),c.useEffect(()=>{if(i.trigger){const p=x=>{const h=x.target;h!=null&&h.contains(i.trigger)&&l()};return window.addEventListener("scroll",p,{capture:!0}),()=>window.removeEventListener("scroll",p,{capture:!0})}},[i.trigger,l]),f.jsxRuntimeExports.jsx(U.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:p=>p.preventDefault(),onDismiss:l,children:f.jsxRuntimeExports.jsxs(g.Content,{"data-state":i.stateAttribute,...u,...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:[f.jsxRuntimeExports.jsx(re,{children:r}),f.jsxRuntimeExports.jsx(te,{scope:e,isInside:!0,children:f.jsxRuntimeExports.jsx(z.Root,{id:i.contentId,role:"tooltip",children:n||r})})]})})});S.displayName=E;var N="TooltipArrow",q=c.forwardRef((t,o)=>{const{__scopeTooltip:e,...r}=t,n=_(e);return oe(N,e).isInside?null:f.jsxRuntimeExports.jsx(g.Arrow,{...n,...r,ref:o})});q.displayName=N;function ne(t,o){const e=Math.abs(o.top-t.y),r=Math.abs(o.bottom-t.y),n=Math.abs(o.right-t.x),a=Math.abs(o.left-t.x);switch(Math.min(e,r,n,a)){case a:return"left";case n:return"right";case e:return"top";case r:return"bottom";default:throw new Error("unreachable")}}function se(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 ie(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 a=0,s=o.length-1;a<o.length;s=a++){const d=o[a],i=o[s],u=d.x,l=d.y,p=i.x,x=i.y;l>r!=x>r&&e<(p-u)*(r-l)/(x-l)+u&&(n=!n)}return n}function ae(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),le(o)}function le(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 a=o[o.length-1],s=o[o.length-2];if((a.x-s.x)*(n.y-s.y)>=(a.y-s.y)*(n.x-s.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 a=e[e.length-1],s=e[e.length-2];if((a.x-s.x)*(n.y-s.y)>=(a.y-s.y)*(n.x-s.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 ue=A;exports.Provider=ue;exports.TooltipArrow=q;exports.TooltipContent=S;exports.TooltipProvider=A;exports.TooltipTrigger=H;
//# sourceMappingURL=index.cjs639.js.map