https://cdn4.hola.org/www/hola/pub/fbe1b456e9a620075ff1ea19dfb2207c.1.259.452.chunk.js?ver=1.259.452
1// LICENSE_CODE ZON 2(self["webpackChunk"]=self["webpackChunk"]||[]).push([["pkg_www_hola_pub_login_js0"],{
2"../../../../pkg/util/setdb.js":(module,exports,__webpack_require__)=>{var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;var module; 3// LICENSE_CODE ZON 4"use strict";(function(){var is_node=typeof module=="object"&&module.exports&&module.children;if(!is_node);else;!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__("../../../../pkg/util/util.js"),__webpack_require__("../../../../pkg/util/events.js")],__WEBPACK_AMD_DEFINE_RESULT__=((_,EventEmitter)=>{var RECURSIVE=".";var E=new EventEmitter;E.state={};E.on=(path,fn,opt)=>{opt=Object.assign({recursive:false,init:true},opt);EventEmitter.prototype.on.call(E,path,fn);if(opt.recursive)EventEmitter.prototype.on.call(E,RECURSIVE+path,fn);if(opt.init)fn(E.get(path));return{path,fn,recursive:opt.recursive}};E.off=listener=>{EventEmitter.prototype.removeListener.call(E,listener.path,listener.fn);if(listener.recursive){EventEmitter.prototype.removeListener.call(E,RECURSIVE+listener.path,listener.fn)}};E.get=path=>_.get(E.state,path);E.set=(path,curr,opt)=>{opt=Object.assign({force_emit:false},opt);if(!opt.force_emit&&_.get(E.state,path)===curr)return;_.set(E.state,path,curr);E.emit_path(path)};E.delete=path=>E.set(path,undefined);E.emit_path=path=>{E.emit(path,_.get(E.state,path));path=path.split(".");while(path.length>1){path.pop();var p=path.join(".");E.emit(RECURSIVE+p,_.get(E.state,p))}};E.clear=function(){this.removeAllListeners();this.state={}};E.debug=function(){window.setdb=E};return E}).apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))})()},
4"../../../../pkg/www/hola/pub/login.js":(module,exports,__webpack_require__)=>{"use strict";var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;// LICENSE_CODE ZON 5function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==typeof i?i:i+""}function _toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__("virt_jquery_all"),__webpack_require__("../../../../../../../../../var/lib/nave/installed/20.12.1/lib/node_modules/react/index.js"),__webpack_require__("../../../../../../../../../var/lib/nave/installed/20.12.1/lib/node_modules/react-dom/index.js"),__webpack_require__("../../../../../../../../../var/lib/nave/installed/20.12.1/lib/node_modules/classnames/index.js"),__webpack_require__("../../../../../../../../../var/lib/nave/installed/20.12.1/lib/node_modules/js-cookie/src/js.cookie.js"),__webpack_require__("pub_config"),__webpack_require__("login_config"),__webpack_require__("../../../../pkg/www/util/pub/pure_component.js"),__webpack_require__("../../../../pkg/util/url.js"),__webpack_require__("../../../../pkg/util/escape.js"),__webpack_require__("../../../../pkg/util/zerr.js"),__webpack_require__("../../../../pkg/util/etask.js"),__webpack_require__("../../../../pkg/util/csrf.js"),__webpack_require__("../../../../pkg/www/hola/pub/modal.js"),__webpack_require__("../../../../pkg/util/ajax.js"),__webpack_require__("hola_opt"),__webpack_require__("../../../../pkg/util/user_agent.js"),__webpack_require__("../../../../pkg/www/login/pub/verify_email.js"),__webpack_require__("../../../../pkg/www/hola/pub/util.js"),__webpack_require__("../../../../pkg/www/hola/pub/react_util.js"),__webpack_require__("../../../../pkg/www/hola/pub/recaptcha.js"),__webpack_require__("../../../../pkg/www/hola/pub/be.js"),__webpack_require__("../../../../pkg/util/string.js"),__webpack_require__("../../../../pkg/util/util.js"),__webpack_require__("../../../../pkg/util/fetch.js"),__webpack_require__("../../../../pkg/www/hola/pub/lib/input.js"),__webpack_require__("../../../../pkg/www/shared/button.tsx"),__webpack_require__("../../../../pkg/www/hola/pub/lib/checkbox.tsx"),__webpack_require__("../../../../pkg/www/hola/pub/ui/pass_meter.js"),__webpack_require__("../../../../pkg/www/hola/pub/login/captcha.tsx"),__webpack_require__("../../../../pkg/www/hola/pub/shared/svg.t
5sx"),__webpack_require__("../../../../pkg/www/hola/pub/img/svg/icon/appstore_logo.svg"),__webpack_require__("../../../../pkg/www/hola/pub/settings_ctx.tsx"),__webpack_require__("../../../../../../../../../var/lib/nave/installed/20.12.1/lib/node_modules/react-i18next/dist/es/index.js")],__WEBPACK_AMD_DEFINE_RESULT__=(($,React,ReactDOM,classnames,cookie,config,login_config,Pure_component,zurl,zescape,zerr,etask,csrf,modal,ajax,hopt,user_agent,verify_email,www_util,react_util,recaptcha,be,string,zutil,{fetch},{Input},{Button},{Checkbox},{Pass_meter},{Captcha},{Svg},Icon_appstore_logo,{Settings_context,Settings_provider},{Trans})=>{var E={};var useState=React.useState,useEffect=React.useEffect,Fragment=React.Fragment,useContext=React.useContext;var Modal=modal.Modal,Header=modal.Header;var url2md5=config.url2md5;var up=login_config.url_prefix+"/users";var perr=(id,info)=>etask(function*(){try{info=info||{};if(navigator&&!navigator.cookieEnabled)info.cookie_blocked=true;yield www_util.perr({id:`www_${id}`,info})}catch(e){}});var slide=(container,direction,cb1,cb2)=>{var c_el=document.getElementsByClassName(container.slice(1))[0];if(!c_el)return;c_el.className+=" login_form__slide_"+direction+"_hide";setTimeout(()=>{cb1&&cb1();c_el.className=c_el.className.replace("login_form__slide_"+direction+"_hide","login_form__slide_"+direction+"_show");setTimeout(()=>{c_el.className=c_el.className.replace(" login_form__slide_"+direction+"_show","");setTimeout(()=>{cb2&&cb2()},200)},0)},200)};var A=props=>React.createElement("a",_extends({target:"_blank",rel:"noopener noreferrer"},props),props.children);var Footer=({signup_mode,google_terms,instead_google})=>{var _useContext=useContext(Settings_context),theme=_useContext.theme;return React.createElement("div",{className:classnames("login-footer")},instead_google?React.createElement(Fragment,null):React.createElement(Fragment,null,React.createElement("p",{className:classnames(theme.p2,theme.logo_grey)},"By clicking ",signup_mode?"Join":"Log in",", you agree you have read and accepted the ",React.createElement(A,{href:"/legal/sla"},"Hola End User Agreement")," and the ",React.createElement(A,{href:"/legal/privacy"},"Hola Privacy Statement"),"."),google_terms&&(hopt.mtcaptcha&&hopt.mtcaptcha.enable?React.createElement("p",{className:classnames(theme.p2,theme.logo_grey)},"This site is protected by MTCaptcha and the MTCaptcha ",React.createElement(A,{href:"https://www.mtcaptcha.com/legal-privacy-captcha",target:"_blank",rel:"noopener noreferrer"},"Privacy Policy")," and ",React.createElement(A,{href:"https://www.mtcaptcha.com/legal-terms",target:"_blank",rel:"noopener noreferrer"},"Terms of Service")," apply."):React.createElement("p",{className:classnames(theme.p2,theme.logo_grey)},"This site is protected by reCAPTCHA and the Google ",React.createElement(A,{href:"https://policies.google.com/privacy"},"Privacy Policy")," and ",React.createElement(A,{href:"https://policies.google.com/terms"},"Terms of Service")," apply."))))};var Error_message=props=>React.createElement("div",{className:"error-container"},React.createElement("div",{className:"error-mark-container"},React.createElement("span",{className:"glyphicon glyphicon-exclamation-sign"})),props.error);var Show_password=props=>React.createElement("svg",{fill:"#65707c",height:props.height,width:props.width},React.createElement("path",{d:"M0 0h24v24H0zm0 0h24v24H0zm0 0h24v24H0zm0 0h24v24H0z",fill:"none"}),React.createElement("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7zM2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3 2 4.27zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2zm4.31-.78l3.15 3.15.02-.16c0-1.66-1.34-3-3-3l-.17.01z"}));var Hide_password=props=>React.createElement("svg",{fill:"#65707c",height:props.height,width:props.width},React.createElement("path",{d:"M0 0h24v24H0z",fill:"none"}),React.createElement("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5zM12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5zm0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"}));var Need_plus=()=>React.createElement("div",{className:"alert alert-info"},"No PLUS subscription.",React.createElement("a",{target:"_blank",href:"/premium?ref=login"},"Subscribe")," now!");class Base_login extends Pure_component{constructor(props){super(props);_defineProperty(this,"get_mode",()=>this.state.mode);_defineProperty(this,"on_input_blur",event=>{if(event.target.name=="password"&&window.mtcaptcha){var captcha_status=window.mtcaptcha.getStatus();if(captcha_status.isVisible)window.mtcaptcha.focus()}});this.state={email:props.email||"",loading:false,error_type:null,error_field:null,block_sending:false}}clear_error(){this.setState({error_field:null,error_type:null})}set_error({field,type,err,src}){this.setState({error_field:field,error_type:type,loading:false,block_sending:true});try{window.mtcaptcha.resetUI()}catch(e){}this.set_focus(field);if(type){var response=zutil.get(err,"hola_info.response_text")||"";var status=zutil.get(err,"hola_info.status");var url=zutil.get(err,"hola_info.url");
5if(type=="unknown"&&response.match(/Missing CSRF/i))type="missing_csrf";if(type=="unknown"&&response.match(/CSRF.*mismatch/i))type="csrf_mismatch";src=src||this.get_mode()||"login";perr(`${src}_error`,{field,url,email:this.state.email,error_type:type,status,err:err&&zerr.e2s(err),csrf_token:csrf.get(),response:response.substr(0,256)})}}validate_email(src){var email=this.state.email;if(zurl.is_valid_email(email))return email;this.set_error({field:"email",type:"invalid_email",src})}}E.email_errors=(email,code,cls,set_signup_mode)=>{var email_match=email.match(/@(.*)$/);switch(code){case"invalid_email":return React.createElement("div",{className:cls},"Please enter a valid email address");case"domain_blacklisted":return React.createElement("div",{className:cls},"Please use another email. We don't allow @",email_match&&email_match[1]||email," email address");case"email_used":case"email_already_used":return React.createElement("div",{className:cls},"The email address is already in use. ",React.createElement("a",{onClick:()=>set_signup_mode(false),className:"dummy"},"Click here to sign in"));case"bad_email":default:return React.createElement("div",{className:cls},"Please use another email.")}};class Login extends Base_login{constructor(props){super(props);_defineProperty(this,"on_recaptcha_challenge",action=>{clearTimeout(this.recaptcha_stuck);perr(`${action}_recaptcha_challenge_show`,{email:this.state.email});this.recaptcha_long_stuck=setTimeout(()=>{perr(`${action}_stuck_recaptcha_challenge`)},3e4)});_defineProperty(this,"get_mode",()=>this.state.signup_mode?"signup":"login");_defineProperty(this,"get_token",()=>{var _this=this;return etask(function*(){var token=window.mtcaptcha.getVerifiedToken();var captcha_st=window.mtcaptcha.getStatus();if(!token&&!captcha_st.isVisible){var captcha_task=etask.wait();window.mtcaptcha.resetUI();_this.captcha_interval=setInterval(()=>{token=window.mtcaptcha.getVerifiedToken();if(token){clearInterval(_this.captcha_interval);captcha_task.continue()}var interval_st=window.mtcaptcha.getStatus();if(interval_st.isVisible){clearInterval(_this.captcha_interval);captcha_task.continue()}},1e3);yield captcha_task}return token})});_defineProperty(this,"resend_premium_verification",()=>{var _this=this;if(this.state.loading)return;perr("resend_premium_verification_click",{email:this.state.email});etask(function*(){_this.setState({loading:true});yield verify_email.resend_premium_verification({email:_this.state.email});_this.setState({loading:false})})});_defineProperty(this,"signup",event=>{var _this=this;var src="signup";var on_signup=(status,err_field)=>
5{if(err_field)_this.set_error({field:err_field,type:status,src});if(_this.props.on_signup)_this.props.on_signup(_this.state.email,status)};event.preventDefault();if(_this.state.block_sending)return;perr("signup_click",{email:this.state.email});etask(function*(){var email,password;_this.clear_error();if(!(email=_this.validate_email("signup")))return on_signup("invalid_email");if(!(password=_this.validate_password()))return on_signup("invalid_password");try{_this.setState({loading:true,error_field:null,error_type:null});var form=_this.ref.getElementsByClassName("login-form");var data=new FormData(form[0]);if(_this.state.unsubscribe)data.append("unsubscribe",1);var _ref=hopt.recaptcha||{},ignore_countries=_ref.ignore_countries;var mtcaptcha=hopt.mtcaptcha;var token;var type_c="google";if(mtcaptcha.enable){if(!window.mtcaptcha){var err=new Error;err.hola_info={response_text:"load_recaptcha",status:401};throw err}token=yield _this.get_token();type_c="mtcaptcha";if(!token){var _err=new Error;_err.hola_info={response_text:"recaptcha",status:401};throw _err}data.append("recaptcha",token);data.append("type_c",type_c)}else if(!ignore_countries||ignore_countries.indexOf(hopt.user_country)==-1){clearTimeout(_this.recaptcha_stuck);_this.recaptcha_stuck=setTimeout(()=>{perr("signup_stuck_recaptcha")},1e4);data.append("type_c",type_c);data.append("recaptcha",yield recaptcha.new_token("signup"));clearTimeout(_this.recaptcha_stuck);clearTimeout(_this.recaptcha_long_stuck)}data.append("save_two_step",_this.state.save_two_step);var qs={no_redirect:1};if(_this.props.signup_bonus)qs.signup_bonus=1;if(_this.props.qr_code)qs.qr_code=_this.props.qr_code;var query_obj={};var iterator=data.entries();var value=iterator.next();while(value.value){query_obj[value.value[0]]=value.value[1];value=iterator.next()}yield ajax({method:"POST",data:query_obj,url:up+"/auth/basic/signup?"+zescape.qs(qs)});yield perr("signup_success",{email});_this.setState({loading:false});slide(".login-body-container","left",()=>_this.setState({verify_email:true}));on_signup("submitted");if(_this.props.navbar&&_this.props.navbar.user_status)_this.props.navbar.user_status.refresh()}catch(e){if(e=="recaptcha_cancel")return void _this.setState({loading:false});console.error(e);var err_type=e.hola_info&&(e.hola_info.data||e.hola_info.response_text);if(err_type=="invalid password"){_this.set_error({field:"password",type:"weak_password",src});return}if(["abuse_ip"].includes(err_type)){_this.set_error({field:"password",type:err_type,src});return}if(["recaptcha","load_recaptcha"].includes(err_type)){_this.set_error({field:null,type:err_type,src});return}if(err_type=="email_already_used"){var ret=yield _this.check_password(email,password);if(ret=="unverified_two_step"){_this.setState({loading:false,show_two_step_verif:true});return}if(ret!==true)return on_signup("email_already_used","email");yield _this.login_done(email)}if(["bad_email","domain_blacklisted","friendly_signup"].includes(err_type)){_this.set_error({field:null,type:err_type,src});return}_this.set_error({field:null,type:"unknown",err:e,src})}})});_defineProperty(this,"signin",event=>{var _this=this;var src="login";event.preventDefault();if(_this.state.block_sending)return;perr("login_click",{email:this.state.email});etask(function*(){var email,password;try{if(!(email=_this.validate_email("login")))return;if(!(password=_this.validate_password()))return;_this.setState({loading:true,error_field:null,error_type:null});var ret=yield _this.check_password(email,password);if(ret=="not_registered"){_this.set_error({field:"email",type:"not_registered",src});return}if(ret=="unauthorized"){_this.setState({password:""});_this.set_error({field:"password",type:"wrong_password",src});return}if(["change_password","account_blocked","abuse_ip"].includes(ret)){_this.set_error({field:"password",type:ret,src});return}if("recaptcha"==ret||"load_recaptcha"==ret){_this.set_error({field:null,type:ret,src});return}if(ret=="unverified_two_step"){_this.setState({loading:false,show_two_step_verif:true});return}if(ret!==true){_this.set_error({field:null,type:"unknown",src});return}yield _this.login_done(email)}catch(e){if(e=="recaptcha_cancel")return void _this.setState({loading:false});console.error(e);_this.set_error({field:null,type:"unknown",err:e,src})}})});_defineProperty(this,"login_done",email=>{var _this=this;return etask(function*(){yield perr("login_success",{email});var login_res=yield _this.do_login();if(_this.props.on_login)return void _this.props.on_login();if(!login_res||!login_res.next)return;if(zurl.qs_parse_url(location.href,{safe:true}).signin_redirect){yield be.refresh_membership();yield etask.sleep(1e3)}yield _this.make_local_redirect(login_res);if(login_res.next&&login_res.next.indexOf("chrome:")==0)login_res.next="https://hola.org";location.href=login_res.next})});_defineProperty(this,"make_local_redirect",login_res=>{var qs_o=zurl.qs_parse_url(location.href,{safe:true});
5var local_r=decodeURIComponent(qs_o.local_redirect||"");var hash=qs_o.hash;var local_r_u=zurl.parse(local_r);if(local_r&&(local_r_u.protocol!="http:"||local_r_u.hostname!="127.0.0.1")){login_res.next="https://hola.org";return}if(!local_r||!hash)return;var id=(cookie.getJSON("user")||{})._id||"";if(!id)return;return etask(function*(){try{var sync_token=yield www_util.get_user_sync_token(hash);login_res.next=`${local_r}?ott=${sync_token}`}catch(e){}})});_defineProperty(this,"set_focus",input_name=>{input_name=input_name||this.state.error_field||!this.state.email&&"email"||"password";this.setState({focus:input_name});var input=this.ref.getElementsByClassName(input_name)[0];input.parentNode.className+=" has-focus";input.focus()});_defineProperty(this,"reset_password",()=>{slide(".login-body-container","left",()=>this.props.password_reset_mode(true,this.state.email))});_defineProperty(this,"set_signup_mode",signup_mode=>{if(location.pathname=="/signin"){return location.href=location.href.replace(/\/signin/,"/signup")}if(location.pathname=="/signup"){return location.href=location.href.replace(/\/signup/,"/signin")}this.clear_error();slide(".login-body-container",signup_mode?"left":"right",()=>this.setState({signup_mode,block_sending:false}),()=>this.set_focus("email"));if(this.props.on_mode_change)this.props.on_mode_change(signup_mode);this.set_focus("email")});_defineProperty(this,"on_input_change",event=>{var target=event.target;var name=target.name=="username"?"email":target.name;target.parentNode.className=target.parentNode.className.replace("is-empty","");this.setState({[name]:`${target.value}`.trim(),block_sending:false})});_defineProperty(this,"on_unsubscribe_change",()=>{this.setState({unsubscribe:!this.state.unsubscribe})});_defineProperty(this,"on_save_two_step_change",()=>{this.setState({save_two_step:!this.state.save_two_step})});_defineProperty(this,"toggle_show_password",()=>{this.setState({show_password:!this.state.show_password,show_password_transition:true});setTimeout(()=>this.setState({show_password_transition:false}),300);this.set_focus("password")});_defineProperty(this,"on_email_key_down",event=>{if(event.keyCode!=13)return;if(this.state.signup_mode)return this.signup(event);this.signin(event)});_defineProperty(this,"social_click",event=>{var mode=this.get_mode();var name=event.currentTarget.name;event.preventDefault();event.stopPropagation();var _this=this;etask(function*(){yield perr(`${mode}_${name}_click`);E.social_click(name,_this.get_enc_url())})});_defineProperty(this,"email_click",event=>{event.preventDefault();event.stopPropagation();slide(".login-body-container","left",()=>this.setState({with_email:true}),()=>this.set_focus("email"))});_defineProperty(this,"email_google_click",event=>{event.preventDefault();event.stopPropagation();slide(".login-body-container","left",()=>this.setState({with_email:true,instead_google:true}),()=>this.set_focus("email"))});_defineProperty(this,"back_click",event=>{event.preventDefault();event.stopPropagation();slide(".login-body-container","right",()=>this.setState({with_email:false,instead_google:false}))});_defineProperty(this,"get_enc_url",()=>{var _this$props=this.props,enc_url=_this$props.enc_url,signup_bonus=_this$props.signup_bonus,next=_this$props.next,qr_code=_this$props.qr_code;return enc_url||"?"+zescape.qs({next:next||location.href,signup_bonus:signup_bonus?1:undefined,qr_code})});var login_conf=zutil.get(hopt,"www_hola.login",{});var social=_objectSpread(_objectSpread(_objectSpread({},zutil.get(login_conf.all,"social",{})),zutil.get(login_conf[location.hostname],"social",{})),zutil.get(props,"blocks.social",{}));Object.assign(this.state,{signup_mode:props.signup_mode,show_two_step_verif:false,save_two_step:true,password:"",unsubscribe:false,csrf_token:csrf.get(),social,with_email:!!social.hide,qs:zurl.qs_parse_url(location.href,{safe:true})});perr(`${this.get_mode()}_view`)}componentDidMount(){if(this.state.qs.force_signin)perr("force_signin_page");if(this.state.with_email)this.init_recaptcha();var qs_o=zurl.qs_parse_url(location.href,{safe:true});
5var local_r=decodeURIComponent(qs_o.local_redirect||"");if(local_r&&this.props.user&&this.props.user.emails){var email_o=this.props.user.emails[0];if(!email_o)return;var email=email_o.value;var user=cookie.getJSON("user");if(email&&user&&user.is_member&&!user.is_trial)this.login_done(email)}}componentWillUnmount(){recaptcha.unload();clearInterval(this.captcha_interval);clearTimeout(this.recaptcha_long_stuck)}componentDidUpdate(prev_props,prev_state){if(!prev_state.with_email&&this.state.with_email)this.init_recaptcha()}init_recaptcha(){if(hopt.mtcaptcha&&hopt.mtcaptcha.enable)return;perr(`recaptcha_init`);clearTimeout(this.recaptcha_long_stuck);recaptcha.render(this.captcha_el,this.on_recaptcha_challenge)}get_error(cls="alert alert-danger"){var state=this.state;switch(state.error_type){case"email_already_used":case"bad_email":case"domain_blacklisted":case"invalid_email":return E.email_errors(state.email,state.error_type,cls,this.set_signup_mode);case"empty_password":return React.createElement("div",{className:cls},"Please enter a password");case"short_password":return React.createElement("div",{className:cls},www_util.pass_err_short);case"weak_password":return React.createElement("div",{className:cls},www_util.pass_err_stronger);case"change_password":return React.createElement("div",{className:cls},"Password must be changed");case"account_blocked":return React.createElement("div",{className:cls},"Your account is temporarily blocked. Try again later or click ",React.createElement("a",{onClick:()=>this.reset_password(true),className:"dummy"},"Forgot password")," to reset it.");case"wrong_password":return React.createElement("div",{className:cls},"Wrong password. Try again or click ",React.createElement("a",{onClick:()=>this.reset_password(true),className:"dummy"},"Forgot password")," to reset it.");case"not_registered":return React.createElement("div",{className:cls},"The email address is not registered. If you signed up with Google signup button, you should login with Google login button. ",!this.props.no_switch&&React.createElement("a",{onClick:()=>this.set_signup_mode(true),className:"dummy"},"Click here to sign up"));case"friendly_signup":return React.createElement("div",{className:cls},"Check your mailbox and follow the instructions to complete the registration process. ",React.createElement("a",{onClick:this.resend_premium_verification,className:"dummy"},"Resend email"));case"recaptcha":return React.createElement("div",{className:cls},"Please, fill captch field correctly.");case"load_recaptcha":return React.createElement("div",{className:cls},"We detect network issue from your side. Please reload the page and try again. ",React.createElement("a",{href:"#",onClick:()=>{location.reload()}},"Or click here for reload"));case"abuse_ip":return React.createElement("div",{className:cls},"Your IP was blocked due to suspicious activity. Please sign in with ",React.createElement("a",{name:"google",onClick:event=>this.social_click(event)},"Google")," or ",React.createElement("a",{name:"facebook",onClick:event=>this.social_click(event)},"Facebook")," or contact us at ",React.createElement("a",{href:"mailto:[email protected]"},"[email protected]"));case"unknown":return React.createElement("div",{className:cls},"We've encountered an error. Please try again later.");case"/":}if(this.props.need_plus){var user=cookie.getJSON("user");if(user&&user._id&&!user.is_member)return React.createElement(Need_plus,null)}}continue_with_basic(){this.setState({email:this.state.failed_email,continue_with_basic:this.state.failed_email});slide(".login-body-container","left",()=>this.clear_error())}validate_password(){var _this$state=this.state,password=_this$state.password,signup_mode=_this$state.signup_mode;var src=signup_mode?"signup":"login";if(password==""){this.set_error({field:"password",type:"empty_password",src});return}if(signup_mode&&password.length<8){this.set_error({field:"password",type:"short_password",src});return}return password}check_password(email,password){var _this=this;return etask(function*(){var res;try{var _ref2=hopt.recaptcha||{},ignore_countries=_ref2.ignore_countries;var mtcaptcha=hopt.mtcaptcha;var token;var type_c="google";if(mtcaptcha.enable){if(!window.mtcaptcha){var err=new Error;err.hola_info={response_text:"load_recaptcha",status:401};throw err}token=yield _this.get_token();type_c="mtcaptcha";if(!token){var _err2=new Error;_err2.hola_info={response_text:"recaptcha",status:401};throw _err2}}else if(!ignore_countries||ignore_countries.indexOf(hopt.user_country)==-1){clearTimeout(_this.recaptcha_stuck);_this.recaptcha_stuck=setTimeout(()=>{perr("login_stuck_recaptcha")},1e4);token=yield recaptcha.new_token("login");clearTimeout(_this.recaptcha_stuck);clearTimeout(_this.recaptcha_long_stuck)}res=yield fetch(up+"/auth/basic/check_credentials",{method:"POST",body:{username:email,password,recaptcha:token,type_c}})}catch(e){if(e.hola_info&&e.hola_info.status===401)return e.hola_info.response_text||false;throw e}_this.setState({csrf_token:csrf.get()});return res=="ok"?true:res})}do_login(){return $.get(up+"/auth/basic/login"+this.get_enc_url())}render(){var state=this.state,props=this.props;var signup=state.signup_mode;var email_group_cls=classnames("email-group",{"has-error":state.error_field=="email","is-empty":!state.email,"not-empty":state.email,"has-focus":state.focus=="email"});var password_group_cls=classnames("password-group",{"has-error":state.error_field=="password","is-empty":!state.password,"not-empty":state.password,transition:state.show_password_transition,"has-focus":state.focus=="password"});var show_password_title=(state.show_password?"Hide":"Show")+" password";var password_field_type=state.show_password?"text":"password";var autocomplete_password=signup?"new-password":"current-password";var show_subscribe=zutil.get(hopt,"www_hola.signup_subscribe")&&state.signup_mode&&!state.with_email;var show_google_method=!state.social.hide&&!state.social.hide_google;var qs_o=zurl.qs_parse_url(location.href,{safe:true});var block_google_login=zutil.get(hopt,"www_hola.block_google_login")||qs_o.block_google_login;var show_fb_method=!state.social.hide&&!state.social.hide_fb;
5var show_apple_method=!state.social.hide&&!state.social.hide_apple;var show_github_method=!state.social.hide&&!state.social.hide_github;var action_button=signup?React.createElement(Button,{round:true,arrow:true,size:"sm",cls:"login_btn",w100:true,on_click:this.signup,tab_index:"3",disabled:state.loading,caption:state.loading?"Joining...":"Join"}):React.createElement(Button,{round:true,arrow:true,size:"sm",cls:"login_btn",w100:true,on_click:state.instead_google?this.signup:this.signin,tab_index:"3",disabled:state.loading,caption:state.loading?"Logging in...":"Log in"});var user=cookie.getJSON("user");var need_plus=props.need_plus&&user&&user._id&&!user.is_member;if(state.verify_email){return React.createElement("div",{className:"login-view",ref:_ref3=>this.ref=_ref3},React.createElement(Verify_email_view,{email:state.email,enc_url:this.get_enc_url(),hide_title:props.hide_title}))}if(state.show_two_step_verif){return React.createElement("div",{className:"login-view",ref:_ref4=>this.ref=_ref4},React.createElement(Two_step_verif,{email:state.email,done_cb:this.login_done,hide_title:props.hide_title}))}var title=props.title||(signup?"Join Hola, it's free!":state.with_email?"Log in with Email":"Choose log in method:");if(state.instead_google){title="Google login is not available. Please set up a new "+"password using the same email address to get access to "+"your account"}if(this.state.qs.force_signin)title="To continue using Hola, please "+title;var show_meter=zutil.get(hopt,"www_hola.pass_meter")||qs_o.pass_meter;return React.createElement("div",{className:"login-view",ref:_ref6=>this.ref=_ref6},React.createElement("div",{ref:_ref5=>this.captcha_el=_ref5}),need_plus&&React.createElement("div",{className:"alerts"},React.createElement(Need_plus,null)),React.createElement("div",{className:classnames("login-body",{loading:state.loading})},React.createElement("div",{className:"login-body-container"},React.createElement("div",null,!state.social.hide&&state.with_email&&React.createElement("a",{onClick:this.back_click,className:"back-arrow"},"Back"),React.createElement("div",{className:"spacer"}),!props.hide_title&&React.createElement("div",{className:"title"},title),!state.with_email&&React.createElement("div",{className:"login-methods"},show_google_method&&(!block_google_login||!state.signup_mode)&&React.createElement(Method_button,{type:"google",on_click:block_google_login?this.email_google_click:this.social_click,signup_mode:state.signup_mode}),show_fb_method&&React.createElement(Method_button,{type:"facebook",on_click:this.social_click,signup_mode:state.signup_mode}),React.createElement(Method_button,{type:"email",on_click:this.email_click,signup_mode:state.signup_mode}),show_apple_method&&React.createElement(Method_button,{type:"apple",on_click:this.social_click,signup_mode:state.signup_mode},React.createElement(Svg,{icon:React.createElement(Icon_appstore_logo,{width:16,height:16})})),show_github_method&&React.createElement(Method_button,{type:"github",on_click:this.social_click,signup_mode:state.signup_mode})),state.with_email&&React.createElement("form",{className:"login-form",method:"post",action:up+"/auth/basic/signup"+this.get_enc_url()},React.createElement("div",{className:email_group_cls},React.createElement("input",{type:"text",name:"username",tabIndex:"1",readOnly:!!props.email,value:state.email,onChange:this.on_input_change,onKeyDown:this.on_email_key_down,onBlur:this.on_input_blur,onClick:()=>this.set_focus("email"),onFocus:()=>this.set_focus("email"),className:"form-control email",autoComplete:"username"}),React.createElement("div",{className:"email-overlay",onFocus:()=>this.set_focus("email"),onClick:()=>this.set_focus("email")}),React.createElement("div",{className:"label",onFocus:()=>this.set_focus("email"),onClick:()=>this.set_focus("email")},"Email address")),React.createElement("div",{className:password_group_cls},React.createElement("input",{type:password_field_type,name:"password",tabIndex:"2",autoComplete:autocomplete_password,value:state.password,onChange:this.on_input_change,onClick:()=>this.set_focus("password"),onFocus:()=>this.set_focus("password"),onBlur:this.on_input_blur,maxLength:"100",className:"form-control password"}),React.createElement("span",{onClick:this.toggle_show_password,title:show_password_title},React.createElement("div",{className:"circle"}),!state.show_password&&React.createElement(Show_password,{width:"24",height:"24"}),state.show_password&&React.createElement(Hide_password,{width:"24",height:"24"})),React.createElement("div",{className:"label",onClick:()=>this.set_focus("password")},"Enter your password"),(signup||state.instead_google)&&show_meter&&React.createElement(Pass_meter,{pass:state.password,email:state.email})),hopt.mtcaptcha&&hopt.mtcaptcha.enable&&React.createElement(Fragment,null,React.createElement(Captcha,{on_verified:()=>{this.setState({block_sending:false})}})),state.error_type&&React.createElement(Error_message,{error:this.get_error("error-message")}),(signup||state.instead_google)&&React.createElement(Checkbox,{checked:state.save_tw
5o_step,on_change:this.on_save_two_step_change,size:"sm",caption:"Trust this device"}),!signup&&!state.instead_google&&React.createElement("a",{className:"reset-password",onClick:()=>this.reset_password(true)},"Forgot password?"),action_button,React.createElement("input",{type:"hidden",name:"csrf_token",value:state.csrf_token})),show_subscribe&&React.createElement("div",{className:"subscribe-group"},React.createElement(Checkbox,{checked:!state.unsubscribe,size:"sm",on_change:this.on_unsubscribe_change,cls:"hola_checkbox"}),React.createElement("span",null,"I would like to receive news, special offers and other marketing materials from Hola.")),!props.no_switch&&signup&&React.createElement("p",{className:"mode-switch"},"Already have an account? ",React.createElement("a",{className:"dummy",onClick:()=>this.set_signup_mode(false)},"Log in")),!props.no_switch&&!signup&&!state.instead_google&&React.createElement("p",{className:"mode-switch"},"Don't have an account? ",React.createElement("a",{className:"dummy",onClick:()=>this.set_signup_mode(true)},"Join")),!props.modal&&React.createElement(Footer,{signup_mode:state.signup_mode,google_terms:state.with_email})))),props.modal&&React.createElement(Footer,{signup_mode:state.signup_mode,google_terms:state.with_email,instead_google:state.instead_google}))}}var method_name={apple:"Apple ID"};var Method_button=({children,type,signup_mode,on_click})=>{var login_with=signup_mode?"Join with":"Log in with";return React.createElement("a",{name:type,className:`auth-method ${type}`,onClick:on_click},React.createElement("div",{className:"auth-method-icon"},children),React.createElement("div",null,login_with," ",method_name[type]||string.capitalize(type)))};var Verify_email_view=({email,hide_title,enc_url})=>{enc_url=enc_url||"";var _useState=useState(false),_useState2=_slicedToArray(_useState,2),loading=_useState2[0],set_loading=_useState2[1];var _useState3=useState(false),_useState4=_slicedToArray(_useState3,2),resent=_useState4[0],set_resent=_useState4[1];useEffect(()=>{perr("verify_email_view",{email});var interval=setInterval(()=>etask(function*(){var res=yield $.get(up+"/is_verified");if(!res||!res.verified)return;var _zurl$qs_parse=zurl.qs_parse(zurl.parse(enc_url).query,{safe:true}),next=_zurl$qs_parse.next;location.href=next&&www_util.is_safe_redirect(next)?next:"https://hola.org/cp";perr("verify_email_polling_success",{email});clearInterval(interval)}),1e3);return()=>clearInterval(interval)},[email]);var cls=classnames("login-body verify-email",{loading});var resend=()=>{if(loading)return;perr("verify_email_resend_click",{email});etask(function*(){set_loading(true);this.on("finally",()=>set_loading(false));yield verify_email.resend_verification_email();slide(".verify-email-container","left",()=>set_resent(true));perr("verify_email_resent",{email})})};return React.createElement("div",{className:cls},React.createElement("div",{className:"login-body-container"},React.createElement("div",null,React.createElement("div",{className:"spacer"}),!hide_title&&React.createElement("div",{className:"title"},React.createElement("strong",null,"Verify your email")),React.createElement("div",{className:"verify-email-container"},React.createElement("div",null,email&&React.createElement("p",null,"Verification email was sent to ",React.createElement("strong",null,email)),!resent&&React.createElement("p",null,"Check your mailbox and follow the instructions to complete the registration process."),resent&&React.createElement("p",null,"Please check your spam mailbox and look for an email with subject: ",React.createElement("strong",null,'"Verify your Hola email address"')),React.createElement(Button,{round:true,arrow:true,w100:true,size:"sm",cls:"resend_btn",on_click:resend,tab_index:"3",disabled:loading,caption:loading?"Resend...":resent?"Resend email again":"Resend email"}))),React.createElement("p",{className:"contact-us"},"Problems? Contact us at ",React.createElement("a",{href:"mailto:[email protected]"},"[email protected]")))))};var Two_step_verif=({email,hide_title,done_cb})=>
5{var _useState5=useState(false),_useState6=_slicedToArray(_useState5,2),loading=_useState6[0],set_loading=_useState6[1];var _useState7=useState(["","","","","",""]),_useState8=_slicedToArray(_useState7,2),token_o=_useState8[0],set_token_o=_useState8[1];var _useState9=useState(""),_useState0=_slicedToArray(_useState9,2),error=_useState0[0],set_error=_useState0[1];var _useState1=useState(true),_useState10=_slicedToArray(_useState1,2),save=_useState10[0],set_save=_useState10[1];useEffect(()=>{perr("two_step_verif_view",{email});send_email()},[]);var send_email=()=>ajax({method:"POST",url:up+"/auth/two_step/send_email",no_throw:true});var verify_token=()=>etask(function*(){var token=token_o.join("");if(!token)return void set_error("bad token");set_loading(true);var res=yield ajax.json({method:"POST",url:up+"/auth/two_step/verify_token",data:JSON.stringify({token,save}),content_type:"application/json",no_throw:true});set_loading(false);if(res&&res.error){if(res.message=="token expired")yield send_email();perr("two_step_verif_error",{email,error:res.message});set_error(res.message)}else{perr("two_step_verif_done",{email});done_cb(email)}});var on_token_change_i=i=>value=>{set_token_o(old=>{var new_o=[...old];if(value){var skip=0;for(var j=0;j<value.length&&j+i-skip<6;j++){if(value[j]<="9"&&value[j]>="0")new_o[i+j-skip]=value[j];else skip++}}else new_o[i]="";return new_o});set_error("")};var on_key_press=e=>{if(e.key=="Enter")verify_token()};var on_key_down=i=>e=>{if(e.key=="Backspace"&&!token_o[i]&&i>0){token_o[i-1]="";set_token_o([...token_o])}};var on_save_change=()=>set_save(!save);var get_error=()=>{var cls="error-message";if(error=="bad token")return React.createElement("div",{className:cls},"Invalid token");else if(error=="token expired"){return React.createElement("div",{className:cls},"Expired token. A new token has been sent")}return React.createElement("div",{className:cls},"We've encountered an error. Please try again later.")};var cls=classnames("login-body two-step-verif",{loading});return React.createElement("div",{className:cls},React.createElement("div",{className:"login-body-container"},React.createElement("div",null,React.createElement("div",{className:"spacer"}),!hide_title&&React.createElement("div",{className:"title title_2step"},"2-Step Verification"),React.createElement("div",{className:"two-step-verif-container"},React.createElement("div",null,React.createElement("p",null,"We noticed you are logging in from a new location and require an extra step of verification to complete the login."),React.createElement("p",null,"A Hola 2-Step Verification email containing a token was sent to ",email,". The token is valid for 15 minutes."),React.createElement("div",{className:"two_step_fields"},token_o.map((ch,i)=>React.createElement(Input,{value:ch||"",select_by_focus:true,on_change:on_token_change_i(i),error_style:!!error,auto_focus:token_o.indexOf("")==i,center:true,no_margin:true,onKeyPress:on_key_press,key:i,onKeyDown:on_key_down(i)}))),!!error&&React.createElement(Error_message,{error:get_error()}),React.createElement(Checkbox,{checked:save,on_change:on_save_change,size:"xs",light:true,caption:"Don't ask for codes again on this computer",cls:"checkbox_verification"}),React.createElement(Button,{w100:true,round:true,arrow:true,caption:"Verify",disabled:loading,type:"submit",on_click:verify_token,cls:"submit_verification"}),React.createElement("p",{className:"light_gray_color"},"You may need to check your spam folder."))),React.createElement("p",{className:"contact-us"},"Problems? Contact us at ",React.createElement("a",{href:"mailto:[email protected]"},"[email protected]")))))};class Password_reset extends Base_login{constructor(props){super(props);_defineProperty(this,"send",event=>{var _this=this;var src="password_reset";event.preventDefault();perr("password_reset_click",{email:this.state.email});etask(function*(){var email;if(!(email=_this.validate_email(src)))return;_this.clear_error();_this.setState({loading:true});try{var res=yield ajax({method:"POST",url:"/users/send_reset_password_mail",data:{email,ajax:1},json:1});if(!res||!res.sent)throw Error("send password reset failed");slide(".login-body-container","left",()=>_this.setState({loading:false,sent:true}));perr("password_reset_sent",{email})}catch(e){console.error(e);_this.set_error({field:null,type:"unknown",err:e,src})}})});_defineProperty(this,"on_email_change",event=>{this.setState({email:event.target.value})});_defineProperty(this,"back",()=>{slide(".login-body-container","right",()=>this.props.password_reset_mode(false))});_defineProperty(this,"on_email_key_down",event=>{if(event.keyCode==13)this.send(event)});perr("password_reset_view")}componentDidMount(){this.set_focus()}set_focus(){var input=this.ref.getElementsByClassName("email")[0];input.parentElement.className+=" has-focus";this.setState({focus:true});input.focus()}get_error(cls="alert alert-danger"){switch(this.state.error_type){case"invali
5d_email":return React.createElement("div",{className:cls},"Please enter a valid email address.");case"unknown":return React.createElement("div",{className:cls},"We've encountered an error. Please try again later.")}}render(){var state=this.state;var email_group_cls=classnames("email-group",{"has-error":state.error_field=="email","is-empty":!state.email,"not-empty":state.email});var cls=classnames("password-reset-view",{"check-email":state.sent});return React.createElement("div",{className:cls,ref:_ref7=>this.ref=_ref7},!state.sent&&React.createElement("div",{className:"login-body"},React.createElement("div",{className:"login-body-container"},React.createElement("div",null,React.createElement("div",{className:"spacer"}),React.createElement("div",{className:"title"},"Forgot your password?"),React.createElement("div",{className:"text"},"Enter the email address associated with your account. We'll email you a link to reset your password."),React.createElement("div",{className:email_group_cls},React.createElement("input",{type:"text",name:"username",tabIndex:"1",value:state.email,onChange:this.on_email_change,onKeyDown:this.on_email_key_down,onBlur:this.on_input_blur,onClick:()=>this.set_focus(),className:"form-control email"}),React.createElement("div",{className:"label",onFocus:()=>this.set_focus(),onClick:()=>this.set_focus()},"Enter your email"),React.createElement("div",{className:"email-overlay",onFocus:()=>this.set_focus(),onClick:()=>this.set_focus()})),state.error_type&&React.createElement(Error_message,{error:this.get_error("error-message")}),React.createElement(Button,{round:true,arrow:true,w100:true,size:"sm",cls:"reset_btn",on_click:this.send,tab_index:"3",disabled:state.loading,caption:state.loading?"Sending...":"Send reset password link"}),React.createElement("a",{className:"back",onClick:this.back},"Back to Sign in")))),state.sent&&React.createElement("div",{className:"login-body"},React.createElement("div",{className:"login-body-container"},React.createElement("div",null,React.createElement("div",{className:"spacer"}),React.createElement("div",{className:"check-email-container"},React.createElement("div",{className:"title"},React.createElement(Trans,{i18nKey:"forgot_password.email_sent.check_email",defaults:"Check your email"})),React.createElement("div",{className:"text"},React.createElement(Trans,{i18nKey:"forgot_password.email_sent.text",defaults:"A message has been sent to "+"<strong>{{email}}</strong> with a link to "+"reset your password.",values:{email:state.email},components:{strong:React.createElement("strong",null)}}))),React.createElement("img",{src:url2md5("/www/hola/pub/img/email.svg"),alt:"email",className:classnames("email-gfx","lazyload")})))))}}class Login_container extends Pure_component{constructor(props){super(props);_defineProperty(this,"password_reset_mode",(mode,email)=>{this.setState({password_reset_mode:mode,email})});this.state={password_reset_mode:false}}}class Login_modal extends Login_container{constructor(props){super(props);_defineProperty(this,"handle_resize",()=>{if(!this.dialog)return;var overflowing=this.dialog.scrollHeight>document.documentElement.clientHeight;this.dialog.style.paddingRight=overflowing?"16px":"0"});_defineProperty(this,"detect_fb_login",ev=>{if(ev.key=="fb_login_ts"){this.close();window.location.reload()}});_defineProperty(this,"close",()=>{if(!this.props.no_close)this.setState({show:false});if(this.props.on_close)this.props.on_close()});this.state.show=true}componentDidMount(){this.dialog=document.querySelector(".modal.login-modal");this.handle_resize();window.addEventListener("resize",this.handle_resize);window.addEventListener("storage",this.detect_fb_login)}componentWillUnmount(){window.removeEventListener("resize",this.handle_resize);window.removeEventListener("storage",this.detect_fb_login)}render(){var state=this.state,props=this.props;var on_login=props.on_login?()=>{this.close();props.on_login()}:null;return React.createElement(Settings_provider,{location:window.location,themes_add:window.global_app_themes},React.createElement(Settings_context.Consumer,null,ctx=>React.createElement(Modal,{cls:classnames("login-modal",ctx.theme.root),on_close:this.close,show:state.show,backdrop:props.no_bg_close?"static":true},React.createElement(Header,{close_button:!props.no_close}
5,React.createElement("img",{src:url2md5(`/www/hola/pub/img/hola_logo.svg`),alt:"hola_logo",className:classnames("logo","lazyload")}),props.skip&&React.createElement("button",{className:"skip",onClick:this.close},"Skip")),React.createElement("div",{className:"modal-body"},state.password_reset_mode&&React.createElement(Password_reset,{email:state.email,password_reset_mode:this.password_reset_mode}),!state.password_reset_mode&&React.createElement(Login,_extends({},props,{modal:true,on_login,password_reset_mode:this.password_reset_mode}))))))}}E.Login_modal=Login_modal;class Login_page extends Login_container{render(){var state=this.state,props=this.props;return React.createElement("div",{className:classnames("login-page",this.context.theme.root)},state.password_reset_mode&&React.createElement(Password_reset,{email:state.email,password_reset_mode:this.password_reset_mode}),!state.password_reset_mode&&React.createElement(Login,_extends({},props,{password_reset_mode:this.password_reset_mode})))}}_defineProperty(Login_page,"contextType",Settings_context);E.Login_page=Login_page;var Verify_email_modal=({on_close,email})=>{var _useState11=useState(true),_useState12=_slicedToArray(_useState11,2),show=_useState12[0],set_show=_useState12[1];var _useState13=useState(false),_useState14=_slicedToArray(_useState13,2),resent=_useState14[0],set_resent=_useState14[1];useEffect(()=>{var interval=setInterval(()=>etask(function*(){var res=yield $.get(up+"/is_verified");if(res&&res.verified){set_show(false);on_close(true)}}),4e3);return()=>clearInterval(interval)},[email]);var close=()=>{set_show(false);on_close(false)};var resend=()=>$.post("/users/send_email_verification").done(()=>set_resent(true));return React.createElement(Modal,{cls:"verify-email-modal",on_close:close,show,backdrop:"static"},React.createElement(Header,{close_button:true},React.createElement("h4",null,"Verify your email address")),React.createElement("div",{className:"modal-body"},resent&&React.createElement("div",{className:"alert alert-success"},"Verification email sent to ",email),React.createElement("p",null,"We need to verify your email address ",React.createElement("strong",null,email)," to activate your Hola account.",React.createElement("br",null),React.createElement("br",null),"We sent you a verification email. Check your inbox and click on the link in the email to verify your address. If you can't find it, check your spam folder or click the button to resend the email.")),React.createElement("div",{className:"modal-footer"},React.createElement("button",{className:"btn btn-default",onClick:close},"Close"),React.createElement("button",{className:"btn btn-primary resend_email",onClick:resend},"Resend email")))};var ensure_email_verified=user=>etask(function*(){if(!user||user.verified||!user.emails||!user.providers&&user.provider!="basic"){return user}var email=user.emails[0].value;var el=document.createElement("div");el.className="email-verify-root";document.body.appendChild(el);var on_close=verified=>{setTimeout(()=>{ReactDOM.unmountComponentAtNode(el);el.remove()},500);this.return(verified?user:undefined)};react_util.dom_render(React.createElement(Verify_email_modal,{on_close,email}),el);yield this.wait()});E.ensure_login=opt=>etask(function*(){var res=yield www_util.get_user({source:"login_ensure",embed_hola_browser:opt.embed_hola_browser});if(!res.user||res.user.disable_account_changes&&!opt.readonly_access){if(opt.guest_available)return{hola_uid:"guest",is_guest:true};var next=opt.next||(opt.hash?location.href.replace(/#.*$/,"")+opt.hash:location.href);if(opt.simple){var qs_o=zurl.qs_parse_url(location.href,{safe:true});if(opt.logo_disabled)qs_o.logo_disabled=1;var new_url="/login?"+zescape.qs(_objectSpread(_objectSpread({},qs_o),{},{next}));if(opt.embed_hola_browser){if(window.global_is_internet_connected){window.chrome.send("send_command",["open_url",new_url])}}else location.href=new_url}else{E.open_modal({enc_url:"?"+zescape.qs({next}),signup_mode:opt.signup_mode,navbar:opt.navbar,on_cancel:opt.on_cancel})}return null}if(!opt.email_verified)return res.user;return yield ensure_email_verified(res.user)});E.open_modal=opt=>{var el=document.createElement("div");el.className="login-modal-root";document.getElementById("react-root").appendChild(el);var on_close=()=>{if(opt.on_cancel)opt.on_cancel();setTimeout(()=>{ReactDOM.unmountComponentAtNode(el);el.remove()},500)};react_util.dom_render(React.createElement(Login_modal,_extends({on_close},opt)),el)};E.social_click=(name,enc_url,cb)=>{enc_url=enc_url||"";if(enc_url&&enc_url[0]!="?")enc_url="?"+enc_url;var qs=zurl.qs_parse_url(location.href,{safe:true});var open_popup=!user_agent.guess().mobile&&!qs.signin_redirect;var href=()=>up+"/auth/"+name+enc_url;var href_popup=up+"/auth/"+name+"/popup"+enc_url;perr("social_click",{open_popup,enc_url});if(!open_popup)return location.href=href();var popup=www_util.open_popup_cb(href_popup,cb);if(!popup){if(qs.root_url){var qs_o=zurl.qs_parse(enc_url.substring(1),{safe:true});enc_url="?"+zescape.qs(_objectSpread(_objectSpread({},qs_o),{},{next:zurl.add_proto(qs.root_url)}))}perr("social_click_fallback",{enc_url});return top.location.href=href()}};E.login_page=opt=>{react_util.dom_render(React.createElement(Login_page,opt),$(opt.el)[0])};return E}).apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))},
5"../../../../pkg/www/util/pub/pure_component.js":(module,exports,__webpack_require__)=>{var __WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;var module; 6// LICENSE_CODE ZON 7"use strict";var is_node=typeof module=="object"&&module.exports;if(is_node);else;!(__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__("../../../../../../../../../var/lib/nave/installed/20.12.1/lib/node_modules/react/index.js"),__webpack_require__("../../../../pkg/util/etask.js"),__webpack_require__("../../../../pkg/util/setdb.js")],__WEBPACK_AMD_DEFINE_RESULT__=((React,etask,setdb)=>{var LONG_CB_MS=100;class Pure_component extends React.PureComponent{constructor(props){super(props);this.listeners={};this.comp_name=this.constructor.name}componentWillUnmount(){var t0=Date.now();if(this.sp){this.sp.return();delete this.sp}Object.values(this.listeners).forEach(l=>{setdb.off(l)});if(this.willUnmount)this.willUnmount();var t1=Date.now();if(this.debug&&t1-t0>LONG_CB_MS){console.warn("long cb componentWillUnmount %s took %sms",this.comp_name,t1-t0)}}setdb_on(path,cb,opt){this.listeners[path]=setdb.on(path,cb,opt)}etask(sp){if(!this.sp)this.sp=etask("Component",function*(){yield this.wait()});if(sp.constructor.name!="Etask")sp=etask(sp);this.sp.spawn(sp);return sp}setState(updater,cb){var t0,t1,t2,t3;if(this.debug){console.log("setState %s %s",this.comp_name,Object.keys(updater).join(", "));t0=Date.now()}super.setState(updater,()=>{t2=Date.now();if(cb)cb.apply(this,arguments);t3=Date.now();if(this.debug&&t3-t2>LONG_CB_MS){console.warn("long cb setState %s cb %s took %sms",this.comp_name,cb&&cb.name,t3-t2)}if(this.debug&&t3-t0>LONG_CB_MS){console.warn("long cb setState-done %s cb %s took %sms",this.comp_name,cb&&cb.name,t3-t0)}});t1=Date.now();if(this.debug&&t1-t0>LONG_CB_MS){console.warn("long cb setState %s took %sms",this.comp_name,t1-t0)}}}return Pure_component}).apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),__WEBPACK_AMD_DEFINE_RESULT__!==undefined&&(module.exports=__WEBPACK_AMD_DEFINE_RESULT__))}
7}]); 8//# sourceMappingURL=https://hola.org/www/hola/pub/fbe1b456e9a620075ff1ea19dfb2207c.1.259.452.chunk.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.