"use strict";function UtilFactory(a,b,c){var d=function(a,b,d){var e=!1;if(a&&a.length){var f=c.getComputedStyle(a[0]);e=angular.isDefined(f[b])&&(d?f[b]===d:!0)}return e},e={dom:{},now:c.performance?angular.bind(c.performance,c.performance.now):Date.now||function(){return(new Date).getTime()},nextUid:function(){return""+nextUniqueId++},getClosest:function(a,b,c){if(angular.isString(b)){var d=b.toUpperCase();b=function(a){return a.nodeName===d}}if(a instanceof angular.element&&(a=a[0]),c&&(a=a.parentNode),!a)return null;do if(b(a))return a;while(a=a.parentNode);return null},nextTick:function(c,d,f){function g(){var a=h.queue,c=h.digest;h.queue=[],h.timeout=null,h.digest=!1,a.forEach(function(a){var b=a.scope&&a.scope.$$destroyed;b||a.callback()}),c&&b.$digest()}var h=e.nextTick,i=h.timeout,j=h.queue||[];return j.push({scope:f,callback:c}),null===d&&(d=!0),h.digest=h.digest||d,h.queue=j,i||(h.timeout=a(g,0,!1))},hasComputedStyle:d,isParentFormSubmitted:function(a){var b=e.getClosest(a,"form"),c=b?angular.element(b).controller("form"):null;return c?c.$submitted:!1}};return e}function mdInputContainerDirective(a){function b(b,c,d,e){var f=this;f.isErrorGetter=d.mdIsError&&a(d.mdIsError),f.delegateClick=function(){f.input.focus()},f.element=c,f.setFocused=function(a){c.toggleClass("md-input-focused",!!a)},f.setHasValue=function(a){c.toggleClass("md-input-has-value",!!a)},f.setHasPlaceholder=function(a){c.toggleClass("md-input-has-placeholder",!!a)},f.setInvalid=function(a){a?e.addClass(c,"md-input-invalid"):e.removeClass(c,"md-input-invalid")},b.$watch(function(){return f.label&&f.input},function(a){a&&!f.label.attr("for")&&f.label.attr("for",f.input.attr("id"))})}return b.$inject=["$scope","$element","$attrs","$animate"],{restrict:"E",controller:b}}function labelDirective(){return{restrict:"E",require:"^?mdInputContainer",link:function(a,b,c,d){d&&(d.label=b,a.$on("$destroy",function(){d.label=null}))}}}function inputTextareaDirective(a){return{restrict:"E",require:["^?mdInputContainer","?ngModel"],link:function(b,c,d,e){function f(){i.setHasValue(c.val().length>0||(c[0].validity||{}).badInput)}function g(a){return i.setHasValue(!k.$isEmpty(a)),a}function h(){i.label&&d.$observe("required",function(){i.label.toggleClass("md-required",!1)})}var i=e[0],j=!!e[1],k=e[1],l=angular.isDefined(d.readonly);if(i){i.input=c,h(),c.addClass("md-input"),c.attr("id")||c.attr("id","input_"+a.nextUid()),j||f();var m=i.isErrorGetter||function(){return k.$invalid&&(k.$touched||a.isParentFormSubmitted(c))};b.$watch(m,i.setInvalid),d.ngValue&&d.$observe("value",f),k.$parsers.push(g),k.$formatters.push(g),c.on("input",f),l||c.on("focus",function(){a.nextTick(function(){i.setFocused(!0)})}).on("blur",function(){a.nextTick(function(){i.setFocused(!1),f()})}),b.$on("$destroy",function(){i.setFocused(!1),i.setHasValue(!1),i.input=null})}}}}function placeholderDirective(){return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:{pre:function(a,b,c,d){d&&d.setHasPlaceholder(!0)}}}}UtilFactory.$inject=["$timeout","$rootScope","$window"],mdInputContainerDirective.$inject=["$parse"],inputTextareaDirective.$inject=["$mdUtil"],angular.module("loginAppInternal",["loginTranslations","loginPreload","wixAngular","wix.common.bi","loginAppConstants","wixStyle","material","wixAngularStorage"]).config(["wixBiLoggerProvider","biEvents",function(a,b){function c(a){return a.isMobile()?"mobile":"desktop"}function d(a){return a.get()}c.$inject=["userDeviceType"],d.$inject=["sessionId"],a.setConfig({adapter:"hls2",eventMap:b.getEventMap(),defaultEventArgs:{view:c,ldSessionID:d,appVersion:"new-wix-login"},removeUndefinedValues:!0})}]),angular.module("loginApp",["loginAppInternal","ngAnimate","ngCookies","debounce","fedops","wixAngularExperiments"]).config(["$locationProvider","fedopsLoggerProvider","experimentManagerProvider","$translateProvider",function(a,b,c,d){a.html5Mode({enabled:!0,requireBase:!1}),b.setAppName("login-statics"),wixFullstoryLoader({label:"login-statics",spec:"specs.users.FullStory"}),d.useSanitizeValueStrategy(null)}]).run(["$window","$rootScope","debounce",function(a,b,c){a.addEventListener("resize",function(){return c(b.$digest(),500)})}]),angular.module("loginAppConstants",[]),angular.module("material",[]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/desktop/account-verification.html","<form name='accountVerificationForm' novalidate onsubmit='submit.focus()'>\n<div class='title-and-content'>\n<div class='account-verification-title title'>{{'account_verification.title' | translate}}</div>\n<div class='account-verification-content content'>{{'account_verification.content' | translate:{email: $ctrl.getEmail()} }}</div>\n</div>\n<div class='input-info'>\n<desktop-input class='password' field='accountVerificationForm.password' label='&#39;account_verification.placeholder&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input autofocus name='password' ng-model='$ctrl.password' required type='password'>\n</desktop-input>\n<div class='button-and-forgot-password'>\n<div class='button-spinner'>\n<button class='verify-btn wix-button submit' name='submit' ng-click='accountVerificationForm.$valid ? $ctrl.verifyAccount() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'account_verification.next' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n<a class='forgot-password-link' href ng-click='$ctrl.onClickForgotPassword()'>{{ 'forgot_password.link' | translate }}</a>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/desktop/enter-email.html","<form name='enterEmailForm' novalidate onsubmit='submit.focus()'>\n<div class='enter-email-title title'>{{'enter_email.title' | translate}}</div>\n<desktop-input class='email' field='enterEmailForm.email' label='&#39;enter_email.placeholder&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input autofocus class='enter-email-input' name='email' ng-model='$ctrl.email' required type='email' wix-mail-validator>\n</desktop-input>\n<div class='button-spinner'>\n<button class='enter-email-send wix-button submit' name='submit' ng-click='enterEmailForm.$valid ? $ctrl.sendEmailAddress() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'enter_email.send' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/desktop/forgot-password.html","<form class='forgot-password' name='forgotPasswordForm' novalidate onsubmit='submit.focus()'>\n<div class='title-and-instructions'>\n<div class='title'>{{'forgot_password.title' | translate}}</div>\n<div class='forgot-password-instructions content'>{{'forgot_password.instructions' | translate}}</div>\n<desktop-input class='email' field='forgotPasswordForm.email' label='&#39;forgot_password.placeholder&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input autofocus name='email' ng-model='$ctrl.email' required type='email' wix-experiment-if='!specs.users.ForgotPasswordAutoFill' wix-mail-validator>\n<input autocomplete='email' autofocus name='email' ng-model='$ctrl.email' required type='email' wix-experiment-if='specs.users.ForgotPasswordAutoFill' wix-mail-validator>\n</desktop-input>\n</div>\n<div class='back-next-buttons'>\n<button class='back-btn wix-button is-button-outline' ng-click='$ctrl.onClickBack()' type='button'>{{'forgot_password.back' | translate}}</button>\n<div class='button-spinner'>\n<button class='send-btn wix-button' name='submit' ng-click='forgotPasswordForm.$valid ? $ctrl.onClickSend() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'forgot_password.send' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/desktop/login.html","<form class='login' name='loginForm' novalidate onsubmit='submit.focus()'>\n<div class='log-in-title title'>{{'login.title' | translate}}</div>\n<div class='new-user'>\n{{ 'login.new_to_wix' | translate }}\n<a class='signup-link' href ng-click='$ctrl.onClickSignup()'>{{ 'login.sign_up' | translate }}</a>\n</div>\n<div class='signin-section'>\n<div class='signin-with-email'>\n<desktop-input class='email' field='loginForm.email' label='&#39;login.email&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input autofocus default-email name='email' ng-attr-wix-mail-validator='{{!$ctrl.novalidateEmail()}}' ng-model='$ctrl.email' required type='{{$ctrl.novalidateEmail() ? &#39;text&#39; : &#39;email&#39;}}'>\n</desktop-input>\n<desktop-input class='password' field='loginForm.password' label='&#39;login.password&#39;' server-error='$ctrl.serverError'>\n<input name='password' ng-minlength='4' ng-model='$ctrl.password' required type='password'>\n</desktop-input>\n<div class='remember-me-and-forgot-password'>\n<label class='remember-me-section'>\n<div class='remember-me-text'>{{'login.remember_me' | translate}}</div>\n<wix-checkbox class='remember-me' ng-model='$ctrl.rememberMe'></wix-checkbox>\n</label>\n<a class='forgot-password-link' ng-href='{{$ctrl.getAccountRecoveryLink()}}' ng-if='$ctrl.isAccountRecoveryFlowActivated()' target='_self'>{{ 'forgot_password.link' | translate }}</a>\n<a class='forgot-password-link' href ng-click='$ctrl.onClickForgotPassword()' ng-if='!$ctrl.isAccountRecoveryFlowActivated()'>{{ 'forgot_password.link' | translate }}</a>\n</div>\n<div class='recaptcha-widget' id='recaptcha-widget'></div>\n<div class='login-button'>\n<div class='button-spinner'>\n<button class='login-btn wix-button' name='submit' ng-class='{&#39;is-button-outline&#39; : loginForm.$pristine}' ng-click='loginForm.$valid ? $ctrl.doLogin() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'login.login_button' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n</div>\n</div>\n<div class='divider'></div>\n<social-signin template-url='&#39;views/desktop/social-signin.html&#39;' wix-experiment-if='!specs.users.NewSocialLogin'></social-signin>\n<social-signin template-url='&#39;views/social-signin.html&#39;' wix-experiment-if='specs.users.NewSocialLogin'></social-signin>\n</div>\n<terms-of-use class='small' mode='&#39;login&#39;'></terms-of-use>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/desktop/signup.html","<form class='signup' name='signupForm' novalidate onsubmit='submit.focus()'>\n<div class='sign-up-title title'>{{'signup.title' | translate}}</div>\n<div class='already-user'>\n{{ 'signup.already_have' | translate }}\n<a class='login-link' href ng-click='$ctrl.onClickLogin()'>{{ 'signup.log_in' | translate }}</a>\n</div>\n<div class='signin-section'>\n<div class='signin-with-email'>\n<desktop-input class='email' field='signupForm.email' label='&#39;signup.email&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input autofocus default-email name='email' ng-model='$ctrl.email' required type='email' wix-mail-validator>\n</desktop-input>\n<desktop-input class='email-confirm' field='signupForm.emailConfirm' label='&#39;signup.confirm_email&#39;' server-error='$ctrl.serverError'>\n<input default-email match='$ctrl.email' name='emailConfirm' ng-model='$ctrl.emailConfirm' required type='email' wix-experiment-if='!specs.users.GoogleAutoFill' wix-mail-validator>\n<input autocomplete='email' default-email match='$ctrl.email' name='emailConfirm' ng-model='$ctrl.emailConfirm' required type='email' wix-experiment-if='specs.users.GoogleAutoFill' wix-mail-validator>\n</desktop-input>\n<desktop-input class='password' field='signupForm.password' label='&#39;signup.password&#39;' server-error='$ctrl.serverError'>\n<input autocomplete='new-password' name='password' ng-minlength='4' ng-model='$ctrl.password' required type='password'>\n</desktop-input>\n<desktop-input class='password-confirm' field='signupForm.passwordConfirm' label='&#39;signup.confirm_password&#39;' server-error='$ctrl.serverError'>\n<input match='$ctrl.password' name='passwordConfirm' ng-model='$ctrl.passwordConfirm' required type='password'>\n</desktop-input>\n<div class='recaptcha-widget' id='recaptcha-widget'></div>\n<div class='login-button'>\n<div class='button-spinner'>\n<button class='signup-btn wix-button' name='submit' ng-class='{&#39;is-button-outline&#39; : signupForm.$pristine}' ng-click='signupForm.$valid ? $ctrl.doSignup() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'signup.signup_button' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n</div>\n</div>\n<div class='divider'></div>\n<social-signin template-url='&#39;views/desktop/social-signin.html&#39;' wix-experiment-if='!specs.users.NewSocialLogin'></social-signin>\n<social-signin template-url='&#39;views/social-signin.html&#39;' wix-experiment-if='specs.users.NewSocialLogin'></social-signin>\n</div>\n<terms-of-use class='small' mode='&#39;signup&#39;'></terms-of-use>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/desktop/social-signin.html","<div class='sozial-buttons'>\n<div class='sozial-button-and-spinner fazebook-container'>\n<button class='signin-sozial-fazebook sozial-login fazebook' facebook-login fb-loading='$ctrl.fbLoading' ng-click='$ctrl.socialClicked(&#39;facebook&#39;)' ng-show='!$ctrl.fbLoading' tabindex='0' type='button'>\n<div class='icon-and-text'>\n<div class='icon'>\n<div class='login-svg-font-icons-fazebook'></div>\n</div>\n<div class='signin-button-text'>{{ 'signin_social.continue_with_facebook' | translate }}</div>\n</div>\n</button>\n<div class='spinner-container' ng-show='$ctrl.fbLoading'>\n<spinner></spinner>\n</div>\n</div>\n<div class='sozial-button-and-spinner zoogle-container'>\n<button class='signin-sozial-zoogle sozial-login zoogle' google-loading='$ctrl.googleLoading' google-login ng-click='$ctrl.socialClicked(&#39;google&#39;)' ng-show='!$ctrl.googleLoading' tabindex='0' type='button'>\n<div class='icon-and-text'>\n<div class='icon'>\n<div class='login-svg-font-icons-zoogle'></div>\n</div>\n<div class='signin-button-text'>{{ 'signin_social.continue_with_google' | translate }}</div>\n</div>\n</button>\n<div class='spinner-container' ng-show='$ctrl.googleLoading'>\n<spinner></spinner>\n</div>\n</div>\n</div>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/desktop/reset-password.html","<form class='reset-password' name='resetPasswordForm' novalidate onsubmit='submit.focus()'>\n<div class='reset-password-title title'>{{'reset_password.title' | translate}}</div>\n<desktop-input class='password' field='resetPasswordForm.password' label='&#39;reset_password.password&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input autocomplete='new-password' autofocus name='password' ng-minlength='4' ng-model='$ctrl.password' required type='password'>\n</desktop-input>\n<desktop-input class='password-confirm' field='resetPasswordForm.passwordConfirm' label='&#39;reset_password.confirm_password&#39;' server-error='$ctrl.serverError'>\n<input match='$ctrl.password' name='passwordConfirm' ng-model='$ctrl.passwordConfirm' required type='password'>\n</desktop-input>\n<div class='button-spinner'>\n<button class='reset-btn wix-button' name='submit' ng-click='resetPasswordForm.$valid &amp;&amp; $ctrl.doResetPassword()' ng-show='!$ctrl.loading' type='submit'>{{'reset_password.button' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/account-verification.html","<form name='accountVerificationForm' novalidate onsubmit='submit.focus()'>\n<div class='title-and-content'>\n<div class='account-verification-title title'>{{'account_verification.title' | translate}}</div>\n<div class='account-verification-content content'>{{'account_verification.content' | translate:{email: $ctrl.getEmail()} }}</div>\n</div>\n<div class='input-info'>\n<mobile-input class='password' field='accountVerificationForm.password' label='&#39;account_verification.placeholder&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input name='password' ng-model='$ctrl.password' required type='password'>\n</mobile-input>\n<div class='button-and-forgot-password'>\n<button class='verify-btn wix-button submit' name='submit' ng-click='accountVerificationForm.$valid ? $ctrl.verifyAccount() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'account_verification.next' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n<a class='forgot-password-link' href ng-click='$ctrl.onClickForgotPassword()'>{{ 'forgot_password.link' | translate }}</a>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/enter-email.html","<form name='enterEmailForm' novalidate onsubmit='submit.focus()'>\n<div class='enter-email-title title'>{{'enter_email.title' | translate}}</div>\n<mobile-input class='email' field='enterEmailForm.email' label='&#39;enter_email.placeholder&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input class='enter-email-input' name='email' ng-model='$ctrl.email' required type='email' wix-mail-validator>\n</mobile-input>\n<div class='button-container'>\n<button class='enter-email-send wix-button submit' name='submit' ng-click='enterEmailForm.$valid ? $ctrl.sendEmailAddress() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'enter_email.send' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/forgot-password.html","<form class='forgot-password' name='forgotPasswordForm' novalidate onsubmit='submit.focus()'>\n<div class='title-and-instructions'>\n<div class='title'>{{'forgot_password.title' | translate}}</div>\n<div class='forgot-password-instructions content'>{{'forgot_password.instructions' | translate}}</div>\n<mobile-input class='email' field='forgotPasswordForm.email' label='&#39;forgot_password.placeholder&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input name='email' ng-model='$ctrl.email' required type='email' wix-experiment-if='!specs.users.ForgotPasswordAutoFill' wix-mail-validator>\n<input autocomplete='email' name='email' ng-model='$ctrl.email' required type='email' wix-experiment-if='specs.users.ForgotPasswordAutoFill' wix-mail-validator>\n</mobile-input>\n</div>\n<div class='back-next-buttons'>\n<button class='back-btn wix-button is-button-outline' ng-click='$ctrl.onClickBack()' type='button'>{{'forgot_password.back' | translate}}</button>\n<button class='send-btn wix-button' name='submit' ng-click='forgotPasswordForm.$valid ? $ctrl.onClickSend() :  $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'forgot_password.send' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/login.html","<form class='login' name='loginForm' ng-class='{&#39;is-email-focus&#39;: $ctrl.isEmailFocus}' novalidate onsubmit='submit.focus()'>\n<div class='form-header'>\n<div class='log-in-title title'>{{'login.title' | translate}}</div>\n<div class='new-user'>\n{{ 'login.new_to_wix' | translate }}\n<a class='signup-link' href ng-click='$ctrl.onClickSignup()'>{{ 'login.sign_up' | translate }}</a>\n</div>\n</div>\n<div class='form-content'>\n<div class='email-no-focus'>\n<social-signin template-url='&#39;views/mobile/social-signin.html&#39;' wix-experiment-if='!specs.users.NewSocialLogin'></social-signin>\n<social-signin class='mobile' template-url='&#39;views/social-signin.html&#39;' wix-experiment-if='specs.users.NewSocialLogin'></social-signin>\n<div class='or-use-email'>\n<div class='separator'></div>\n<div class='text'>{{'login.use_email'|translate}}</div>\n<div class='separator'></div>\n</div>\n</div>\n<div class='email-section' ng-click='$ctrl.isEmailFocus=true'>\n<div class='show-above-email' ng-hide='$ctrl.isEmailFocus'></div>\n<mobile-input class='email' field='loginForm.email' label='&#39;login.email&#39;' ng-class='{&#39;showing-fields&#39; :  $ctrl.isEmailFocus}' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input class='email' default-email name='email' ng-attr-wix-mail-validator='{{!$ctrl.novalidateEmail()}}' ng-model='$ctrl.email' required type='{{$ctrl.novalidateEmail() ? &#39;text&#39; : &#39;email&#39;}}'>\n</mobile-input>\n</div>\n<div class='email-focus' ng-show='$ctrl.isEmailFocus'>\n<mobile-input class='password' field='loginForm.password' label='&#39;login.password&#39;' server-error='$ctrl.serverError'>\n<input class='password' name='password' ng-minlength='4' ng-model='$ctrl.password' required type='password'>\n</mobile-input>\n<div class='recaptcha-widget' id='recaptcha-widget'></div>\n<a class='forgot-password-link' ng-href='{{$ctrl.getAccountRecoveryLink()}}' target='_self' wix-experiment-if='specs.users.MobileAccountRecovery'>{{ 'forgot_password.link' | translate }}</a>\n<a class='forgot-password-link' href ng-click='$ctrl.onClickForgotPassword()' wix-experiment-if='!specs.users.MobileAccountRecovery'>{{ 'forgot_password.link' | translate }}</a>\n<button class='login-btn wix-button' name='submit' ng-click='loginForm.$valid ? $ctrl.doLogin() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'login.login_button' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n<div class='sozial-signin-icons'>\n<div class='text'>{{ 'login.or_login_with' | translate}}</div>\n<social-signin template-url='&#39;views/mobile/social-signin-icons.html&#39;'></social-signin>\n</div>\n<terms-of-use mode='&#39;login&#39;'></terms-of-use>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/signup.html","<form class='signup' name='signupForm' ng-class='{&#39;is-email-focus&#39;: $ctrl.isEmailFocus}' novalidate onsubmit='submit.focus()'>\n<div class='form-header'>\n<div class='sign-up-title title'>{{'signup.title' | translate}}</div>\n<div class='already-user'>\n{{ 'signup.already_have' | translate }}\n<a class='login-link' href ng-click='$ctrl.onClickLogin()'>{{ 'signup.log_in' | translate }}</a>\n</div>\n</div>\n<div class='form-content'>\n<div class='email-no-focus'>\n<social-signin template-url='&#39;views/mobile/social-signin.html&#39;' wix-experiment-if='!specs.users.NewSocialLogin'></social-signin>\n<social-signin class='mobile' template-url='&#39;views/social-signin.html&#39;' wix-experiment-if='specs.users.NewSocialLogin'></social-signin>\n<div class='or-use-email'>\n<div class='separator'></div>\n<div class='text'>{{'login.use_email'|translate}}</div>\n<div class='separator'></div>\n</div>\n</div>\n<div class='email-section' ng-click='$ctrl.isEmailFocus=true'>\n<div class='show-above-email' ng-hide='$ctrl.isEmailFocus'></div>\n<mobile-input class='email' field='signupForm.email' label='&#39;signup.email&#39;' ng-class='{&#39;showing-fields&#39; :  $ctrl.isEmailFocus}' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input default-email name='email' ng-model='$ctrl.email' required type='email' wix-mail-validator>\n</mobile-input>\n</div>\n<div class='email-focus' ng-show='$ctrl.isEmailFocus'>\n<mobile-input class='email-confirm' field='signupForm.emailConfirm' label='&#39;signup.confirm_email&#39;' server-error='$ctrl.serverError'>\n<input default-email match='$ctrl.email' name='emailConfirm' ng-model='$ctrl.emailConfirm' required type='email' wix-mail-validator>\n</mobile-input>\n<mobile-input class='password' field='signupForm.password' label='&#39;signup.mobile_choose_password&#39;' server-error='$ctrl.serverError'>\n<input autocomplete='new-password' name='password' ng-minlength='4' ng-model='$ctrl.password' required type='password'>\n</mobile-input>\n<div class='recaptcha-widget' id='recaptcha-widget'></div>\n<div class='signup-buttons'>\n<button class='signup-btn wix-button' name='submit' ng-click='signupForm.$valid ? $ctrl.doSignup() : $ctrl.onSubmitInvalid()' ng-show='!$ctrl.loading' type='submit'>{{'signup.signup_button' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n<div class='text-or'>{{'signin_social.or' | translate}}</div>\n<social-signin template-url='&#39;views/mobile/social-signin-icons.html&#39;'></social-signin>\n</div>\n<terms-of-use mode='&#39;signup&#39;'></terms-of-use>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/social-signin.html","<div class='sozial-buttons'>\n<div class='sozial-login fazebook fazebook-login-button' facebook-login fb-loading='$ctrl.fbLoading' ng-click='$ctrl.socialClicked(&#39;facebook&#39;)' ng-show='!$ctrl.fbLoading'>\n<div class='text'>{{'signin_social.continue_with_facebook' | translate}}</div>\n</div>\n<div class='sozial-spinner-container' ng-show='$ctrl.fbLoading'>\n<spinner></spinner>\n</div>\n<div class='sozial-login zoogle zoogle-login-button' google-loading='$ctrl.googleLoading' google-login ng-click='$ctrl.socialClicked(&#39;google&#39;)' ng-show='!$ctrl.googleLoading'>\n<div class='text'>{{'signin_social.continue_with_google' | translate}}</div>\n</div>\n<div class='sozial-spinner-container' ng-show='$ctrl.googleLoading'>\n<spinner></spinner>\n</div>\n</div>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/social-signin-icons.html","<div class='sozial-icons'>\n<div class='sozial-icon-container fazebook-container'>\n<div class='sozial-login fazebook fazebook-login-button' facebook-login fb-loading='$ctrl.fbLoading' ng-click='$ctrl.socialClicked(&#39;facebook&#39;)' ng-show='!$ctrl.fbLoading'>\n<div class='login-svg-font-icons-fazebook'></div>\n</div>\n<div class='sozial-spinner-container' ng-show='$ctrl.fbLoading'>\n<spinner></spinner>\n</div>\n</div>\n<div class='sozial-icon-container'>\n<div class='sozial-login zoogle zoogle-login-button old' google-loading='$ctrl.googleLoading' google-login ng-click='$ctrl.socialClicked(&#39;google&#39;)' ng-show='!$ctrl.googleLoading' wix-experiment-if='!specs.users.NewSocialLogin'>\n<div class='login-svg-font-icons-zoogle'></div>\n</div>\n<div class='sozial-login zoogle zoogle-login-button new' google-loading='$ctrl.googleLoading' google-login ng-click='$ctrl.socialClicked(&#39;google&#39;)' ng-show='!$ctrl.googleLoading' wix-experiment-if='specs.users.NewSocialLogin'>\n<div class='google-icon-small-button'></div>\n</div>\n<div class='sozial-spinner-container' ng-show='$ctrl.googleLoading'>\n<spinner></spinner>\n</div>\n</div>\n</div>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/thank-you.html","<div class='title'>{{'thank_you.title' | translate}}</div>\n<div class='sub-title'>{{'thank_you.subtitle' | translate}}</div>\n<div class='user-email'>{{ $ctrl.getUserEmail() }}</div>\n<div class='content'>{{'thank_you.content' | translate}}</div>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/mobile/reset-password.html","<form class='reset-password' name='resetPasswordForm' novalidate onsubmit='submit.focus()'>\n<div class='reset-password-title title'>{{'reset_password.title' | translate}}</div>\n<mobile-input class='password' field='resetPasswordForm.password' label='&#39;reset_password.password&#39;' server-error='$ctrl.serverError' show-error-on-general-error='true'>\n<input autocomplete='new-password' name='password' ng-minlength='4' ng-model='$ctrl.password' required type='password'>\n</mobile-input>\n<mobile-input class='password-confirm' field='resetPasswordForm.passwordConfirm' label='&#39;reset_password.confirm_password&#39;' server-error='$ctrl.serverError'>\n<input match='$ctrl.password' name='passwordConfirm' ng-model='$ctrl.passwordConfirm' required type='password'>\n</mobile-input>\n<div class='button-spinner'>\n<button class='reset-btn wix-button' name='submit' ng-click='resetPasswordForm.$valid &amp;&amp; $ctrl.doResetPassword()' ng-show='!$ctrl.loading' type='submit'>{{'reset_password.button' | translate}}</button>\n<div class='spinner-container' ng-show='$ctrl.loading'>\n<spinner></spinner>\n</div>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/forgot-password-confirmation.html","<form class='forgot-password-confirmation'>\n<div class='title'>{{'forgot_password_confirmation.title' | translate}}</div>\n<div class='content'>{{'forgot_password_confirmation.content' | translate}}</div>\n<div class='button'>\n<button class='done-btn wix-button' ng-click='$ctrl.onClickDone($event)' type='submit'>{{'forgot_password_confirmation.done' | translate}}</button>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/reset-password-confirmation.html","<form class='reset-password-confirmation'>\n<div class='title'>{{'reset_password_confirmation.title' | translate}}</div>\n<div class='content'>{{'reset_password_confirmation.content' | translate}}</div>\n<div class='button'>\n<a class='done-reset-confirm-btn wix-button' href='http://www.wix.com'>{{'reset_password_confirmation.done' | translate}}</a>\n</div>\n</form>\n")}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/login-dialog.html","<div class='container' ng-class='{&#39;mobile&#39;: $ctrl.isMobile(), &#39;desktop&#39;: !$ctrl.isMobile()}'>\n<div class='header'>\n<img class='wix-logo' relative-src='images/wix-logo.svg'>\n<a class='x-close login-svg-font-icons-x' delay-href ng-href='{{$ctrl.getOriginUrl()}}' ng-show='$ctrl.shouldShowX()' wix-bi-args='{context: $ctrl.biEvents.getContext($ctrl.getContext())}' wix-bi='DIALOG_CLOSED'></a>\n</div>\n<login ng-if='$ctrl.getContext() === &#39;login&#39;'></login>\n<signup ng-if='$ctrl.getContext() === &#39;signup&#39;'></signup>\n<forgot-password ng-if='$ctrl.getContext() === &#39;forgot-password&#39;'></forgot-password>\n<forgot-password-confirmation ng-if='$ctrl.getContext() === &#39;forgot-password-confirmation&#39;'></forgot-password-confirmation>\n<account-verification ng-if='$ctrl.getContext() === &#39;account-verification&#39;'></account-verification>\n<enter-email ng-if='$ctrl.getContext() === &#39;enter-email&#39;'></enter-email>\n<thank-you ng-if='$ctrl.getContext() === &#39;thank-you&#39;'></thank-you>\n<reset-password ng-if='$ctrl.getContext() === &#39;reset-password&#39;'></reset-password>\n<reset-password-confirmation ng-if='$ctrl.getContext() === &#39;reset-password-confirmation&#39;'></reset-password-confirmation>\n<big-loader ng-if='$ctrl.getContext() === &#39;gdomain&#39;'></big-loader>\n</div>\n");
}]);try{angular.module("loginPreload")}catch(e){angular.module("loginPreload",[])}angular.module("loginPreload").run(["$templateCache",function(a){a.put("views/social-signin.html","<div class='sozial-buttons new'>\n<div class='social-button facebook-button'>\n<div class='buttonContentWrapper' facebook-login fb-loading='$ctrl.fbLoading' ng-click='$ctrl.socialClicked(&#39;facebook&#39;)' ng-show='!$ctrl.fbLoading' tabindex='0'>\n<div class='buttonIcon'>\n<div class='buttonSvgImage'></div>\n</div>\n<span class='buttonContents'>{{ 'signin_social.continue_with_facebook' | translate }}</span>\n</div>\n<div class='spinner-container' ng-show='$ctrl.fbLoading'>\n<spinner></spinner>\n</div>\n</div>\n<div class='social-button google-button'>\n<div class='buttonContentWrapper' google-loading='$ctrl.googleLoading' google-login ng-click='$ctrl.socialClicked(&#39;google&#39;)' ng-show='!$ctrl.googleLoading' tabindex='0'>\n<div class='buttonIcon'>\n<div class='buttonSvgImage'></div>\n</div>\n<span class='buttonContents'>{{ 'signin_social.continue_with_google' | translate }}</span>\n</div>\n<div class='spinner-container' ng-show='$ctrl.googleLoading'>\n<spinner></spinner>\n</div>\n</div>\n</div>\n")}]);try{angular.module("loginTranslations")}catch(e){angular.module("loginTranslations",["pascalprecht.translate"])}angular.module("loginTranslations").config(["$translateProvider",function(a){var b={social_login:{error:{invalid_password:"Double check your password and try again."}},password:{invalid_password_format:"Please enter a valid password."},terms_of_use:{privacy_policy:"Privacy Policy",terms_of_use:"Terms of Use",login_eu:"* By logging in, you agree to our {{termsOfUse}}, {{privacyPolicy}} and to receive Wix emails, newsletters & updates. You also acknowledge that Wix uses cookies to give the best user experience.",login:"* By logging in, you agree to our {{termsOfUse}}, {{privacyPolicy}} and to receive Wix emails, newsletters & updates.",signup_eu:"* By signing up, you agree to our {{termsOfUse}}, {{privacyPolicy}} and to receive Wix emails, newsletters & updates. You also acknowledge that Wix uses cookies to give the best user experience.",signup:"* By signing up, you agree to our {{termsOfUse}}, {{privacyPolicy}} and to receive Wix emails, newsletters & updates."},account_verification:{need_help:"Need Help?",next:"Go",placeholder:"Enter your password",content:"Looks like {{email}} is the same email address as your Wix account.",title:"Haven’t We Met?"},enter_email:{send:"Send",placeholder:"Email",title:"Please Enter Your Email"},forgot_password:{new_error_no_such_email:"This email address doesn’t match any account. Double check and try again.",error_no_such_email:"Sure that's your email?",placeholder:"e.g., youremail@gmail.com",instructions:"Enter your email address & we'll send you a link to reset your password.",title:"Reset Password",back:"Back",send:"Send",link:"Forgot Password?"},forgot_password_confirmation:{done:"Done",content:"Head over to your mailbox to get your reset link and create your brand new password.",title:"Sent! Check Your Email"},signup:{or_signup_with:"Or sign up with",passwords_dont_match:"Passwords don’t match.",emails_dont_match:"Emails don't match. Take another look.",log_in:"Log In",already_have:"Already have a Wix account?",mobile_choose_password:"Choose a password",confirm_password:"Type your password again",password:"Password",confirm_email:"Type your email again",email:"Email",password_too_short:"Your password must have at least 4 characters.",error:{email_exists:"That email’s already in our system."},signup_facebook:"Sign Up with Facebook",signup_google:"Sign Up with Google",signup_button:"Sign Up",title:"Sign Up"},thank_you:{ok_button:"Ok",content:"To start creating your website, please access the Wix website builder through your desktop.",subtitle:"We've sent an email to",title:"Thank You for Joining Wix!"},page:{title:"Log In | Wix"},login:{google:"Google",facebook:"Facebook",invalid_email:"Hmmm, that’s not a valid email address.",required_field:"This field is required.",or_login_with:"Or log in with",use_email:"Or use your email",sign_up:"Sign Up",new_to_wix:"New to Wix?",password:"Password",email:"Email",ok_button:"Ok",general_server_error:"Looks like that didn’t work. Try again.",error:{invalid_password:"Double check your password and try again.",invalid_email_or_password:"Double check your email & password and try again"},need_help:"Need Help?",remember_me:"Remember Me",login_facebook:"Log In with Facebook",login_google:"Log In with Google",login_button:"Log In",title:"Log In"},signin_social:{or:"OR",continue_with_google:"Continue with Google",continue_with_facebook:"Continue with Facebook",with_google:"Sign in with Google",with_facebook:"Sign in with Facebook",text:"Or sign in using your social account"},reset_password:{error:{link_expired:"It appears that this link has expired."},confirm_password:"Retype new password",password:"Enter new password",title:"Select your new password:",button:"Change password"},reset_password_confirmation:{done:"Go to homepage",content:"Your password has been changed successfully.",title:"Congratulations"}};a.translations("en",b),a.translations(b),a.preferredLanguage&&a.preferredLanguage("en")}]).value("preferredLanguage","en");var nextUniqueId=0;angular.module("material").directive("mdInputContainer",mdInputContainerDirective).directive("label",labelDirective).directive("input",inputTextareaDirective).directive("placeholder",placeholderDirective).factory("$mdUtil",UtilFactory);var ContextManager=function(){function a(){}return a.prototype.getContext=function(){return this.context},a.prototype.setContext=function(a){this.previous=this.context,this.context=a},a.prototype.getPreviousContext=function(){return this.previous},a}();angular.module("loginAppInternal").service("contextManager",ContextManager);var Login=function(){function a(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o){this.$element=a,this.userServerApi=b,this.socialLogin=c,this.redirectHandler=d,this.errorCodeExtractor=e,this.captcha=f,this.wixBiLogger=g,this.biEvents=h,this.contextManager=i,this.experimentManager=j,this.userDeviceType=k,this.locationParams=l,this.fedopsLogger=m,this.sessionId=n,this.geo=o,this.rememberMe=!0,this.loading=!1,this.captchaAdded=!1,this.isEmailFocus=!1,c.init("login"),l.defaultEmail&&(this.isEmailFocus=!0)}return a.$inject=["$element","userServerApi","socialLogin","redirectHandler","errorCodeExtractor","captcha","wixBiLogger","biEvents","contextManager","experimentManager","userDeviceType","locationParams","fedopsLogger","sessionId","geo"],a.prototype.onClickSignup=function(){this.wixBiLogger.log(this.biEvents.ON_SWITCH_CONTEXT,{context:"sign-up"}),this.contextManager.setContext("signup")},a.prototype.onClickForgotPassword=function(){this.wixBiLogger.log(this.biEvents.ON_SWITCH_CONTEXT,{context:"forgot-password"}),this.contextManager.setContext("forgot-password")},a.prototype.novalidateEmail=function(){return"true"===this.locationParams.novalidate},a.prototype.doLogin=function(){var a=this;this.fedopsLogger.interactionStarted("email-login"),this.loading=!0,this.wixBiLogger.log(this.biEvents.LOGIN_SUBMIT),this.userServerApi.login(this.email,this.password,this.rememberMe,this.captchaAdded?this.captcha.recaptchaParams():void 0).then(function(b){a.fedopsLogger.interactionEnded("email-login"),a.redirectHandler.postLogin(b.data.uaToken)})["catch"](function(b){var c=a.errorCodeExtractor.getServerErrorCodeFromResponse(b)||"";"9981"!==c&&"9982"!==c&&(a.serverError=c),/^9966(\..*)?$/.test(c)&&a.wixBiLogger.log(a.biEvents.NO_SUCH_MAIL,{context:"email-login"}),c!==ErrorCodeExtractor.GENERAL_ERROR&&a.fedopsLogger.interactionEnded("email-login"),a.captchaAdded=a.captcha.createOrResetCaptchaIfNeeded(c,a.captchaAdded),a.loading=!1})},a.prototype.onSubmitInvalid=function(){this.wixBiLogger.log(this.biEvents.LOGIN_SUBMIT)},a.prototype.socialClicked=function(a){this.socialLogin.reportClick("login",a)},a.prototype.getAccountRecoveryLink=function(){return"/account-recovery?sessionId="+this.sessionId.get()},a.prototype.isAccountRecoveryFlowActivated=function(){return this.experimentManager.isExperimentEnabled("specs.users.NeedHelpFlow")},a}();angular.module("loginAppInternal").component("login",{template:function(){return"<div ng-include=\"$ctrl.userDeviceType.isMobile() ? 'views/mobile/login.html' : 'views/desktop/login.html'\"></div>"},controller:Login}),angular.module("loginAppInternal").factory("locationParams",["$window",function(a){return new URI(a.location).search(!0)}]),angular.module("loginAppInternal").constant("REFERRER_CONFIG",{referrer:document.referrer}).factory("originUrl",["REFERRER_CONFIG","locationParams",function(a,b){var c=a.referrer;return c?c.split("?").shift():b.originUrl||""}]);var Signup=function(){function a(a,b,c,d,e,f,g,h,i,j,k,l,m){this.$element=a,this.userServerApi=b,this.socialLogin=c,this.redirectHandler=d,this.errorCodeExtractor=e,this.captcha=f,this.wixBiLogger=g,this.biEvents=h,this.signedInInfo=i,this.contextManager=j,this.experimentManager=k,this.userDeviceType=l,this.fedopsLogger=m,this.loading=!1,this.captchaAdded=!1,this.isEmailFocus=!1,c.init("signup")}return a.$inject=["$element","userServerApi","socialLogin","redirectHandler","errorCodeExtractor","captcha","wixBiLogger","biEvents","signedInInfo","contextManager","experimentManager","userDeviceType","fedopsLogger"],a.prototype.onClickLogin=function(){this.wixBiLogger.log(this.biEvents.ON_SWITCH_CONTEXT,{context:"login"}),this.contextManager.setContext("login")},a.prototype.doSignup=function(){var a=this;this.fedopsLogger.interactionStarted("email-signup"),this.loading=!0,this.wixBiLogger.log(this.biEvents.SIGNUP_SUBMIT),this.userServerApi.signup(this.email,this.password,this.captchaAdded?this.captcha.recaptchaParams():void 0).then(function(b){a.fedopsLogger.interactionEnded("email-signup"),a.signedInInfo.setEmail(a.email),a.redirectHandler.postSignup(b.data.uaToken)})["catch"](function(b){var c=a.errorCodeExtractor.getServerErrorCodeFromResponse(b);"9981"!==c&&"9982"!==c&&(a.serverError=c),c!==ErrorCodeExtractor.GENERAL_ERROR&&a.fedopsLogger.interactionEnded("email-signup"),a.captchaAdded=a.captcha.createOrResetCaptchaIfNeeded(c,a.captchaAdded),a.loading=!1})},a.prototype.onSubmitInvalid=function(){this.wixBiLogger.log(this.biEvents.SIGNUP_SUBMIT)},a.prototype.socialClicked=function(a){this.socialLogin.reportClick("signup",a)},a}();angular.module("loginAppInternal").component("signup",{template:function(){return"<div ng-include=\"$ctrl.userDeviceType.isMobile() ? 'views/mobile/signup.html' : 'views/desktop/signup.html'\"></div>"},controller:Signup});var ErrorToTranslateKeyMap=function(){function a(a){var b=a.isExperimentEnabled("specs.users.EmailErrorMessage")?"new_":"",c="forgot_password."+b+"error_no_such_email";this.map={9960:"login.error.invalid_email_or_password","9960.social":"social_login.error.invalid_password",9967:"signup.error.email_exists",9972:"login.error.invalid_password",9966:c,"9966.social":c,"-15003":"reset_password.error.link_expired","-15007":"password.invalid_password_format","email.required":"login.required_field","emailConfirm.required":"login.required_field","password.required":"login.required_field","passwordConfirm.required":"login.required_field","email.wixMailValidator":"login.invalid_email","email.email":"login.invalid_email","emailConfirm.wixMailValidator":"login.invalid_email","email.emailConfirm":"login.invalid_email","emailConfirm.match":"signup.emails_dont_match","passwordConfirm.match":"signup.passwords_dont_match","password.minlength":"signup.password_too_short"}}return a.$inject=["experimentManager"],a.prototype.filter=function(a){return this.map[a]||"login.general_server_error"},a}();angular.module("loginAppInternal").filter("errorToTranslateKeyMap",["$injector",function(a){var b=a.instantiate(ErrorToTranslateKeyMap);return b.filter.bind(b)}]);var ServerErrorToFieldMap=function(){function a(){this.map={1:"password",9960:"password","9960.social":"password",9967:"email",9966:"email",9972:"password","9966.social":"email","-15007":"password","-15003":"password",9981:"none",9982:"none"}}return a.prototype.filter=function(a){return this.map[a]?this.map[a]:"general"},a}();angular.module("loginAppInternal").filter("serverErrorToFieldMap",["$injector",function(a){var b=a.instantiate(ServerErrorToFieldMap);return b.filter.bind(b)}]),angular.module("loginAppInternal").directive("match",function(){return{require:"ngModel",scope:{match:"="},restrict:"A",link:function(a,b,c,d){d.$validators.match=function(b){return d.$isEmpty(b)||angular.equals(b,a.match)},a.$watch("match",function(){d.$validate()})}}});var TermsOfUse=function(){function a(a,b,c,d){this.publicDomain=a,this.$translate=b,this.geo=c}return a.$inject=["publicDomain","$translate","geo","experimentManager"],a.prototype.getTermsOfUseLinkTag=function(){return'<a href="'+this.publicDomain.resolve("/about/terms-of-use")+'" target="_blank">'+this.$translate.instant("terms_of_use.terms_of_use")+"</a>"},a.prototype.getPrivacyPolicyLinkTag=function(){return'<a href="'+this.publicDomain.resolve("/about/privacy")+'" target="_blank">'+this.$translate.instant("terms_of_use.privacy_policy")+"</a>"},a.prototype.getTermsOfUseTranslationKey=function(){var a=this.geo.isInEU()?"_eu":"";return"terms_of_use."+this.mode+a},a}();angular.module("loginAppInternal").component("termsOfUse",{controller:TermsOfUse,bindings:{mode:"<"},template:'<div class="terms-of-use" translate="{{$ctrl.getTermsOfUseTranslationKey()}}"\n                translate-values="{termsOfUse: $ctrl.getTermsOfUseLinkTag(), privacyPolicy: $ctrl.getPrivacyPolicyLinkTag()}"></div>'});var SocialLogin=function(){function a(a,b,c,d,e,f,g,h,i,j,k){this.userServerApi=a,this.$q=b,this.gapi=c,this.fb=d,this.redirectHandler=e,this.wixBiLogger=f,this.biEvents=g,this.signedInInfo=h,this.contextManager=i,this.fedopsLogger=j,this.experimentManager=k,this.getEmailErrorCode=9971,this.verifyAccountErrorCode=9967}return a.$inject=["userServerApi","$q","gapi","fb","redirectHandler","wixBiLogger","biEvents","signedInInfo","contextManager","fedopsLogger","experimentManager"],a.prototype.init=function(a){this.context=a},a.prototype.reportClick=function(a,b){this.wixBiLogger.log(this.biEvents.SOCIAL_LOGIN_CLICKED,{context:this.biEvents.getContext(a),socialNetwork:b}),("google"===b&&!this.gapi.ready()||"facebook"===b&&!this.fb.ready())&&this.wixBiLogger.log(this.biEvents.SOCIAL_LOGIN_EARLY_CLICK,{context:this.biEvents.getContext(a),socialNetwork:b})},a.prototype.getLastLoginToWixData=function(){return this.loginToWixData},a.prototype.loginToWix=function(a,b,c){var d=this,e=this.$q.defer(),f=b+"-login",g=this.experimentManager.isExperimentEnabled("specs.users.SocialLoginFedops");return c(!0),g&&this.fedopsLogger.interactionStarted(f),this.userServerApi.socialLogin(a,b).then(function(a){var b=a.headers()["x-wix-redirect-url"];if(b)d.redirectHandler.redirect(b);else{var c=a.data?a.data.action:"";"register"===c?(d.signedInInfo.setEmail(a.data.email),d.redirectHandler.postSignup(a.data.uaToken)):d.redirectHandler.postLogin(a.data.uaToken)}g&&d.fedopsLogger.interactionEnded(f),e.resolve(a)})["catch"](function(h){c(!1);var i=h?h.data:{};i&&i.errorCode&&i.errorCode===d.verifyAccountErrorCode?(d.loginToWixData={params:a,provider:b,email:i.errorDescription},d.wixBiLogger.log(d.biEvents.ON_SWITCH_CONTEXT,{context:"account-verify",socialNetwork:b}),d.contextManager.setContext("account-verification"),g&&d.fedopsLogger.interactionEnded(f),e.resolve(h)):i&&i.errorCode&&i.errorCode===d.getEmailErrorCode?(d.loginToWixData={params:a,provider:b},d.wixBiLogger.log(d.biEvents.ON_SWITCH_CONTEXT,{context:"get-email",socialNetwork:b}),g&&d.fedopsLogger.interactionEnded(f),d.contextManager.setContext("enter-email"),e.resolve(h)):e.reject(h)}),e.promise},a.prototype.continueLogin=function(a,b){var c=this.getLastLoginToWixData(),d=c.params,e=c.provider,f=angular.extend({},d,a);return this.loginToWix(f,e,b)},a}();angular.module("loginAppInternal").service("socialLogin",SocialLogin);var RedirectHandler=function(){function a(a,b,c,d,e,f,g,h,i){this.locationParams=a,this.$window=b,this.publicDomain=c,this.$timeout=d,this.dataLayer=e,this.userDeviceType=f,this.contextManager=g,this.oauth=h,this.experimentManager=i}return a.$inject=["locationParams","$window","publicDomain","$timeout","dataLayer","userDeviceType","contextManager","oauth","experimentManager"],a.prototype.postLogin=function(a){if(this.oauth.isOauth())this.$window.location=this.oauth.getRedirectUrl();else{var b=this.locationParams.postLogin||this.locationParams.redirectTo||"/my-account";this.gotoLocation(b,a)}},a.prototype.postSignup=function(a){var b=this;this.dataLayer.push({event:"Successful Signup"}),this.$timeout(function(){if(b.oauth.isOauth())b.$window.location=b.oauth.getRedirectUrl();else if(b.userDeviceType.isMobile()&&!b.locationParams.postSignUp)if(b.experimentManager.isExperimentEnabled("specs.ADIOnMobileEnabled")){var c="/website/builder/mobile#!/intro";b.gotoLocation(c,a)}else b.contextManager.setContext("thank-you");else{var d=b.locationParams.postSignUp||b.locationParams.redirectTo||"/new/account";b.gotoLocation(d,a)}},1e3)},a.prototype.redirect=function(a){this.$window.location=a},a.prototype.gotoLocation=function(a,b){var c=this.publicDomain.resolve(a),d=this.isAnswersUrl(c)?this.addUaToken(c,b):c;d+=a===this.locationParams.originUrl?this.$window.location.hash:"",this.$window.location=d},a.prototype.addUaToken=function(a,b){return new URI(a).addQuery("uaToken",b).toString()},a.prototype.isAnswersUrl=function(a){var b="https://www.wix.com/wix-support-apps-webapp/";return 0===a.indexOf(b)},a}();angular.module("loginAppInternal").value("dataLayer",window.dataLayer).service("redirectHandler",RedirectHandler);var AccountVerification=function(){function a(a,b,c,d,e,f){this.socialLogin=a,this.errorCodeExtractor=b,this.wixBiLogger=c,this.biEvents=d,this.contextManager=e,this.userDeviceType=f,this.loading=!1}return a.$inject=["socialLogin","errorCodeExtractor","wixBiLogger","biEvents","contextManager","userDeviceType"],a.prototype.getEmail=function(){var a=this.socialLogin.getLastLoginToWixData();return a?a.email:""},a.prototype.onClickForgotPassword=function(){this.wixBiLogger.log(this.biEvents.ON_SWITCH_CONTEXT,{context:"forgot-password"}),this.contextManager.setContext("forgot-password")},a.prototype.verifyAccount=function(){var a=this;this.loading=!0,this.wixBiLogger.log(this.biEvents.VERIFY_ACCOUNT_SUBMIT,{socialNetwork:this.socialLogin.getLastLoginToWixData().provider}),this.socialLogin.continueLogin({password:this.password},function(b){return a.loading=b})["catch"](function(b){return a.serverError=a.errorCodeExtractor.getServerErrorCodeFromResponse(b,!0)})},a.prototype.onSubmitInvalid=function(){this.wixBiLogger.log(this.biEvents.VERIFY_ACCOUNT_SUBMIT,{socialNetwork:this.socialLogin.getLastLoginToWixData().provider})},a}();angular.module("loginAppInternal").component("accountVerification",{template:"<div ng-include=\"$ctrl.userDeviceType.isMobile() ? 'views/mobile/account-verification.html' : 'views/desktop/account-verification.html'\">\n               </div>",controller:AccountVerification}),angular.module("loginAppInternal").factory("fullStoryReady",["$q","$window","$rootScope",function(a,b,c){var d=a.defer();return b.FS&&b.FS.getCurrentSessionURL?d.resolve(b.FS.getCurrentSessionURL()):b._fs_ready=function(){c.$apply(function(){return d.resolve(b.FS.getCurrentSessionURL())})},d.promise}]),angular.module("loginAppInternal").factory("gapi",["$q","$window",function(a,b){var c=!1,d=a.defer();return b.onLoadGoogleCallback=function(){c=!0,d.resolve(b.gapi)},{when:function(){return b.gapi?(c=!0,a.when(b.gapi)):d.promise},ready:function(){return c}}}]),angular.module("loginAppInternal").factory("fb",["$q","$window",function(a,b){var c=!1,d=a.defer();return b.fbAsyncInit=function(){c=!0,d.resolve(b.FB)},{when:function(){return b.FB?(c=!0,a.when(b.FB)):d.promise},ready:function(){return c}}}]);var EnterEmail=function(){function a(a,b,c,d,e){this.socialLogin=a,this.errorCodeExtractor=b,this.wixBiLogger=c,this.biEvents=d,this.userDeviceType=e,this.loading=!1}return a.$inject=["socialLogin","errorCodeExtractor","wixBiLogger","biEvents","userDeviceType"],a.prototype.sendEmailAddress=function(){var a=this;this.loading=!0,this.wixBiLogger.log(this.biEvents.GET_EMAIL_SUBMIT,{socialNetwork:this.socialLogin.getLastLoginToWixData().provider}),this.socialLogin.continueLogin({email:this.email},function(b){return a.loading=b})["catch"](function(b){return a.serverError=a.errorCodeExtractor.getServerErrorCodeFromResponse(b,!0)})},a.prototype.onSubmitInvalid=function(){this.wixBiLogger.log(this.biEvents.GET_EMAIL_SUBMIT,{socialNetwork:this.socialLogin.getLastLoginToWixData().provider})},a}();angular.module("loginAppInternal").component("enterEmail",{template:"<div ng-include=\"$ctrl.userDeviceType.isMobile() ? 'views/mobile/enter-email.html' : 'views/desktop/enter-email.html'\">\n               </div>",controller:EnterEmail});var LoginDialog=function(){function a(a,b,c,d,e,f,g,h,i,j){this.userDeviceType=a,this.locationParams=c,this.publicDomain=d,this.wixBiLogger=e,this.biEvents=f,this.contextManager=h,this.fullStoryReady=i,-1!==["login","signup","reset-password","forgot-password"].indexOf(c.loginDialogContext)?h.setContext(c.loginDialogContext):b.get("_wixUIDX")&&"null-user-id"!==b.get("_wixUIDX")?h.setContext("login"):!this.shouldShowX()||c.defaultEmail?h.setContext("login"):h.setContext("signup"),e.log(f.ON_START,{context:f.getContext(this.contextManager.getContext()),origin:g}),i.then(function(a){a&&e.log(f.FULL_STORY_READY,{fullStoryUrl:a})}),j()}return a.$inject=["userDeviceType","$cookies","locationParams","publicDomain","wixBiLogger","biEvents","originUrl","contextManager","fullStoryReady","googleDomainFlowHandler"],a.prototype.getContext=function(){return this.contextManager.getContext()},a.prototype.isMobile=function(){return this.userDeviceType.isMobile()},a.prototype.getOriginUrl=function(){return this.locationParams.originUrl?this.publicDomain.resolve(this.locationParams.originUrl):""},a.prototype.shouldShowX=function(){var a=this.locationParams.originUrl;return a&&a!==this.locationParams.postLogin&&a!==this.locationParams.postSignUp&&a!==this.locationParams.redirectTo},a}();angular.module("loginAppInternal").component("loginDialog",{templateUrl:"views/login-dialog.html",controller:LoginDialog});var ForgotPassword=function(){function a(a,b,c,d,e,f){this.userServerApi=a,this.errorCodeExtractor=b,this.wixBiLogger=c,this.biEvents=d,this.contextManager=e,this.userDeviceType=f,this.loading=!1}return a.$inject=["userServerApi","errorCodeExtractor","wixBiLogger","biEvents","contextManager","userDeviceType"],a.prototype.onClickSend=function(){var a=this;this.loading=!0,this.wixBiLogger.log(this.biEvents.FORGOT_PASSWORD_SUBMIT),this.userServerApi.forgotPassword(this.email).then(function(){a.wixBiLogger.log(a.biEvents.ON_SWITCH_CONTEXT,{context:"email-sent"}),a.contextManager.setContext("forgot-password-confirmation")})["catch"](function(b){a.serverError=a.errorCodeExtractor.getServerErrorCodeFromResponse(b),/^9966(\..*)?$/.test(a.serverError)&&a.wixBiLogger.log(a.biEvents.NO_SUCH_MAIL,{context:"forgot-password"})})["finally"](function(){return a.loading=!1})},a.prototype.onSubmitInvalid=function(){this.wixBiLogger.log(this.biEvents.FORGOT_PASSWORD_SUBMIT)},a.prototype.onClickBack=function(){this.contextManager.getPreviousContext()?(this.wixBiLogger.log(this.biEvents.ON_SWITCH_CONTEXT,{context:this.biEvents.getContext(this.contextManager.getPreviousContext())}),this.contextManager.setContext(this.contextManager.getPreviousContext())):history.back()},a}();angular.module("loginAppInternal").component("forgotPassword",{template:"<div ng-include=\"$ctrl.userDeviceType.isMobile() ? 'views/mobile/forgot-password.html' : 'views/desktop/forgot-password.html'\">\n               </div>",controller:ForgotPassword});var ForgotPasswordConfirmation=function(){function a(a){this.contextManager=a}return a.$inject=["contextManager"],a.prototype.onClickDone=function(a){this.contextManager.setContext("login"),a.preventDefault()},a}();angular.module("loginAppInternal").component("forgotPasswordConfirmation",{templateUrl:"views/forgot-password-confirmation.html",controller:ForgotPasswordConfirmation});var DesktopInput=function(){function a(a,b,c,d,e,f){var g=this;this.$scope=a,this.$element=b,this.errorCodeExtractor=d,this.contextManager=f,this.tooltipDirection=this.isTooltipLeft()?"left":"right",a.$watch("$ctrl.serverError",function(a,b){a&&a!==b&&g.updateError()}),c(function(){var a=b.find("input");if(b.find("ng-transclude").replaceWith(a),a.bind("change",function(){g.clearServerError(),g.updateError(),g.$scope.$digest()}),a.bind("focus",function(){g.showTooltip=!1,g.$scope.$digest()}),a.bind("blur",function(){g.updateError(),g.$scope.$digest()}),a.closest("form").bind("submit",function(){g.updateError(),g.$scope.$digest()}),"password"===a.attr("type")&&-1!==navigator.userAgent.indexOf("Chrome"))var c=e(function(){a.is(":-webkit-autofill")&&(a.parent().addClass("md-input-has-value"),e.cancel(c))},50,200)},0)}return a.$inject=["$scope","$element","$timeout","errorCodeExtractor","$interval","contextManager"],a.prototype.updateError=function(){this.error=this.getError(),this.showTooltip=this.shouldShowTooltip()},a.prototype.clearServerError=function(){this.serverError=void 0},a.prototype.getError=function(){return this.errorCodeExtractor.getModelErrorCode(this.field,this.serverError,this.showErrorOnGeneralError)},a.prototype.shouldShowTooltip=function(){return!!this.error&&(this.field.$viewValue&&this.error.indexOf(".required")<0||this.field.$$parentForm.$submitted)},a.prototype.isTooltipLeft=function(){var a=this.contextManager.getContext();return"signup"===a||"login"===a},a}();angular.module("loginAppInternal").component("desktopInput",{template:'<md-input-container \n                  class="tooltip-holder" \n                  ng-class="{\'has-error\': !!$ctrl.getError()}"\n                  wix-tooltip="{{$ctrl.getError() | errorToTranslateKeyMap | translate}}" \n                  is-open="$ctrl.showTooltip" \n                  max-width="225px" \n                  append-to-body="true"\n                  tooltip-trigger="false"\n                  placement="{{$ctrl.tooltipDirection}}" \n                  placement-force="true">\n                <label class="label"> {{$ctrl.label | translate}} </label>\n                <ng-transclude></ng-transclude>\n                <div class="focus-line"></div>\n                <i class="login-svg-font-icons-error error"></i>\n              </md-input-container>',controller:DesktopInput,transclude:!0,bindings:{field:"=",label:"=",serverError:"=",showErrorOnGeneralError:"="}});var MobileInput=function(){function a(a,b,c,d,e){var f=this;this.$scope=a,this.$element=b,this.errorCodeExtractor=d,this.mdInputContainer=b.find("md-input-container"),c(function(){var c=b.find("input");if(b.find("ng-transclude").replaceWith(c),c.bind("change",function(){f.clearServerError(),a.$digest()}),"password"===c.attr("type")&&-1!==navigator.userAgent.indexOf("Chrome"))var d=e(function(){c.is(":-webkit-autofill")&&(c.parent().addClass("md-input-has-value"),e.cancel(d))},50,200)},0)}return a.$inject=["$scope","$element","$timeout","errorCodeExtractor","$interval"],a.prototype.clearServerError=function(){this.serverError=void 0},a.prototype.getError=function(){return this.errorCodeExtractor.getModelErrorCode(this.field,this.serverError,this.showErrorOnGeneralError)},a}();angular.module("loginAppInternal").component("mobileInput",{template:'<md-input-container ng-class="{\'has-error\': $ctrl.getError()}">\n                <label class="label">\n                  <div class="placeholder-label"> {{ $ctrl.label | translate}} </div>\n                </label>\n                <ng-transclude></ng-transclude>\n                <i class="login-svg-font-icons-error error"></i>\n                <div class="error-label"> {{$ctrl.getError() | errorToTranslateKeyMap | translate}} </div>\n              </md-input-container>',controller:MobileInput,transclude:!0,bindings:{field:"=",label:"=",serverError:"=",showErrorOnGeneralError:"="}});var ErrorCodeExtractor=function(){function a(a){this.$filter=a}return a.$inject=["$filter"],a.prototype.getServerErrorCodeFromResponse=function(b,c){return b&&b.data&&b.data.errorCode?b.data.errorCode+(c?".social":""):a.GENERAL_ERROR},a.prototype.getModelErrorCode=function(a,b,c){var d=void 0;if(a){var e=Object.keys(a.$error).filter(function(b){return!!a.$error[b]});if(a.$invalid&&e.length>0)d=a.$name+"."+e[0];else if(b){var f=this.$filter("serverErrorToFieldMap")(b);(f===a.$name||"general"===f&&c)&&(d=b)}}return d},a}();ErrorCodeExtractor.GENERAL_ERROR="general_error",angular.module("loginAppInternal").service("errorCodeExtractor",ErrorCodeExtractor);var Recaptcha2=function(){function a(a,b){var c=this;this.grecaptcha=a,this.authKeys=b,a.then(function(a){c.captcha=a})}return a.$inject=["grecaptcha","authKeys"],a.prototype.getResponse=function(){return this.captcha?this.captcha.getResponse():!1},a.prototype.create=function(){var a=this;this.grecaptcha.then(function(b){b.render("recaptcha-widget",{sitekey:a.authKeys.getKey(a.authKeys.RECAPTCHA_V2_SITE_KEY),theme:"light"})})},a.prototype.reload=function(){this.grecaptcha.then(function(a){a.reset()})},a.prototype.createOrResetCaptchaIfNeeded=function(a,b){return b?(this.reload(),!0):"9981"===a||"9982"===a?(this.create(),!0):!1},a.prototype.recaptchaParams=function(){return{recaptcha_response_field:this.getResponse()}},a}();angular.module("loginAppInternal").service("captcha",Recaptcha2).factory("grecaptcha",["$q","$window",function(a,b){if(b.grecaptcha)return a.when(b.grecaptcha);var c=a.defer();return b.onLoadRecaptchaCallback=function(){c.resolve(b.grecaptcha)},c.promise}]);var Autofocus=function(){function a(a,b){this.$element=a,b(function(){a[0].focus()})}return a.$inject=["$element","$timeout"],a}();angular.module("loginAppInternal").directive("autofocus",function(){return{controller:Autofocus,controllerAs:"autofocus",restrict:"A"}});var UserDeviceType=function(){function a(a,b,c,d){this.provider=a,this.locationParams=b,this.$window=c,this.experimentManager=d}return a.$inject=["provider","locationParams","$window","experimentManager"],a.prototype.isMobile=function(){return"Smartphone"===this.provider.deviceType||"mobile"===this.locationParams.mode||"Tablet"===this.provider.deviceType||this.$window.innerWidth<810},a}(),UserDeviceTypeProvider=function(){function a(){}return a.prototype.setDeviceType=function(a){this.deviceType=a},a.prototype.$get=function(a){return a.instantiate(UserDeviceType,{provider:this})},a.prototype.$get.$inject=["$injector"],a}();angular.module("loginAppInternal").provider("userDeviceType",UserDeviceTypeProvider);var PublicDomain=function(){function a(a,b){this.provider=a,this.$location=b}return a.$inject=["provider","$location"],a.prototype.resolve=function(a){if(0===a.indexOf("/")){var b=this.$location.host().match(/local/);if(b)return""+this.$location.absUrl().split("?")[0].slice(0,-1)+a;var c="en"===this.provider.locale?"www":this.provider.locale;return"https://"+c+"."+this.provider.baseDomain+a}return a},a}(),PublicDomainProvider=function(){function a(){}return a.prototype.setBaseDomain=function(a){this.baseDomain=a},a.prototype.setLocale=function(a){this.locale=a},a.prototype.$get=function(a){return a.instantiate(PublicDomain,{provider:this})},a.prototype.$get.$inject=["$injector"],a}();angular.module("loginAppInternal").provider("publicDomain",PublicDomainProvider);var OAuth=function(){function a(a,b){this.provider=a,this.locationParams=b}return a.$inject=["provider","locationParams"],a.prototype.getRedirectUrl=function(){var a=this.getAppId(),b=this.getScope(),c=this.getState(),d=this.getRedirectUri();return"https://www.wix.com/oauth/authorize?appId="+a+"&state="+c+"&scope="+b+"&redirectUri="+d;
},a.prototype.isOauth=function(){return this.locationParams.state&&0!==this.provider.appId.indexOf("${")},a.prototype.getAppId=function(){return this.provider.appId},a.prototype.getAppName=function(){return this.provider.appName},a.prototype.getScope=function(){return this.provider.scope},a.prototype.getState=function(){return this.provider.state},a.prototype.getRedirectUri=function(){return this.provider.redirectUri},a}(),OAuthProvider=function(){function a(){this.appId="${*}"}return a.prototype.setOAuth=function(a,b,c,d,e){this.appId=a,this.appName=b,this.scope=c,this.state=d,this.redirectUri=e},a.prototype.$get=function(a){return a.instantiate(OAuth,{provider:this})},a.prototype.$get.$inject=["$injector"],a}();angular.module("loginAppInternal").provider("oauth",OAuthProvider);var SessionId=function(){function a(a){this.locationParams=a,this.sessionId=""}return a.$inject=["locationParams"],a.prototype.get=function(){if(!this.sessionId){var a=this.locationParams.sessionId;a?this.sessionId=a:this.sessionId=this.getNewGuid()}return this.sessionId},a.prototype.getNewGuid=function(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()},a}();angular.module("loginAppInternal").service("sessionId",SessionId);var BiEvents=function(){function a(){this.evMap={},this.defineBIEvent("ON_START",300),this.defineBIEvent("ON_SWITCH_CONTEXT",101),this.defineBIEvent("LOGIN_SUBMIT",110),this.defineBIEvent("SIGNUP_SUBMIT",120),this.defineBIEvent("FORGOT_PASSWORD_SUBMIT",131),this.defineBIEvent("NO_SUCH_MAIL",127),this.defineBIEvent("SOCIAL_LOGIN_CLICKED",140),this.defineBIEvent("SOCIAL_AUTH_ERROR",141),this.defineBIEvent("SOCIAL_AUTH_SUCCESS",142),this.defineBIEvent("DIALOG_CLOSED",303),this.defineBIEvent("VERIFY_ACCOUNT_SUBMIT",143),this.defineBIEvent("GET_EMAIL_SUBMIT",149),this.defineBIEvent("FULL_STORY_READY",400),this.defineBIEvent("SOCIAL_LOGIN_EARLY_CLICK",139)}return a.prototype.defineBIEvent=function(a,b){this[a]=a,this.evMap[a]={evid:b}},a.prototype.getEventMap=function(){return this.evMap},a.prototype.getContext=function(a){switch(a){case"login":return"login";case"signup":return"sign-up";case"forgot-password":return"forgot-password";case"account-verification":return"account-verify";case"enter-email":return"get-email";case"forgot-password-confirmation":return"email-sent";default:return a}},a}();angular.module("loginAppConstants").constant("biEvents",new BiEvents);var UserServerApi=function(){function a(a,b,c,d,e,f,g,h,i,j,k){this.$http=a,this.sessionId=b,this.userDeviceType=c,this.originUrl=d,this.experimentManager=e,this.$q=f,this.$timeout=g,this.locationParams=h,this.$locale=i,this.$cookies=j,this.$location=k,this.relOrAbs=this.experimentManager.isExperimentEnabled("specs.users.NewTypeEndpoints")&&this.$location.path().endsWith("signin")?"":"/_api/wix-html-login-webapp/"}return a.$inject=["$http","sessionId","userDeviceType","originUrl","experimentManager","$q","$timeout","locationParams","$locale","$cookies","$location"],a.prototype.extendParams=function(a){for(var b in a)void 0===a[b]&&delete a[b];return angular.extend(a,{ldSessionID:this.sessionId.get(),originView:this.userDeviceType.isMobile()?"mobile":"desktop",urlThatUserRedirectedFrom:this.originUrl,overrideLocale:this.$locale.id,language:this.$locale.id})},a.prototype.extendRecaptchaParams=function(a,b){return angular.extend(a,{"recaptchaParams.recaptcha_response_field":b.recaptcha_response_field}),a},a.prototype.createPromiseWithDelay=function(a){var b=this,c=a.then(function(a){return{success:!0,data:a}})["catch"](function(a){return{success:!1,data:a}});return this.$q.all([c,this.$timeout(500)]).then(function(a){var c=a[0],d=c.success,e=c.data;return d?e:b.$q.reject(e)})},a.prototype.addColorIfNeeded=function(a){var b=this.locationParams.color||this.locationParams.userColor;b&&angular.extend(a,{color:b})},a.prototype.addSendEmailIfNeeded=function(a){var b=this.locationParams.sendEmail;("true"===b||"false"===b)&&angular.extend(a,{sendEmail:b})},a.prototype.addUserTokenIfNeeded=function(a){var b=this.locationParams.userToken;b&&angular.extend(a,{userToken:b})},a.prototype.addPxAccessTokenToHeadersAndRemoveCookieIfNeeded=function(a){var b=this.locationParams.px;return b&&(angular.extend(a,{"x-px-access-token":b}),this.$cookies.remove("_px",{domain:".wix.com"}),this.$cookies.remove("_px3",{domain:".wix.com"}),this.$cookies.remove("_pxvid",{domain:".wix.com"})),a},a.prototype.signup=function(a,b,c){var d={email:a,password:b};c&&this.extendRecaptchaParams(d,c),this.addColorIfNeeded(d),this.addSendEmailIfNeeded(d),this.addUserTokenIfNeeded(d),this.extendParams(d);var e={"Content-Type":"application/x-www-form-urlencoded"};return this.createPromiseWithDelay(this.$http.post(this.relOrAbs+"auth/register",d,{headers:this.addPxAccessTokenToHeadersAndRemoveCookieIfNeeded(e),transformRequest:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b.join("&")}}))},a.prototype.login=function(a,b,c,d){var e={email:a,password:b,rememberMe:c};d&&this.extendRecaptchaParams(e,d),this.addColorIfNeeded(e),this.addUserTokenIfNeeded(e),this.extendParams(e);var f={"Content-Type":"application/x-www-form-urlencoded"};return this.createPromiseWithDelay(this.$http.post(this.relOrAbs+"auth/v2/login",e,{headers:this.addPxAccessTokenToHeadersAndRemoveCookieIfNeeded(f),transformRequest:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b.join("&")}}))},a.prototype.forgotPassword=function(a){var b=this.extendParams({email:a});return this.createPromiseWithDelay(this.$http.post("/_api/wix-html-login-webapp/auth/forgotPassword",b,{headers:{"Content-Type":"application/x-www-form-urlencoded"},transformRequest:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b.join("&")}}))},a.prototype.socialLogin=function(a,b){return this.addColorIfNeeded(a),this.addUserTokenIfNeeded(a),this.extendParams(a),this.createPromiseWithDelay(this.$http.post(this.relOrAbs+"social/login/"+b,a,{headers:{"Content-Type":"application/x-www-form-urlencoded"},transformRequest:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b.join("&")}}))},a.prototype.resetPassword=function(a){return this.createPromiseWithDelay(this.$http.post("/_api/wix-html-login-webapp/link/changePasswordAjax",a,{headers:{"Content-Type":"application/x-www-form-urlencoded"},transformRequest:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(encodeURIComponent(c)+"="+encodeURIComponent(a[c]));return b.join("&")}}))},a}();angular.module("loginAppInternal").service("userServerApi",UserServerApi),angular.module("loginAppInternal").directive("defaultEmail",["locationParams",function(a){return{controllerAs:"defaultEmail",require:"ngModel",bindToController:!0,restrict:"A",link:function(b,c){a.defaultEmail&&(c.val(a.defaultEmail),c.triggerHandler("input"))}}}]);var ThankYou=function(){function a(a){this.signedInInfo=a}return a.$inject=["signedInInfo"],a.prototype.getUserEmail=function(){return this.signedInInfo.getEmail()},a}();angular.module("loginAppInternal").component("thankYou",{templateUrl:"views/mobile/thank-you.html",controller:ThankYou});var SignedInInfo=function(){function a(){}return a.prototype.getEmail=function(){return this.email},a.prototype.setEmail=function(a){this.email=a},a}();angular.module("loginAppInternal").service("signedInInfo",SignedInInfo);var AuthKeys=function(){function a(a){this.provider=a,this.FACEBOOK_CLIENT_ID="facebookClientId",this.GOOGLE_CLIENT_ID="googleClientId",this.RECAPTCHA_V2_SITE_KEY="recaptchaV2SiteKey"}return a.$inject=["provider"],a.prototype.getKey=function(a){return this.provider.keys[a]},a}(),AuthKeysProvider=function(){function a(){}return a.prototype.setKeys=function(a){this.keys=a},a.prototype.$get=function(a){return a.instantiate(AuthKeys,{provider:this})},a.prototype.$get.$inject=["$injector"],a}();angular.module("loginAppInternal").provider("authKeys",AuthKeysProvider),angular.module("loginAppInternal").component("spinner",{template:'<svg class="spinner" width="29" height="29" viewBox="0 0 66 66"">\n                 <circle class="path" fill="none" stroke-width="6" stroke-linecap="round" cx="33" cy="33" r="30"></circle>\n              </svg>'});var SocialSignin=function(){function a(a,b,c){this.socialLogin=a,this.contextManager=b,this.userDeviceType=c,this.googleLoading=!1,this.fbLoading=!1,this.context=this.contextManager.getContext()}return a.$inject=["socialLogin","contextManager","userDeviceType"],a.prototype.socialClicked=function(a){this.socialLogin.reportClick(this.context,a)},a}();angular.module("loginAppInternal").component("socialSignin",{template:'<div ng-include="$ctrl.templateUrl">\n               </div>',controller:SocialSignin,bindings:{templateUrl:"="}});var GoogleLogin=function(){function a(a,b,c,d,e,f,g){var h=this;this.gapi=b,this.authKeys=c,this.socialLogin=d,this.googleLoginHandler=e,this.errorCodeExtractor=f;var i=function(a){return h.googleSocialLoginHandler(a,function(a){return h.googleLoading=a})};d.currentGoogleCallback=i,this.gapi.when().then(function(b){g.isExperimentEnabled("specs.users.GoogleNewSdk")?a[0].addEventListener("click",function(){b.auth2.authorize({client_id:"352188552355.apps.googleusercontent.com",scope:"openid profile email",response_type:"id_token code"},i)}):b.signin.render(a[0],{callback:function(a){return h.socialLogin.currentGoogleCallback===i&&i(a)},clientid:h.authKeys.getKey(h.authKeys.GOOGLE_CLIENT_ID),accesstype:"offline",cookiepolicy:"single_host_origin",scope:"profile email"})})}return a.$inject=["$element","gapi","authKeys","socialLogin","googleLoginHandler","errorCodeExtractor","experimentManager"],a.prototype.googleSocialLoginHandler=function(a,b){var c=this;this.googleLoginHandler(a,b)["catch"](function(a){c.serverError=c.errorCodeExtractor.getServerErrorCodeFromResponse(a)})},a}();angular.module("loginAppInternal").directive("googleLogin",function(){return{controller:GoogleLogin,controllerAs:"googleLogin",scope:{onError:"=",googleLoading:"="},bindToController:!0,restrict:"A"}});var FacebookLogin=function(){function a(a,b,c,d,e,f,g,h,i,j){var k=this;this.$scope=a,this.$element=b,this.fb=c,this.authKeys=d,this.wixBiLogger=e,this.experimentManager=f,this.biEvents=g,this.socialLogin=h,this.errorCodeExtractor=j,this.context=i.getContext(),this.initFacebook(function(a){return k.fbLoading=a})}return a.$inject=["$scope","$element","fb","authKeys","wixBiLogger","experimentManager","biEvents","socialLogin","contextManager","errorCodeExtractor"],a.prototype.initFacebook=function(a){var b=this;this.fb.when().then(function(c){c.init({appId:b.authKeys.getKey(b.authKeys.FACEBOOK_CLIENT_ID),version:"v2.8",channelUrl:"//www.wix.com/channel.html",status:!0,cookie:!0,xfbml:!1}),c.getLoginStatus(function(a){b.fbWasAlreadyConnected="connected"===a.status});var d=b.$element[0];$(d).bind("click",function(){return b.onClickFacebook(c,a)})})},a.prototype.onClickFacebook=function(a,b){var c=this;a.login(function(d){if(d.authResponse){var e=function(a){var e=d.authResponse.accessToken,f=a.email,g=a.id;g&&(c.wixBiLogger.log(c.biEvents.SOCIAL_AUTH_SUCCESS,{socialNetwork:"facebook",context:c.biEvents.getContext(c.context),interactive:!c.fbWasAlreadyConnected}),c.socialLogin.loginToWix({access_token:e,fb_email:f,user_id:g},"facebook",b)["catch"](function(a){c.serverError=c.errorCodeExtractor.getServerErrorCodeFromResponse(a)}))};a.api("/me",{fields:"email"},e)}else c.wixBiLogger.log(c.biEvents.SOCIAL_AUTH_ERROR,{socialNetwork:"facebook",reason:d.status})},{scope:"email"})},a}();angular.module("loginAppInternal").directive("facebookLogin",function(){return{controller:FacebookLogin,controllerAs:"facebookLogin",scope:{onError:"=",fbLoading:"="},bindToController:!0,restrict:"A"}});var ResetPassword=function(){function a(a,b,c,d,e){this.userServerApi=a,this.errorCodeExtractor=b,this.userDeviceType=c,this.locationParams=d,this.contextManager=e,this.loading=!1}return a.$inject=["userServerApi","errorCodeExtractor","userDeviceType","locationParams","contextManager"],a.prototype.doResetPassword=function(){var a=this;this.loading=!0,this.userServerApi.resetPassword({emailToken:this.locationParams.emailToken,newPassword:this.password}).then(function(){a.contextManager.setContext("reset-password-confirmation")})["catch"](function(b){var c=a.errorCodeExtractor.getServerErrorCodeFromResponse(b);a.serverError=c,a.loading=!1})},a}();angular.module("loginAppInternal").component("resetPassword",{template:"<div ng-include=\"$ctrl.userDeviceType.isMobile() ? 'views/mobile/reset-password.html' : 'views/desktop/reset-password.html'\">\n               </div>",controller:ResetPassword});var ResetPasswordConfirmation=function(){function a(){}return a}();angular.module("loginAppInternal").component("resetPasswordConfirmation",{templateUrl:"views/reset-password-confirmation.html",controller:ResetPasswordConfirmation}),angular.module("loginAppInternal").factory("googleLoginHandler",["wixBiLogger","biEvents","contextManager","socialLogin","$q","experimentManager",function(a,b,c,d,e,f){return function(g,h){var i=e.defer(),j=g.code,k=g.id_token,l=g.error,m=g.state,n=f.isExperimentEnabled("specs.users.GoogleNewSdk"),o=g[n?"prompt":"g-oauth-window"];if(o||g.state)if(j&&k){a.log(b.SOCIAL_AUTH_SUCCESS,{socialNetwork:"google",context:b.getContext(c.getContext()),interactive:"consent"===o,state:m});var p={code:j,id_token:k};if(m){var q=window.location.href.split("#")[0];angular.extend(p,{state:m,redirectUri:q})}d.loginToWix(p,"google",h).then(function(a){i.resolve(a)})["catch"](function(a){i.reject(a)})}else a.log(b.SOCIAL_AUTH_ERROR,{socialNetwork:"google",reason:l||"Unknown error",state:m}),i.resolve();return i.promise}}]),angular.module("loginAppInternal").factory("googleDomainFlowHandler",["$location","googleLoginHandler","contextManager",function(a,b,c){return function(){var d=a.hash();if(d){var e=d.split("&").reduce(function(a,b){var c=b.split(/=(.+)/,2),d=c[0],e=c[1];return a[d]=e,a},{});e.state&&(c.setContext("gdomain"),b(e,angular.noop))}}}]),angular.module("loginAppInternal").component("bigLoader",{template:'\n            <div class="loader-container">\n              <div class="loader">\n                <div class="wheel"></div>\n              </div>\n            </div>\n'});var Geo=function(){function a(a,b){this.provider=a,this.experimentManager=b}return a.$inject=["provider","experimentManager"],a.prototype.isInEU=function(){var a=["AT","BE","BG","HR","CY","CZ","DK","EE","FI","FR","DE","GR","HU","IE","IT","LV","LT","LU","MT","NL","PL","PT","RO","SK","SI","ES","SE","GB"],b=-1!==a.indexOf(this.provider.countryCode);return this.experimentManager.isExperimentEnabled("specs.users.EnableCookieNotificationAddition")&&b},a}(),GeoProvider=function(){function a(){}return a.prototype.setCountryCode=function(a){this.countryCode=a},a.prototype.$get=function(a){return a.instantiate(Geo,{provider:this})},a.prototype.$get.$inject=["$injector"],a}();angular.module("loginAppInternal").provider("geo",GeoProvider);