51 lines · 1.3 KB · JavaScript
RawDownload
import {isDarkTheme} from '../utils.js'; export async function initCaptcha() {  const captchaEl = document.querySelector('#captcha');  if (!captchaEl) return;   const siteKey = captchaEl.getAttribute('data-sitekey');  const isDark = isDarkTheme();   const params = {    sitekey: siteKey,    theme: isDark ? 'dark' : 'light',  };   switch (captchaEl.getAttribute('data-captcha-type')) {    case 'g-recaptcha': {      if (window.grecaptcha) {        window.grecaptcha.ready(() => {          window.grecaptcha.render(captchaEl, params);        });      }      break;    }    case 'cf-turnstile': {      if (window.turnstile) {        window.turnstile.render(captchaEl, params);      }      break;    }    case 'h-captcha': {      if (window.hcaptcha) {        window.hcaptcha.render(captchaEl, params);      }      break;    }    case 'm-captcha': {      const {default: mCaptcha} = await import(/* webpackChunkName: "mcaptcha-vanilla-glue" */'@mcaptcha/vanilla-glue');      mCaptcha.INPUT_NAME = 'm-captcha-response';      const instanceURL = captchaEl.getAttribute('data-instance-url');       mCaptcha.default({        siteKey: {          instanceUrl: new URL(instanceURL),          key: siteKey,        },      });      break;    }    default:  }}