{"version":3,"sources":["../../src/use-element-visibility/index.ts"],"sourcesContent":["import { useIntersectionObserver } from '../use-intersection-observer'\nimport { useSafeState } from '../use-safe-state'\nimport { useTargetElement } from '../use-target-element'\n\nimport type { UseIntersectionObserverOptions } from '../use-intersection-observer'\nimport type { ElementTarget } from '../use-target-element'\n\nexport interface UseElementVisibilityOptions extends Pick<UseIntersectionObserverOptions, 'threshold'> {\n  /**\n   * The root passed to the IntersectionObserver\n   */\n  scrollTarget?: ElementTarget\n  /**\n   * A callback function that will be called when the visibility of the target element changes\n   */\n  onChange?: (visibility: boolean) => void\n}\n\n/**\n * A React Hook that allows you to check if an element is visible in the viewport.\n */\nexport function useElementVisibility(target: ElementTarget, options: UseElementVisibilityOptions = {}): boolean {\n  const { scrollTarget, threshold = 0, onChange } = options\n\n  const scrollEl = useTargetElement(scrollTarget)\n  const [visibility, setVisibility] = useSafeState(false)\n\n  useIntersectionObserver(\n    target,\n    (intersectionObserverEntries) => {\n      let time = 0\n      let isIntersecting = false\n      for (const entry of intersectionObserverEntries) {\n        if (entry.time >= time) {\n          time = entry.time\n          isIntersecting = entry.isIntersecting\n        }\n      }\n      onChange?.(isIntersecting)\n      setVisibility(isIntersecting)\n    },\n    { root: scrollEl.current, threshold },\n  )\n\n  return visibility\n}\n"],"names":["useElementVisibility","target","options","scrollTarget","threshold","onChange","scrollEl","useTargetElement","useSafeState","visibility","setVisibility","useIntersectionObserver","intersectionObserverEntries","time","isIntersecting","entry","root","current"],"mappings":";;;;+BAqBgBA;;;eAAAA;;;uCArBwB;4BACX;gCACI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmB1B,SAASA,qBAAqBC,MAAqB;QAAEC,UAAAA,iEAAuC,CAAC;IAClG,IAAQC,eAA0CD,QAA1CC,mCAA0CD,QAA5BE,WAAAA,4CAAY,wBAAGC,WAAaH,QAAbG;IAErC,IAAMC,WAAWC,IAAAA,kCAAgB,EAACJ;IAClC,IAAoCK,iCAAAA,IAAAA,0BAAY,EAAC,YAA1CC,aAA6BD,kBAAjBE,gBAAiBF;IAEpCG,IAAAA,gDAAuB,EACrBV,QACA,SAACW;QACC,IAAIC,OAAO;QACX,IAAIC,iBAAiB;YAChB,kCAAA,2BAAA;;YAAL,QAAK,YAAeF,gDAAf,SAAA,6BAAA,QAAA,yBAAA,iCAA4C;gBAA5C,IAAMG,QAAN;gBACH,IAAIA,MAAMF,IAAI,IAAIA,MAAM;oBACtBA,OAAOE,MAAMF,IAAI;oBACjBC,iBAAiBC,MAAMD,cAAc;gBACvC;YACF;;YALK;YAAA;;;qBAAA,6BAAA;oBAAA;;;oBAAA;0BAAA;;;;QAMLT,qBAAAA,+BAAAA,SAAWS;QACXJ,cAAcI;IAChB,GACA;QAAEE,MAAMV,SAASW,OAAO;QAAEb,WAAAA;IAAU;IAGtC,OAAOK;AACT"}