{"version":3,"file":"useHeroCursor-EMVWw1Fw.js","names":["useEffect","useHeroCursor","t0","$","_c","selector","undefined","t1","t2","section","document","querySelector","cursor","media","window","matchMedia","ease","_temp","axis","_temp2","x","y","xp","yp","retarget","_temp3","step","item_0","dt","item","t","Math","min","dur","current","from","to","last","performance","now","frame","paint","dt_0","style","transform","offsetWidth","offsetHeight","some","_temp4","requestAnimationFrame","onMove","event","edge","clientX","innerWidth","clientY","innerHeight","start","addEventListener","stop","removeEventListener","cancelAnimationFrame","sync","matches","item_1","value_0","value"],"sources":["../../src/components/features/povio/collaboration/useHeroCursor.ts"],"sourcesContent":["import { useEffect } from \"react\";\nexport function useHeroCursor(selector = \".hero_team_wrap\") {\n  useEffect(() => {\n    const section = document.querySelector<HTMLElement>(selector);\n    const cursor = section?.querySelector<HTMLElement>(\".cursor\");\n    if (section && cursor) {\n      const media = window.matchMedia(\n        \"(min-width: 992px) and (hover: hover) and (prefers-reduced-motion: no-preference)\",\n      );\n      const ease = (t: number) => 1 - (1 - t) ** 3;\n      const axis = (value: number, dur: number) => ({ current: value, from: value, to: value, t: 1, dur });\n      const x = axis(0, 0.5);\n      const y = axis(0, 0.5);\n      const xp = axis(-4, 0.9);\n      const yp = axis(50, 0.9);\n      const retarget = (item: ReturnType<typeof axis>, value: number) => {\n        if (item.to === value) {\n          return;\n        }\n        item.from = item.current;\n        item.to = value;\n        item.t = 0;\n      };\n      const step = (item: ReturnType<typeof axis>, dt: number) => {\n        if (item.t >= 1) {\n          return;\n        }\n        item.t = Math.min(1, item.t + dt / item.dur);\n        item.current = item.from + (item.to - item.from) * ease(item.t);\n      };\n      let last = performance.now();\n      let frame = 0;\n\n      const paint = (now: number) => {\n        const dt = Math.min(0.05, (now - last) / 1000);\n        last = now;\n        step(x, dt);\n        step(y, dt);\n        step(xp, dt);\n        step(yp, dt);\n        cursor.style.transform = `translate(${x.current + (cursor.offsetWidth * xp.current) / 100}px, ${y.current + (cursor.offsetHeight * yp.current) / 100}px)`;\n        frame = [x, y, xp, yp].some((item) => item.t < 1) ? requestAnimationFrame(paint) : 0;\n      };\n\n      const onMove = (event: MouseEvent) => {\n        const edge = cursor.offsetWidth + 16;\n        retarget(xp, event.clientX > window.innerWidth - edge ? -100 : -4);\n        retarget(yp, event.clientY > window.innerHeight * 0.9 ? -120 : 50);\n        retarget(x, event.clientX);\n        retarget(y, event.clientY);\n        if (!frame) {\n          last = performance.now();\n          frame = requestAnimationFrame(paint);\n        }\n      };\n\n      const start = () => {\n        section.addEventListener(\"mousemove\", onMove);\n      };\n      const stop = () => {\n        section.removeEventListener(\"mousemove\", onMove);\n        cancelAnimationFrame(frame);\n        cursor.style.transform = \"\";\n        frame = 0;\n      };\n      const sync = () => (media.matches ? start() : stop());\n      sync();\n      media.addEventListener(\"change\", sync);\n      return () => {\n        stop();\n        media.removeEventListener(\"change\", sync);\n      };\n    }\n  }, [selector]);\n}\n"],"mappings":"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"}