{"version":3,"file":"react-beforeunload.cjs","sources":["../src/useBeforeunload.js","../src/Beforeunload.js"],"sourcesContent":["import { useEffect, useRef } from \"react\";\n\n/**\n * @callback BeforeUnloadHandler\n * @param {BeforeUnloadEvent} event\n * @returns {boolean|string|undefined} Truthy values trigger the confirmation dialog.\n */\n\n/**\n * React hook that listens to `beforeunload` window event.\n * @function\n * @param {BeforeUnloadHandler|false|null|undefined} handler - Event listener callback:\n *   Called on `beforeunload` window event. It activates a confirmation dialog\n *   when `event.preventDefault()` is called or a truthy value is returned.\n */\nexport const useBeforeunload = (handler) => {\n  const handlerRef = useRef(handler);\n  useEffect(() => {\n    handlerRef.current = handler;\n  });\n\n  const enabled = typeof handler === \"function\";\n\n  useEffect(() => {\n    if (enabled) {\n      const listener = (event) => {\n        const returnValue = handlerRef.current(event);\n        /** @see https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event */\n        if (returnValue || typeof returnValue === \"string\") {\n          event.preventDefault();\n          event.returnValue = returnValue;\n        } else if (event.defaultPrevented) {\n          event.returnValue = true;\n        }\n      };\n      window.addEventListener(\"beforeunload\", listener);\n      return () => window.removeEventListener(\"beforeunload\", listener);\n    }\n  }, [enabled]);\n};\n","import { useBeforeunload } from \"./useBeforeunload\";\n\nexport const Beforeunload = ({ children = null, onBeforeunload }) => {\n  useBeforeunload(onBeforeunload);\n  return children;\n};\n"],"names":["useBeforeunload","handler","handlerRef","useRef","useEffect","enabled","listener","event","returnValue","Beforeunload","children","onBeforeunload"],"mappings":"yGAeaA,EAAmBC,GAAY,CAC1C,MAAMC,EAAaC,EAAAA,OAAOF,CAAO,EACjCG,EAAAA,UAAU,IAAM,CACdF,EAAW,QAAUD,CACvB,CAAC,EAED,MAAMI,EAAU,OAAOJ,GAAY,WAEnCG,EAAAA,UAAU,IAAM,CACd,GAAIC,EAAS,CACX,MAAMC,EAAYC,GAAU,CAC1B,MAAMC,EAAcN,EAAW,QAAQK,CAAK,EAExCC,GAAe,OAAOA,GAAgB,UACxCD,EAAM,eAAc,EACpBA,EAAM,YAAcC,GACXD,EAAM,mBACfA,EAAM,YAAc,GAExB,EACA,cAAO,iBAAiB,eAAgBD,CAAQ,EACzC,IAAM,OAAO,oBAAoB,eAAgBA,CAAQ,CAClE,CACF,EAAG,CAACD,CAAO,CAAC,CACd,ECrCaI,EAAe,CAAC,CAAE,SAAAC,EAAW,KAAM,eAAAC,CAAc,KAC5DX,EAAgBW,CAAc,EACvBD"}