123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- 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:
- }
- }
|