{"version":3,"names":["React","currentLocation","window","location","pathname","search","isProceeding","pendingNavigation","blockerCallbacks","Map","listenersSetup","setupListeners","addEventListener","nextLocation","callbacks","shouldBlock","previousLocation","historyAction","history","go","onBlock","originalPushState","pushState","bind","originalReplaceState","replaceState","state","title","url","toString","event","preventDefault","returnValue","useBlocker","setState","useState","blockedLocation","setBlockedLocation","idRef","useRef","shouldBlockRef","current","useEffect","id","Symbol","set","block","pending","onProceed","onReset","delete","reset","useCallback","proceed","requestAnimationFrame","back","checkBlocker"],"sources":["useBlocker.mjs"],"sourcesContent":["import * as React from \"react\";\n\nlet currentLocation = typeof window !== \"undefined\" ? window.location.pathname + window.location.search : \"\";\nlet isProceeding = false;\nlet pendingNavigation = null;\nconst blockerCallbacks = /* @__PURE__ */ new Map();\nlet listenersSetup = false;\nfunction setupListeners() {\n\tif (listenersSetup || typeof window === \"undefined\") return;\n\tlistenersSetup = true;\n\tcurrentLocation = window.location.pathname + window.location.search;\n\twindow.addEventListener(\"popstate\", () => {\n\t\tif (isProceeding) return;\n\t\tconst nextLocation = window.location.pathname + window.location.search;\n\t\tfor (const [, callbacks] of blockerCallbacks) if (callbacks.shouldBlock()) {\n\t\t\tpendingNavigation = {\n\t\t\t\tpreviousLocation: currentLocation,\n\t\t\t\tnextLocation,\n\t\t\t\thistoryAction: \"pop\"\n\t\t\t};\n\t\t\twindow.history.go(1);\n\t\t\tcallbacks.onBlock(pendingNavigation);\n\t\t\treturn;\n\t\t}\n\t\tcurrentLocation = nextLocation;\n\t});\n\tconst originalPushState = window.history.pushState.bind(window.history);\n\tconst originalReplaceState = window.history.replaceState.bind(window.history);\n\twindow.history.pushState = function(state, title, url) {\n\t\tif (isProceeding || !url) return originalPushState(state, title, url);\n\t\tconst nextLocation = typeof url === \"string\" ? url : url.toString();\n\t\tfor (const [, callbacks] of blockerCallbacks) if (callbacks.shouldBlock()) {\n\t\t\tpendingNavigation = {\n\t\t\t\tpreviousLocation: currentLocation,\n\t\t\t\tnextLocation,\n\t\t\t\thistoryAction: \"push\"\n\t\t\t};\n\t\t\tcallbacks.onBlock(pendingNavigation);\n\t\t\treturn;\n\t\t}\n\t\tcurrentLocation = nextLocation;\n\t\treturn originalPushState(state, title, url);\n\t};\n\twindow.history.replaceState = function(state, title, url) {\n\t\tif (isProceeding || !url) return originalReplaceState(state, title, url);\n\t\tconst nextLocation = typeof url === \"string\" ? url : url.toString();\n\t\tfor (const [, callbacks] of blockerCallbacks) if (callbacks.shouldBlock()) {\n\t\t\tpendingNavigation = {\n\t\t\t\tpreviousLocation: currentLocation,\n\t\t\t\tnextLocation,\n\t\t\t\thistoryAction: \"replace\"\n\t\t\t};\n\t\t\tcallbacks.onBlock(pendingNavigation);\n\t\t\treturn;\n\t\t}\n\t\tcurrentLocation = nextLocation;\n\t\treturn originalReplaceState(state, title, url);\n\t};\n\twindow.addEventListener(\"beforeunload\", (event) => {\n\t\tfor (const [, callbacks] of blockerCallbacks) if (callbacks.shouldBlock()) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.returnValue = \"\";\n\t\t\treturn;\n\t\t}\n\t});\n}\nfunction useBlocker(shouldBlock) {\n\tconst [state, setState] = React.useState(\"unblocked\");\n\tconst [blockedLocation, setBlockedLocation] = React.useState(null);\n\tconst idRef = React.useRef(null);\n\tconst shouldBlockRef = React.useRef(shouldBlock);\n\tshouldBlockRef.current = shouldBlock;\n\tReact.useEffect(() => {\n\t\tif (typeof window === \"undefined\") return;\n\t\tsetupListeners();\n\t\tconst id = /* @__PURE__ */ Symbol(\"blocker\");\n\t\tidRef.current = id;\n\t\tblockerCallbacks.set(id, {\n\t\t\tshouldBlock: () => {\n\t\t\t\tconst block = shouldBlockRef.current;\n\t\t\t\tif (typeof block === \"function\") return block({\n\t\t\t\t\tcurrentLocation,\n\t\t\t\t\tnextLocation: pendingNavigation?.nextLocation || \"\",\n\t\t\t\t\thistoryAction: pendingNavigation?.historyAction || \"push\"\n\t\t\t\t});\n\t\t\t\treturn block;\n\t\t\t},\n\t\t\tonBlock: (pending) => {\n\t\t\t\tsetBlockedLocation(pending.nextLocation);\n\t\t\t\tsetState(\"blocked\");\n\t\t\t},\n\t\t\tonProceed: () => {\n\t\t\t\tsetState(\"proceeding\");\n\t\t\t},\n\t\t\tonReset: () => {\n\t\t\t\tsetState(\"unblocked\");\n\t\t\t\tsetBlockedLocation(null);\n\t\t\t}\n\t\t});\n\t\treturn () => {\n\t\t\tblockerCallbacks.delete(id);\n\t\t};\n\t}, []);\n\tconst reset = React.useCallback(() => {\n\t\tpendingNavigation = null;\n\t\tsetBlockedLocation(null);\n\t\tsetState(\"unblocked\");\n\t}, []);\n\tconst proceed = React.useCallback(() => {\n\t\tif (!pendingNavigation) return;\n\t\tsetState(\"proceeding\");\n\t\tisProceeding = true;\n\t\tconst pending = pendingNavigation;\n\t\tpendingNavigation = null;\n\t\trequestAnimationFrame(() => {\n\t\t\tif (pending.historyAction === \"pop\") window.history.back();\n\t\t\telse if (pending.historyAction === \"push\") window.history.pushState(null, \"\", pending.nextLocation);\n\t\t\telse window.history.replaceState(null, \"\", pending.nextLocation);\n\t\t\tcurrentLocation = pending.nextLocation;\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tisProceeding = false;\n\t\t\t\tsetBlockedLocation(null);\n\t\t\t\tsetState(\"unblocked\");\n\t\t\t});\n\t\t});\n\t}, []);\n\tif (state === \"unblocked\") return { state: \"unblocked\" };\n\tif (state === \"proceeding\") return {\n\t\tstate: \"proceeding\",\n\t\tlocation: blockedLocation\n\t};\n\treturn {\n\t\tstate: \"blocked\",\n\t\treset,\n\t\tproceed,\n\t\tlocation: blockedLocation\n\t};\n}\nfunction checkBlocker(nextLocation, historyAction = \"push\") {\n\tif (typeof window === \"undefined\") return false;\n\tif (isProceeding) return false;\n\tfor (const [, callbacks] of blockerCallbacks) if (callbacks.shouldBlock()) {\n\t\tpendingNavigation = {\n\t\t\tpreviousLocation: currentLocation,\n\t\t\tnextLocation,\n\t\t\thistoryAction\n\t\t};\n\t\tcallbacks.onBlock(pendingNavigation);\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport { checkBlocker, useBlocker };"],"mappings":"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","ignoreList":[]}