"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const utils_1 = require("../utils");
// Injects the Recaptcha script tag
function injectScript() {
    if (document.querySelector("#recaptcha")) {
        // Must throw if it already exists, this lets us find bugs easier
        throw new Error("Script already exists in document!");
    }
    const url = `https://www.google.com/recaptcha/api.js?onload=GoogleRecaptchaLoaded&render=explicit`;
    const script = document.createElement("script");
    script.id = "recaptcha";
    script.src = url;
    script.type = "text/javascript";
    script.async = true;
    script.defer = true;
    document.head.appendChild(script);
}
const scriptIsInjected = () => typeof window !== "undefined" ? window.hasInjectedRecaptchaScript === true : false;
const scriptIsLoaded = () => typeof window !== "undefined" ? window.hasLoadedRecaptchaScript === true : false;
const recaptchaScriptDidLoadResolvable = utils_1.resolvable();
function loadRecaptcha() {
    if (scriptIsLoaded() && !recaptchaScriptDidLoadResolvable.resolved) {
        recaptchaScriptDidLoadResolvable.resolve(null);
    }
    if (!scriptIsInjected()) {
        window.GoogleRecaptchaLoaded = () => {
            console.info("[Recaptcha] Loaded script");
            window.hasLoadedRecaptchaScript = true;
            recaptchaScriptDidLoadResolvable.resolve(null);
        };
        injectScript();
        window.hasInjectedRecaptchaScript = true;
    }
    return recaptchaScriptDidLoadResolvable.promise;
}
exports.loadRecaptcha = loadRecaptcha;
//# sourceMappingURL=load.jsx.map