{"version":3,"sources":["../../src/use-document-leave/index.ts"],"sourcesContent":["import { useEventListener } from '../use-event-listener'\nimport { useSafeState } from '../use-safe-state'\n\nexport interface UseDocumentLeaveEvent {\n  relatedTarget?: EventTarget | null\n  toElement?: EventTarget | null\n}\n\n/**\n * A React Hook that tracks whether the user is leaving the document.\n */\nexport function useDocumentLeave(): boolean {\n  const [isLeft, setIsLeft] = useSafeState(false)\n\n  function handler(event: MouseEvent) {\n    const evt = (event || window.event) as UseDocumentLeaveEvent\n    const from = evt.relatedTarget || evt.toElement\n    setIsLeft(!from)\n  }\n\n  useEventListener(() => window, 'mouseout', handler, { passive: true })\n  useEventListener(() => document, ['mouseleave', 'mouseenter'], handler, { passive: true })\n\n  return isLeft\n}\n"],"names":["useDocumentLeave","useSafeState","isLeft","setIsLeft","handler","event","evt","window","from","relatedTarget","toElement","useEventListener","passive","document"],"mappings":";;;;+BAWgBA;;;eAAAA;;;gCAXiB;4BACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUtB,SAASA;IACd,IAA4BC,iCAAAA,IAAAA,0BAAY,EAAC,YAAlCC,SAAqBD,kBAAbE,YAAaF;IAE5B,SAASG,QAAQC,KAAiB;QAChC,IAAMC,MAAOD,SAASE,OAAOF,KAAK;QAClC,IAAMG,OAAOF,IAAIG,aAAa,IAAIH,IAAII,SAAS;QAC/CP,UAAU,CAACK;IACb;IAEAG,IAAAA,kCAAgB,EAAC;eAAMJ;OAAQ,YAAYH,SAAS;QAAEQ,SAAS;IAAK;IACpED,IAAAA,kCAAgB,EAAC;eAAME;OAAU;QAAC;QAAc;KAAa,EAAET,SAAS;QAAEQ,SAAS;IAAK;IAExF,OAAOV;AACT"}