ng-recaptcha
Version:
Angular component for Google reCAPTCHA
28 lines • 5.46 kB
JavaScript
function loadScript(renderMode, onBeforeLoad, onLoaded, { url, lang, nonce } = {}) {
window.ng2recaptchaloaded = () => {
onLoaded(grecaptcha);
};
const script = document.createElement("script");
script.innerHTML = "";
const { url: baseUrl, nonce: onBeforeLoadNonce } = onBeforeLoad(new URL(url || "https://www.google.com/recaptcha/api.js"));
baseUrl.searchParams.set("render", renderMode === "explicit" ? renderMode : renderMode.key);
baseUrl.searchParams.set("onload", "ng2recaptchaloaded");
baseUrl.searchParams.set("trustedtypes", "true");
if (lang) {
baseUrl.searchParams.set("hl", lang);
}
script.src = baseUrl.href;
const nonceValue = onBeforeLoadNonce || nonce;
if (nonceValue) {
script.setAttribute("nonce", nonceValue);
}
script.async = true;
script.defer = true;
document.head.appendChild(script);
}
function newLoadScript({ v3SiteKey, onBeforeLoad, onLoaded, }) {
const renderMode = v3SiteKey ? { key: v3SiteKey } : "explicit";
loader.loadScript(renderMode, onBeforeLoad, onLoaded);
}
export const loader = { loadScript, newLoadScript };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZC1zY3JpcHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1yZWNhcHRjaGEvc3JjL2xpYi9sb2FkLXNjcmlwdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxTQUFTLFVBQVUsQ0FDakIsVUFBc0IsRUFDdEIsWUFBd0QsRUFDeEQsUUFBcUQsRUFDckQsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEtBQUssS0FBc0QsRUFBRTtJQUUxRSxNQUFNLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxFQUFFO1FBQy9CLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2QixDQUFDLENBQUM7SUFDRixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hELE1BQU0sQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRXRCLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxHQUFHLFlBQVksQ0FDN0QsSUFBSSxHQUFHLENBQUMsR0FBRyxJQUFJLHlDQUF5QyxDQUFDLENBQzFELENBQUM7SUFDRixPQUFPLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsVUFBVSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDNUYsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLG9CQUFvQixDQUFDLENBQUM7SUFDekQsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELElBQUksSUFBSSxFQUFFO1FBQ1IsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQ3RDO0lBRUQsTUFBTSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO0lBRTFCLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixJQUFJLEtBQUssQ0FBQztJQUU5QyxJQUFJLFVBQVUsRUFBRTtRQUNkLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0tBQzFDO0lBQ0QsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsTUFBTSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7SUFDcEIsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDcEMsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEVBQ3JCLFNBQVMsRUFDVCxZQUFZLEVBQ1osUUFBUSxHQUlUO0lBQ0MsTUFBTSxVQUFVLEdBQWUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDO0lBRTNFLE1BQU0sQ0FBQyxVQUFVLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4RCxDQUFDO0FBRUQsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVjYXB0Y2hhTG9hZGVyT3B0aW9ucyB9IGZyb20gXCIuL3Rva2Vuc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIG5nMnJlY2FwdGNoYWxvYWRlZD8oKTogdm9pZDtcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBSZW5kZXJNb2RlID0gXCJleHBsaWNpdFwiIHwgeyBrZXk6IHN0cmluZyB9O1xuXG5mdW5jdGlvbiBsb2FkU2NyaXB0KFxuICByZW5kZXJNb2RlOiBSZW5kZXJNb2RlLFxuICBvbkJlZm9yZUxvYWQ6ICh1cmw6IFVSTCkgPT4geyB1cmw6IFVSTDsgbm9uY2U/OiBzdHJpbmcgfSxcbiAgb25Mb2FkZWQ6IChncmVjYXB0Y2hhOiBSZUNhcHRjaGFWMi5SZUNhcHRjaGEpID0+IHZvaWQsXG4gIHsgdXJsLCBsYW5nLCBub25jZSB9OiB7IHVybD86IHN0cmluZzsgbGFuZz86IHN0cmluZzsgbm9uY2U/OiBzdHJpbmcgfSA9IHt9LFxuKTogdm9pZCB7XG4gIHdpbmRvdy5uZzJyZWNhcHRjaGFsb2FkZWQgPSAoKSA9PiB7XG4gICAgb25Mb2FkZWQoZ3JlY2FwdGNoYSk7XG4gIH07XG4gIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzY3JpcHRcIik7XG4gIHNjcmlwdC5pbm5lckhUTUwgPSBcIlwiO1xuXG4gIGNvbnN0IHsgdXJsOiBiYXNlVXJsLCBub25jZTogb25CZWZvcmVMb2FkTm9uY2UgfSA9IG9uQmVmb3JlTG9hZChcbiAgICBuZXcgVVJMKHVybCB8fCBcImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vcmVjYXB0Y2hhL2FwaS5qc1wiKSxcbiAgKTtcbiAgYmFzZVVybC5zZWFyY2hQYXJhbXMuc2V0KFwicmVuZGVyXCIsIHJlbmRlck1vZGUgPT09IFwiZXhwbGljaXRcIiA/IHJlbmRlck1vZGUgOiByZW5kZXJNb2RlLmtleSk7XG4gIGJhc2VVcmwuc2VhcmNoUGFyYW1zLnNldChcIm9ubG9hZFwiLCBcIm5nMnJlY2FwdGNoYWxvYWRlZFwiKTtcbiAgYmFzZVVybC5zZWFyY2hQYXJhbXMuc2V0KFwidHJ1c3RlZHR5cGVzXCIsIFwidHJ1ZVwiKTtcbiAgaWYgKGxhbmcpIHtcbiAgICBiYXNlVXJsLnNlYXJjaFBhcmFtcy5zZXQoXCJobFwiLCBsYW5nKTtcbiAgfVxuXG4gIHNjcmlwdC5zcmMgPSBiYXNlVXJsLmhyZWY7XG5cbiAgY29uc3Qgbm9uY2VWYWx1ZSA9IG9uQmVmb3JlTG9hZE5vbmNlIHx8IG5vbmNlO1xuXG4gIGlmIChub25jZVZhbHVlKSB7XG4gICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlVmFsdWUpO1xuICB9XG4gIHNjcmlwdC5hc3luYyA9IHRydWU7XG4gIHNjcmlwdC5kZWZlciA9IHRydWU7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbn1cblxuZnVuY3Rpb24gbmV3TG9hZFNjcmlwdCh7XG4gIHYzU2l0ZUtleSxcbiAgb25CZWZvcmVMb2FkLFxuICBvbkxvYWRlZCxcbn06IHsgdjNTaXRlS2V5OiBzdHJpbmcgfCB1bmRlZmluZWQ7IG9uTG9hZGVkKHJlY2FwdGNoYTogUmVDYXB0Y2hhVjIuUmVDYXB0Y2hhKTogdm9pZCB9ICYgUGljazxcbiAgUmVxdWlyZWQ8UmVjYXB0Y2hhTG9hZGVyT3B0aW9ucz4sXG4gIFwib25CZWZvcmVMb2FkXCJcbj4pIHtcbiAgY29uc3QgcmVuZGVyTW9kZTogUmVuZGVyTW9kZSA9IHYzU2l0ZUtleSA/IHsga2V5OiB2M1NpdGVLZXkgfSA6IFwiZXhwbGljaXRcIjtcblxuICBsb2FkZXIubG9hZFNjcmlwdChyZW5kZXJNb2RlLCBvbkJlZm9yZUxvYWQsIG9uTG9hZGVkKTtcbn1cblxuZXhwb3J0IGNvbnN0IGxvYWRlciA9IHsgbG9hZFNjcmlwdCwgbmV3TG9hZFNjcmlwdCB9O1xuIl19