{"version":3,"sources":["../../src/hooks/use-track-impression.ts"],"sourcesContent":["import { useEffect, useEffectEvent, useRef } from 'react';\nimport { track } from '../track/index';\nimport type { EventName, TrackName, TrackProperties } from '../track/types';\n\nexport function useTrackImpression<\n  R extends Element = HTMLDivElement,\n  T extends EventName = EventName,\n>(name: TrackName<T>, properties?: TrackProperties<T>) {\n  const fired = useRef(false);\n  const ref = useRef<R | null>(null);\n\n  const onTrack = useEffectEvent(() => {\n    if (fired.current) return;\n    track(name, properties);\n    fired.current = true;\n  });\n\n  useEffect(() => {\n    const observer = new IntersectionObserver(\n      ([entry]) => {\n        if (!entry.isIntersecting) return;\n        onTrack();\n        observer.disconnect();\n      },\n      { threshold: 0.5 }\n    );\n\n    if (ref.current) observer.observe(ref.current);\n    return () => observer.disconnect();\n  }, [ref.current]);\n\n  return ref;\n}\n"],"mappings":";AAAA,SAAS,WAAW,gBAAgB,cAAc;AAClD,SAAS,aAAa;AAGf,SAAS,mBAGd,MAAoB,YAAiC;AACrD,QAAM,QAAQ,OAAO,KAAK;AAC1B,QAAM,MAAM,OAAiB,IAAI;AAEjC,QAAM,UAAU,eAAe,MAAM;AACnC,QAAI,MAAM,QAAS;AACnB,UAAM,MAAM,UAAU;AACtB,UAAM,UAAU;AAAA,EAClB,CAAC;AAED,YAAU,MAAM;AACd,UAAM,WAAW,IAAI;AAAA,MACnB,CAAC,CAAC,KAAK,MAAM;AACX,YAAI,CAAC,MAAM,eAAgB;AAC3B,gBAAQ;AACR,iBAAS,WAAW;AAAA,MACtB;AAAA,MACA,EAAE,WAAW,IAAI;AAAA,IACnB;AAEA,QAAI,IAAI,QAAS,UAAS,QAAQ,IAAI,OAAO;AAC7C,WAAO,MAAM,SAAS,WAAW;AAAA,EACnC,GAAG,CAAC,IAAI,OAAO,CAAC;AAEhB,SAAO;AACT;","names":[]}