UNPKG

vue-recaptcha

Version:

ReCAPTCHA vue component

75 lines (71 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RecaptchaV2State = void 0; exports.useChallengeV2 = useChallengeV2; var _shared = require("@vueuse/shared"); var _vueDemi = require("vue-demi"); var _context = require("./context.cjs"); var RecaptchaV2State = /* @__PURE__ */(RecaptchaV2State2 => { RecaptchaV2State2["Init"] = "init"; RecaptchaV2State2["Verified"] = "verified"; RecaptchaV2State2["Expired"] = "expired"; RecaptchaV2State2["Error"] = "error"; return RecaptchaV2State2; })(RecaptchaV2State || {}); exports.RecaptchaV2State = RecaptchaV2State; function useChallengeV2({ root = (0, _vueDemi.ref)(), options = {} }) { const siteKey = (0, _context.useAssertV2SiteKey)(); const widgetID = (0, _vueDemi.ref)(); const proxy = (0, _context.useRecaptchaProxy)(); const verify = (0, _shared.createEventHook)(); const expired = (0, _shared.createEventHook)(); const error = (0, _shared.createEventHook)(); const rootRef = (0, _shared.toRef)(root); const state = (0, _vueDemi.ref)("init" /* Init */); (0, _shared.whenever)(rootRef, async el => { const id = await proxy.render(el, { ...options, sitekey: siteKey, // eslint-disable-next-line @typescript-eslint/no-misused-promises callback: verify.trigger, // eslint-disable-next-line @typescript-eslint/no-misused-promises "expired-callback": expired.trigger, // eslint-disable-next-line @typescript-eslint/no-misused-promises "error-callback": error.trigger }); widgetID.value = id; }); verify.on(() => { state.value = "verified" /* Verified */; }); expired.on(() => { state.value = "expired" /* Expired */; }); error.on(() => { state.value = "error" /* Error */; }); return { root: rootRef, widgetID, execute() { if (typeof widgetID.value !== "undefined") { proxy.execute(widgetID.value); } }, reset() { state.value = "init" /* Init */; if (typeof widgetID.value !== "undefined") { proxy.reset(widgetID.value); } }, state, onVerify: verify.on, onExpired: expired.on, onError: error.on }; }