UNPKG

vue-recaptcha

Version:

ReCAPTCHA vue component

2 lines (1 loc) 2.43 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).VueRecaptcha=t()}(this,function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}var t,i=(t=function(){var e=!1,t=[];return{resolved:function(){return e},resolve:function(i){if(!e){e=!0;for(var n=0,r=t.length;n<r;n++)t[n](i)}},promise:{then:function(i){e?i():t.push(i)}}}}(),{notify:function(){t.resolve()},wait:function(){return t.promise},render:function(e,t,i){this.wait().then(function(){i(window.grecaptcha.render(e,t))})},reset:function(e){void 0!==e&&(this.assertLoaded(),this.wait().then(function(){return window.grecaptcha.reset(e)}))},execute:function(e){void 0!==e&&(this.assertLoaded(),this.wait().then(function(){return window.grecaptcha.execute(e)}))},checkRecaptchaLoad:function(){window.hasOwnProperty("grecaptcha")&&window.grecaptcha.hasOwnProperty("render")&&this.notify()},assertLoaded:function(){if(!t.resolved())throw new Error("ReCAPTCHA has not been loaded")}});return"undefined"!=typeof window&&(window.vueRecaptchaApiLoaded=i.notify),{name:"VueRecaptcha",props:{sitekey:{type:String,required:!0},theme:{type:String},badge:{type:String},type:{type:String},size:{type:String},tabindex:{type:String},loadRecaptchaScript:{type:Boolean,default:!1},recaptchaScriptId:{type:String,default:"__RECAPTCHA_SCRIPT"},recaptchaHost:{type:String,default:"www.google.com"}},beforeMount:function(){if(this.loadRecaptchaScript&&!document.getElementById(this.recaptchaScriptId)){var e=document.createElement("script");e.id=this.recaptchaScriptId,e.src="https://"+this.recaptchaHost+"/recaptcha/api.js?onload=vueRecaptchaApiLoaded&render=explicit",e.async=!0,e.defer=!0,document.head.appendChild(e)}},mounted:function(){var t=this;i.checkRecaptchaLoad();var n=e({},this.$props,{callback:this.emitVerify,"expired-callback":this.emitExpired}),r=this.$slots.default?this.$el.children[0]:this.$el;i.render(r,n,function(e){t.$widgetId=e,t.$emit("render",e)})},methods:{reset:function(){i.reset(this.$widgetId)},execute:function(){i.execute(this.$widgetId)},emitVerify:function(e){this.$emit("verify",e)},emitExpired:function(){this.$emit("expired")}},render:function(e){return e("div",{},this.$slots.default)}}});