PageSourceSearch

https://tesana.com/assets/useFloatingGamePreview-Cu6ehEJD.js

js tesana.com collected 2026-10-09 22:42:05 UTC 2,266 bytes, 1 lines download raw bytes

1import{a as O,j as E,A as S,m as C}from"./vendor-motion-hRg_q8lq.js";import{r as e}from"./vendor-react-E98sgxjj.js";import{G as j}from"./GamePreviewPane-AtglE-1J.js";const G=200,R=150,h=320,p=16,v=16;function b(g){const n=e.useRef(),i=e.useRef(),d=e.useRef(null),c=e.useRef(null),s=e.useRef(null),u=e.useRef(!1),l=e.useRef(),[a,f]=e.useState(null),[T,x]=e.useState({top:0,left:0}),w=O(),m=e.useCallback(()=>{const o=c.current,t=d.current;if(!o||!t)return;const r=o.getBoundingClientRect(),I=window.innerHeight-p-v,L=Math.min(t.scrollHeight,I),y=Math.max(p,Math.min(r.top,window.innerHeight-L-v)),A=Math.min(r.right+24,window.innerWidth-h-16);x({top:y,left:A})},[]);e.useEffect(()=>()=>{clearTimeout(n.current),clearTimeout(i.current),s.current&&cancelAnimationFrame(s.current)},[]),e.useLayoutEffect(()=>{a&&(m(),w.set({opacity:0,x:8}),w.start({opacity:1,x:0,transition:{duration:.16}}))},[a,m,w]),e.useEffect(()=>{const o=()=>{u.current=!0,l.current&&clearTimeout(l.current),l.current=setTimeout(()=>{u.current=!1},160)},t=()=>{if(o(),!d.current){clearTimeout(n.current);return}s.current||(s.current=requestAnimationFrame(()=>{s.current=null,m()}))},r=()=>m();return window.addEventListener("scroll",t,{passive:!0}),window.addEventListener("resize",r),()=>{window.removeEventListener("scroll",t),window.removeEventListener("resize",r),l.current&&clearTimeout(l.current)}},[m]),e.useEffect(()=>{c.current=null,f(null)},[g]);const P=e.useCallback(o=>({onMouseEnter:t=>{if(u.current)return;const r=t.currentTarget;clearTimeout(i.current),clearTimeout(n.current),n.current=setTimeout(()=>{c.current=r,f({game:o})},G)},onMouseLeave:()=>{u.current||(clearTimeout(n.current),i.current=setTimeout(()=>{c.current=null,f(null)},R))}}),[]),M=()=>clearTimeout(i.current),_=()=>{u.current||(clearTimeout(n.current),i.current=setTimeout(()=>{c.current=null,f(null)},R))},H=E.jsx(S,{children:a&&E.jsx(C.div,{ref:d,initial:{opacity:0,x:8},animate:w,exit:{opacity:0,x:8},transition:{duration:.16},className:"hidden lg:block fixed z-30 overflow-y-auto scrollbar-hide",style:{top:T.top,left:T.left,width:h,maxHeight:window.innerHeight-p-v},onMouseEnter:M,onMouseLeave:_,children:E.jsx(j,{game:a.game})})});return{previewedId:a?.game.id??null,rowProps:P,previewNode:H}}export{b as u};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.