{"version":3,"sources":["/home/runner/work/react-grecaptcha-v3/react-grecaptcha-v3/dist/ReCaptchaProvider.cjs","../src/ReCaptchaProvider.tsx"],"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","ReCaptchaProvider_exports","Context","default","ReCaptchaProvider_default","defaultScriptId","module","exports","import_jsx_runtime","require","import_react","import_subscribeEvent","import_unsubscribeEvent","import_useHandleNextInQueue","import_useQueueRef","import_utils","createContext","ReCaptchaProvider","siteKey","children","scriptProps","useRecaptchaNet","enterprise","injectionDelay","injectCallbackRef","useRef","queueRef","useQueueRef","handleNextInQueue","useHandleNextInQueue","useEffect","subscribeEvent","unsubscribeEvent","reCaptchaScriptId","id","maybeRemoveScript","inject","maybeInjectScript","src","getScriptSrc","appendTo","async","defer","nonce","current","timeout","setTimeout","clearTimeout","executeRecaptcha","useCallback","action","Promise","resolve","reject","push","onComplete","onError","contextValue","useMemo","injectScript","jsx","Provider"],"mappings":"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","sourcesContent":["\"use strict\";\n\"use client\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  // If the importer is in node compatibility mode or this is not an ESM\n  // file that has been converted to a CommonJS file using a Babel-\n  // compatible transform (i.e. \"__esModule\" has not been set), then set\n  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\nvar ReCaptchaProvider_exports = {};\n__export(ReCaptchaProvider_exports, {\n  Context: () => Context,\n  default: () => ReCaptchaProvider_default,\n  defaultScriptId: () => defaultScriptId\n});\nmodule.exports = __toCommonJS(ReCaptchaProvider_exports);\nvar import_jsx_runtime = require(\"react/jsx-runtime\");\nvar import_react = require(\"react\");\nvar import_subscribeEvent = __toESM(require(\"./subscribeEvent\"), 1);\nvar import_unsubscribeEvent = __toESM(require(\"./unsubscribeEvent\"), 1);\nvar import_useHandleNextInQueue = __toESM(require(\"./useHandleNextInQueue\"), 1);\nvar import_useQueueRef = __toESM(require(\"./useQueueRef\"), 1);\nvar import_utils = require(\"./utils\");\nconst Context = (0, import_react.createContext)(null);\nconst defaultScriptId = \"rusted_labs_react_recaptcha_v3\";\nconst ReCaptchaProvider = ({\n  siteKey,\n  children,\n  scriptProps = {},\n  useRecaptchaNet = false,\n  enterprise = false,\n  injectionDelay = null\n}) => {\n  const injectCallbackRef = (0, import_react.useRef)(null);\n  const queueRef = (0, import_useQueueRef.default)();\n  const handleNextInQueue = (0, import_useHandleNextInQueue.default)(siteKey, queueRef);\n  (0, import_react.useEffect)(() => {\n    (0, import_subscribeEvent.default)(handleNextInQueue);\n    return () => {\n      (0, import_unsubscribeEvent.default)(handleNextInQueue);\n    };\n  }, [handleNextInQueue]);\n  (0, import_react.useEffect)(() => {\n    const reCaptchaScriptId = scriptProps.id ?? defaultScriptId;\n    if (siteKey === null) {\n      (0, import_utils.maybeRemoveScript)(reCaptchaScriptId);\n    } else {\n      const inject = () => {\n        (0, import_utils.maybeInjectScript)({\n          src: (0, import_utils.getScriptSrc)({\n            enterprise,\n            useRecaptchaNet,\n            siteKey\n          }),\n          appendTo: scriptProps.appendTo ?? \"head\",\n          id: reCaptchaScriptId,\n          async: scriptProps.async ?? true,\n          defer: scriptProps.defer ?? true,\n          nonce: scriptProps.nonce\n        });\n      };\n      injectCallbackRef.current = inject;\n      if (injectionDelay === null) {\n        inject();\n      } else {\n        const timeout = setTimeout(inject, injectionDelay);\n        return () => {\n          injectCallbackRef.current = null;\n          (0, import_utils.maybeRemoveScript)(reCaptchaScriptId);\n          clearTimeout(timeout);\n        };\n      }\n    }\n    return () => {\n      (0, import_utils.maybeRemoveScript)(reCaptchaScriptId);\n    };\n  }, [\n    enterprise,\n    handleNextInQueue,\n    injectionDelay,\n    scriptProps.appendTo,\n    scriptProps.async,\n    scriptProps.defer,\n    scriptProps.id,\n    scriptProps.nonce,\n    siteKey,\n    useRecaptchaNet\n  ]);\n  const executeRecaptcha = (0, import_react.useCallback)(\n    async (action) => (\n      // eslint-disable-next-line promise/avoid-new -- no time to fix\n      await new Promise((resolve, reject) => {\n        queueRef.current.push({\n          action,\n          onComplete: resolve,\n          onError: reject\n        });\n        handleNextInQueue();\n      })\n    ),\n    [handleNextInQueue, queueRef]\n  );\n  const contextValue = (0, import_react.useMemo)(\n    () => ({\n      executeRecaptcha,\n      injectScript: injectCallbackRef\n    }),\n    [executeRecaptcha]\n  );\n  return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Context.Provider, { value: contextValue, children });\n};\nvar ReCaptchaProvider_default = ReCaptchaProvider;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  Context,\n  defaultScriptId\n});\n","'use client'\nimport {\n    createContext,\n    type FunctionComponent,\n    type ReactNode,\n    type RefObject,\n    useCallback,\n    useEffect,\n    useMemo,\n    useRef,\n} from 'react'\nimport subscribeEvent from './subscribeEvent'\nimport unsubscribeEvent from './unsubscribeEvent'\nimport type { ExecuteRecaptcha } from './useExecuteReCaptcha'\nimport useHandleNextInQueue from './useHandleNextInQueue'\nimport useQueueRef from './useQueueRef'\nimport { getScriptSrc, maybeInjectScript, maybeRemoveScript } from './utils'\n\ninterface ContextType {\n    executeRecaptcha: ExecuteRecaptcha\n    injectScript: RefObject<null | (() => void)>\n}\nexport const Context = createContext<ContextType | null>(null)\nexport interface ScriptProps {\n    nonce?: string\n    defer?: boolean\n    async?: boolean\n    appendTo?: 'head' | 'body'\n    id?: string\n}\nexport const defaultScriptId = 'rusted_labs_react_recaptcha_v3'\nexport type Props = Readonly<{\n    siteKey: string | null\n    children: ReactNode\n    useRecaptchaNet?: boolean\n    enterprise?: boolean\n    scriptProps?: ScriptProps\n    injectionDelay?: number\n}>\nconst ReCaptchaProvider: FunctionComponent<Props> = ({\n    siteKey,\n    children,\n    scriptProps = {},\n    useRecaptchaNet = false,\n    enterprise = false,\n    injectionDelay = null,\n}) => {\n    const injectCallbackRef = useRef<null | (() => void)>(null)\n    const queueRef = useQueueRef()\n    const handleNextInQueue = useHandleNextInQueue(siteKey, queueRef)\n    useEffect(() => {\n        subscribeEvent(handleNextInQueue)\n        return () => {\n            unsubscribeEvent(handleNextInQueue)\n        }\n    }, [handleNextInQueue])\n    useEffect(() => {\n        const reCaptchaScriptId = scriptProps.id ?? defaultScriptId\n        if (siteKey === null) {\n            maybeRemoveScript(reCaptchaScriptId)\n        } else {\n            const inject = (): void => {\n                maybeInjectScript({\n                    src: getScriptSrc({\n                        enterprise,\n                        useRecaptchaNet,\n                        siteKey,\n                    }),\n                    appendTo: scriptProps.appendTo ?? 'head',\n                    id: reCaptchaScriptId,\n                    async: scriptProps.async ?? true,\n                    defer: scriptProps.defer ?? true,\n                    nonce: scriptProps.nonce,\n                })\n            }\n            injectCallbackRef.current = inject\n            if (injectionDelay === null) {\n                inject()\n            } else {\n                const timeout = setTimeout(inject, injectionDelay)\n                return () => {\n                    injectCallbackRef.current = null\n                    maybeRemoveScript(reCaptchaScriptId)\n                    clearTimeout(timeout)\n                }\n            }\n        }\n        return () => {\n            maybeRemoveScript(reCaptchaScriptId)\n        }\n    }, [\n        enterprise,\n        handleNextInQueue,\n        injectionDelay,\n        scriptProps.appendTo,\n        scriptProps.async,\n        scriptProps.defer,\n        scriptProps.id,\n        scriptProps.nonce,\n        siteKey,\n        useRecaptchaNet,\n    ])\n\n    const executeRecaptcha: ExecuteRecaptcha = useCallback(\n        async (action: string): Promise<string> =>\n            // eslint-disable-next-line promise/avoid-new -- no time to fix\n            await new Promise((resolve, reject) => {\n                queueRef.current.push({\n                    action,\n                    onComplete: resolve,\n                    onError: reject,\n                })\n                handleNextInQueue()\n            }),\n        [handleNextInQueue, queueRef]\n    )\n    const contextValue = useMemo(\n        () => ({\n            executeRecaptcha,\n            injectScript: injectCallbackRef,\n        }),\n        [executeRecaptcha]\n    )\n    return <Context.Provider value={contextValue}>{children}</Context.Provider>\n}\nexport default ReCaptchaProvider\n"]}