{"version":3,"sources":["jsdelivr-header.js","/npm/use-is-online-react@1.0.1/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aACA,OAAO,eAAe,QAAS,aAAc,CAAE,OAAO,IACtD,QAAQ,iBAAc,EACtB,MAAM,QAAU,QAAQ,SAClB,eAAiB,IAAM,OACvB,yBAA2B,KAAM,EAWvC,SAAS,YAAY,GAAO,GACxB,MAAM,GAAiB,EAAI,QAAQ,sBAAsB,qBAAsB,sBACzE,GAAiB,EAAI,QAAQ,sBAAsB,EAAO,mBAAqB,eAAgB,EAAO,gBAAkB,0BAC9H,OAAO,KAAoB,GAAQ,EACvC,CACA,QAAQ,YAAc,YACtB,SAAW,GAOP,EAAY,WAAa,yCAC5B,CARD,CAQG,cAAgB,QAAQ,YAAc,YAAc,CAAC,IACxD,QAAQ,QAAU,YAElB,MAAM,qBAAwB,IAC1B,OAAO,iBAAiB,SAAU,GAClC,OAAO,iBAAiB,UAAW,GAC5B,KACH,OAAO,oBAAoB,SAAU,GACrC,OAAO,oBAAoB,UAAW,EAAS,GAGjD,qBAAuB,IAAM,UAAU,OAE7C,IAAI,WACA,aAAe,IACf,aAAe,UAAU,OACzB,iBAAmB,EACnB,SAAW,OACf,MAAM,QAAU,IAAI,IA4BpB,SAAS,eACL,MAAM,EAAQ,mBAGd,OAFA,QAAQ,IAAI,GACZ,SAAS,gDAAgD,KACrD,YACA,SAAS,gCAAgC,YAAY,cAC9C,IAEX,SAAS,gCAAgC,YAAY,oBAAoB,kBACzE,cAAe,EACf,WAAa,aAAY,KACrB,MAAM,YAAY,WAAY,CAAE,MAAO,aAClC,MAAK,KACN,SAAS,uBAAuB,YAAY,kDACvC,eACD,cAAe,EACf,OAAO,cAAc,IAAI,MAAM,iBACnC,IAEC,OAAM,KACP,SAAS,uBAAuB,YAAY,mDACxC,eACA,cAAe,EACf,OAAO,cAAc,IAAI,MAAM,kBACnC,GACF,GACH,cACI,EACX,CACA,SAAS,YAAY,GACjB,QAAQ,OAAO,GACf,SAAS,kDAAkD,KACtD,QAAQ,KAMT,SAAS,8BAA8B,YAAY,mBAAmB,QAAQ,iBAL9E,cAAc,YACd,gBAAa,EACb,SAAS,gCAAgC,YAAY,cAK7D,CAnEA,OAAO,iBAAiB,YAAa,CACjC,aAAc,CACV,IAAK,IAAM,aACX,IAAM,IACF,GAAI,EAAQ,IACR,MAAM,IAAI,MAAM,oDAMpB,OAJI,YACA,QAAQ,KAAK,yHAAyH,QAAQ,gCAElJ,aAAe,EACR,CAAK,GAGpB,MAAO,CACH,IAAG,MAAc,SACjB,IAAI,IAEI,SADA,EACW,QAAQ,MAAM,KAAK,SAGnB,OAER,MA6CnB,MAAM,mBAAsB,IACxB,OAAO,iBAAiB,eAAgB,GACxC,OAAO,iBAAiB,gBAAiB,GACzC,MAAM,EAAQ,eACd,MAAO,KACH,OAAO,oBAAoB,eAAgB,GAC3C,OAAO,oBAAoB,gBAAiB,GAC5C,YAAY,EAAM,CACrB,EAEC,gBAAkB,KAAO,YAAc","file":"/npm/use-is-online-react@1.0.1/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/use-is-online-react@1.0.1/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.useIsOnline = void 0;\nconst react_1 = require(\"react\");\nconst NOOP_SUBSCRIBE = () => () => { };\nconst NON_POLLING_GET_SNAPSHOT = () => true;\n/**\n * A react hook that returns whether or not the client is connected to the internet.\n *\n * @param poll Whether or not to periodically poll for online status. When `false`, simply returns\n * {@link navigator.onLine | `navigator.onLine`}. `navigator.onLine` may return a false positive if the client is\n * connected to any network even if it does not have access to the global internet. Enabling polling (the default\n * behavior) will make `useIsOnline` more accurate by periodically making a {@link fetch} request to a known endpoint.\n *\n * @returns `true` if the client is connected to the internet, else `false`.\n */\nfunction useIsOnline(poll = true) {\n    const simpleIsOnline = (0, react_1.useSyncExternalStore)(subscribeToNavigator, getNavigatorSnapshot);\n    const polledIsOnline = (0, react_1.useSyncExternalStore)(poll ? subscribeToPolling : NOOP_SUBSCRIBE, poll ? getPollSnapshot : NON_POLLING_GET_SNAPSHOT);\n    return simpleIsOnline && (!poll || polledIsOnline);\n}\nexports.useIsOnline = useIsOnline;\n(function (useIsOnline) {\n    /**\n     * The URL to poll to detect internet connectivity.  If you want to detect internet connectivity to your server,\n     * change this value to an HTTP/HTTPS GET endpoint provided by your server.  The response body is ignored.\n     *\n     * @default '//captive.apple.com/hotspot-detect.html'\n     */\n    useIsOnline.pollingUrl = '//captive.apple.com/hotspot-detect.html';\n})(useIsOnline || (exports.useIsOnline = useIsOnline = {}));\nexports.default = useIsOnline;\n// navigator.onLine //\nconst subscribeToNavigator = (callback) => {\n    window.addEventListener('online', callback);\n    window.addEventListener('offline', callback);\n    return () => {\n        window.removeEventListener('online', callback);\n        window.removeEventListener('offline', callback);\n    };\n};\nconst getNavigatorSnapshot = () => navigator.onLine;\n// polling //\nlet intervalId;\nlet pollInterval = 5000;\nlet isOnlinePoll = navigator.onLine;\nlet curPollerTokenId = 0;\nlet logDebug = () => { };\nconst pollers = new Set();\nObject.defineProperties(useIsOnline, {\n    pollInterval: {\n        get: () => pollInterval,\n        set: (value) => {\n            if (value < 1000) {\n                throw new Error('useIsOnline.pollInterval must be at least 1000ms');\n            }\n            if (intervalId) {\n                console.warn(`useIsOnline: Change to useIsOnline.pollInterval will not go into effect until all pollers are unregistered. Currently ${pollers.size} pollers are registered.`);\n            }\n            pollInterval = value;\n            return value;\n        }\n    },\n    debug: {\n        get() { return !!logDebug; },\n        set(value) {\n            if (value) {\n                logDebug = console.debug.bind(console);\n            }\n            else {\n                logDebug = () => { };\n            }\n            return value;\n        }\n    }\n});\nfunction startPolling() {\n    const token = curPollerTokenId++;\n    pollers.add(token);\n    logDebug(`useIsOnline: registered poller with token id ${token}`);\n    if (intervalId) {\n        logDebug(`useIsOnline: already polling ${useIsOnline.pollingUrl}`);\n        return token;\n    }\n    logDebug(`useIsOnline: started polling ${useIsOnline.pollingUrl} every ${pollInterval}ms`);\n    isOnlinePoll = true;\n    intervalId = setInterval(() => {\n        fetch(useIsOnline.pollingUrl, { cache: 'no-store' })\n            .then(() => {\n            logDebug(`useIsOnline: polled ${useIsOnline.pollingUrl} and determined connection is online`);\n            if (!isOnlinePoll) {\n                isOnlinePoll = true;\n                window.dispatchEvent(new Event('polledOnline'));\n            }\n        })\n            .catch(() => {\n            logDebug(`useIsOnline: polled ${useIsOnline.pollingUrl} and determined connection is offline`);\n            if (isOnlinePoll) {\n                isOnlinePoll = false;\n                window.dispatchEvent(new Event('polledOffline'));\n            }\n        });\n    }, pollInterval);\n    return token;\n}\nfunction stopPolling(token) {\n    pollers.delete(token);\n    logDebug(`useIsOnline: unregistered poller with token id ${token}`);\n    if (!pollers.size) {\n        clearInterval(intervalId);\n        intervalId = undefined;\n        logDebug(`useIsOnline: stopped polling ${useIsOnline.pollingUrl}`);\n    }\n    else {\n        logDebug(`useIsOnline: still polling ${useIsOnline.pollingUrl} with ${pollers.size} pollers`);\n    }\n}\nconst subscribeToPolling = (callback) => {\n    window.addEventListener('polledOnline', callback);\n    window.addEventListener('polledOffline', callback);\n    const token = startPolling();\n    return () => {\n        window.removeEventListener('polledOnline', callback);\n        window.removeEventListener('polledOffline', callback);\n        stopPolling(token);\n    };\n};\nconst getPollSnapshot = () => !intervalId || isOnlinePoll;\n"]}