UNPKG

@paparootru/vue3-smart-captcha

Version:
2 lines (1 loc) 2.1 kB
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("vue"),c="https://smartcaptcha.yandexcloud.net/captcha.js",l=10,d=i.defineComponent({__name:"SmartCaptcha",props:{sitekey:{},callback:{},hl:{},test:{type:Boolean},webview:{type:Boolean},invisible:{type:Boolean},shieldPosition:{},hideShield:{type:Boolean},loadWidget:{type:Boolean,default:!0},timeout:{default:2e3},onChallengeVisible:{},onChallengeHidden:{},onNetworkError:{},onSuccess:{},onTokenExpired:{}},emits:["widgetInitialized"],setup(n,{emit:p}){const o=i.ref(),u=p,e=n;i.onMounted(()=>{s.value&&m(),b()}),i.onUnmounted(()=>{var t;s.value&&((t=document.querySelector(`script[src="${c}?render=onload"]`))==null||t.remove())});const s=i.computed(()=>e.loadWidget),h=i.computed(()=>e.invisible===!0),m=()=>{const t=document.createElement("script");t.setAttribute("src",`${c}?render=onload`),t.setAttribute("defer","true"),document.head.appendChild(t)},b=()=>{let t=0;const a=setInterval(()=>{if(++t===l){console.warn(`Captcha cannot be initialized for ${e.timeout}ms. Make sure widget script is loaded`),clearInterval(a);return}if(window.smartCaptcha!==void 0){clearInterval(a);const r=window.smartCaptcha.render(o.value,{sitekey:e.sitekey,callback:e.callback,hl:e.hl,test:e.test,webview:e.webview,invisible:e.invisible,shieldPosition:e.shieldPosition,hideShield:e.hideShield});u("widgetInitialized",r),C(r)}},e.timeout/l)},C=t=>{e.onChallengeHidden&&window.smartCaptcha.subscribe(t,"challenge-hidden",e.onChallengeHidden),e.onChallengeVisible&&window.smartCaptcha.subscribe(t,"challenge-visible",e.onChallengeVisible),e.onNetworkError&&window.smartCaptcha.subscribe(t,"network-error",e.onNetworkError),e.onSuccess&&window.smartCaptcha.subscribe(t,"success",e.onSuccess),e.onTokenExpired&&window.smartCaptcha.subscribe(t,"token-expired",e.onTokenExpired)};return(t,a)=>(i.openBlock(),i.createElementBlock("div",{ref_key:"container",ref:o,class:i.normalizeClass({"smart-captcha":!h.value})},null,2))}}),w={install:n=>{n.component("SmartCaptcha",d)}};exports.SmartCaptcha=d;exports.SmartCaptchaPlugin=w;