define(['uiComponent','jquery','ko','underscore','Magento_ReCaptchaFrontendUi/js/registry','Magento_ReCaptchaFrontendUi/js/reCaptchaScriptLoader','Magento_ReCaptchaFrontendUi/js/nonInlineReCaptchaRenderer'],function(Component,$,ko,_,registry,reCaptchaLoader,nonInlineReCaptchaRenderer){'use strict';return Component.extend({defaults:{template:'Magento_ReCaptchaFrontendUi/reCaptcha',reCaptchaId:'recaptcha'},initialize:function(){this._super();this._loadApi();},_loadApi:function(){if(this._isApiRegistered!==undefined){if(this._isApiRegistered===true){$(window).trigger('recaptchaapiready');} return;} this._isApiRegistered=false;window.globalOnRecaptchaOnLoadCallback=function(){this._isApiRegistered=true;$(window).trigger('recaptchaapiready');}.bind(this);reCaptchaLoader.addReCaptchaScriptTag();},getIsInvisibleRecaptcha:function(){if(this.settings===void 0){return false;} return this.settings.invisible;},reCaptchaCallback:function(token){if(this.getIsInvisibleRecaptcha()){this.tokenField.value=token;this.$parentForm.submit();}},initCaptcha:function(){var $parentForm,$wrapper,$reCaptcha,widgetId,parameters;if(this.captchaInitialized||this.settings===void 0){return;} this.captchaInitialized=true;$wrapper=$('#'+this.getReCaptchaId()+'-wrapper');$reCaptcha=$wrapper.find('.g-recaptcha');$reCaptcha.attr('id',this.getReCaptchaId());$parentForm=$wrapper.parents('form');if(this.settings===undefined){return;} parameters=_.extend({'callback':function(token){this.reCaptchaCallback(token);this.validateReCaptcha(true);}.bind(this),'expired-callback':function(){this.validateReCaptcha(false);}.bind(this)},this.settings.rendering);if(parameters.size==='invisible'&¶meters.badge!=='inline'){nonInlineReCaptchaRenderer.add($reCaptcha,parameters);} widgetId=grecaptcha.render(this.getReCaptchaId(),parameters);this.initParentForm($parentForm,widgetId);registry.ids.push(this.getReCaptchaId());registry.captchaList.push(widgetId);registry.tokenFields.push(this.tokenField);},initParentForm:function(parentForm,widgetId){var listeners;if(this.getIsInvisibleRecaptcha()&&parentForm.length>0){parentForm.submit(function(event){if(!this.tokenField.value){grecaptcha.execute(widgetId);event.preventDefault(event);event.stopImmediatePropagation();}}.bind(this));listeners=$._data(parentForm[0],'events').submit;listeners.unshift(listeners.pop());this.tokenField=$('')[0];this.$parentForm=parentForm;parentForm.append(this.tokenField);}else{this.tokenField=null;} if($('#send2').length>0){$('#send2').prop('disabled',false);}},validateReCaptcha:function(state){if(!this.getIsInvisibleRecaptcha()){return $(document).find('input[type=checkbox].required-captcha').prop('checked',state);}},renderReCaptcha:function(){if(window.grecaptcha&&window.grecaptcha.render){this.initCaptcha();}else{$(window).on('recaptchaapiready',function(){this.initCaptcha();}.bind(this));}},getReCaptchaId:function(){return this.reCaptchaId;}});});