{"version":3,"sources":["../node_modules/whatwg-fetch/fetch.js","../node_modules/promise-polyfill/src/finally.js","../node_modules/promise-polyfill/src/index.js","../node_modules/promise-polyfill/src/polyfill.js","../node_modules/bluebus/dist/bluebus.js","../src/global.js","../src/config.js","../src/api.js","../src/userView.js","../src/popup-feedback/feedback.base.js","../src/newPopupManager.js","../src/errorManager.js","../src/validation/isValid/index.js","../src/validation/isVoid/index.js","../src/validation/general/index.js","../src/validation/index.js","../src/methods/Method.js","../src/methods/changeMail/index.js","../src/methods/changePassword/index.js","../src/methods/forgot/index.js","../src/popupManager.js","../src/methods/init/index.js","../src/automaticRecognition.js","../src/utility.js","../src/methods/login/index.js","../src/methods/profile/index.js","../src/methods/resetPassword/index.js","../src/methods/signup/index.js","../src/methods/smartstatus/index.js","../src/methods/social/index.js","../src/methods/userRegistration/index.js","../src/methods/index.js","../src/index.js","index.js"],"names":["Headers","Request","Response","fetch","support","searchParams","self","iterable","Symbol","blob","Blob","e","formData","arrayBuffer","isDataView","obj","DataView","prototype","isPrototypeOf","viewClasses","isArrayBufferView","ArrayBuffer","isView","indexOf","Object","toString","call","normalizeName","name","String","test","TypeError","toLowerCase","normalizeValue","value","iteratorFor","items","iterator","next","shift","done","undefined","headers","map","forEach","append","Array","isArray","header","getOwnPropertyNames","oldValue","get","has","hasOwnProperty","set","callback","thisArg","keys","push","values","entries","consumed","body","bodyUsed","Promise","reject","fileReaderReady","reader","resolve","onload","result","onerror","error","readBlobAsArrayBuffer","FileReader","promise","readAsArrayBuffer","readBlobAsText","readAsText","readArrayBufferAsText","buf","view","Uint8Array","chars","length","i","fromCharCode","join","bufferClone","slice","byteLength","buffer","Body","_initBody","_bodyInit","_bodyText","_bodyBlob","FormData","_bodyFormData","URLSearchParams","_bodyArrayBuffer","type","rejected","Error","then","text","decode","json","JSON","parse","methods","normalizeMethod","method","upcased","toUpperCase","input","options","url","credentials","mode","signal","referrer","clone","form","trim","split","bytes","replace","decodeURIComponent","parseHeaders","rawHeaders","preProcessedHeaders","line","parts","key","bodyInit","status","ok","statusText","response","redirectStatuses","redirect","RangeError","location","DOMException","err","message","stack","create","constructor","init","request","aborted","xhr","XMLHttpRequest","abortXhr","abort","getAllResponseHeaders","responseURL","responseText","ontimeout","onabort","open","withCredentials","responseType","setRequestHeader","addEventListener","onreadystatechange","readyState","removeEventListener","send","polyfill","finallyConstructor","reason","setTimeoutFunc","setTimeout","noop","bind","fn","apply","arguments","_state","_handled","_value","_deferreds","doResolve","handle","deferred","_immediateFn","cb","onFulfilled","onRejected","ret","newValue","finale","_unhandledRejectionFn","len","Handler","ex","prom","promiseFinally","all","arr","args","remaining","res","val","race","setImmediate","console","warn","globalNS","window","global","webpackUniversalModuleDefinition","root","factory","exports","module","define","amd","modules","installedModules","__webpack_require__","moduleId","id","loaded","m","c","p","events","event","triggered","parameters","trigger","leaveStack","isTriggered","clean","cleanAll","logger","setLogger","newLogger","config","initObject","assign","objectToSet","compose","queryParams","newUrl","smartstatus","apikey","country","subsection","content_id","contentId","hybridnews","store_type","skip","sentpin","access_token","getAlias","msisdn","UserView","params","doNotLoad","content","Api","elementId","element","document","getElementById","style","display","className","getElementsByClassName","containerId","querySelector","arrayElement","getElementsByName","radioArray","checkedValue","radio","checked","eventObject","eventName","htmlCode","innerHTML","disabled","inputId","eyeId","inputElement","eyeElement","query","elementsInQuery","querySelectorAll","UserViewInstance","BaseFeedback","configuration","feedbackStructure","container","icon","link","closeButton","isActive","feedbackTimeout","fadeTimeout","defaultClassIcon","defaultClassContainer","cleanFeedbackTimeout","clearTimeout","cleanFadeTimeout","closePopup","feedbackMessage","feedbackIcon","feedbackLink","getAttribute","setAttribute","innerText","closeUserFeedback","isShowed","isEnabled","enabled","getType","feedbackType","showUserFeedback","timeForShow","feedbackTime","timeForFade","feedbackFadeTime","tempIcon","iconClass","popupClass","overrideProps","temporizedFor","href","canClose","feedbackCloseIcon","attachEvent","parseInt","getElement","PopupManager","feedbackObject","isInitilized","Bluebus","getFeedback","initObj","elem","popupType","log","initialized","feedbackToShow","feedback","closeAllPopup","manageErrorWithClass","manageErrorInContainer","cleanError","cleanErrorEvo","manageError","arrayError","errorName","showElementByClass","showElementByClassInContainer","singleError","hideElementByClass","errorElements","getElementByQuerySelectorAll","string","regexpValue","regexp","RegExp","regexpObject","default","Method","templateInjected","smartsectionObj","callbackObject","regexObject","initUserView","data","loadForm","templateName","injected","attachEvents","catch","populate","payload","formModel","email","password","repeatedPassword","addEmailButton","cancelButton","ChangeMail","preventDefault","getValue","setValue","buttonChange","buttonCancelChangePsw","oldPassword","oldPasswordSwitchEye","newPasswordSwitchEye","ChangePassword","changePasswordButton","newPassword","switchInputType","forgotButton","username","phone_number","Forgot","phoneNumber","alias","objToOnSuccess","smsTemplate","close","positive","generic","popupShowed","currentObj","showUsrFeedback","pin","genericPassword","popupClose","aliasCheckUrl","operatorArray","getCheckedRadioValue","getQueryParams","switchEye","loginButton","fbConnect","operatorChoice","Login","utility","usernameInput","passwordInput","operatorChoiceArray","facebookButton","logged","operator","provider","isDisabled","disable","editNicknameButton","setUsernameButton","cancelEditButton","editNicknameForm","nicknameStatusForm","nicknameStatus","nicknameInput","Profile","oldNickname","newNicknameTemp","newNickname","callbackSuccess","resetButton","token","ResetPassword","buttonSignup","buttonFbSignup","Signup","formModelLogged","unsubButton","formModelUnlogged","inputMsisdn","unsubscribeUnlogged","Smartstatus","unsubButtonLogged","IDENTITY","TYPE","ACCESS_TOKEN","unsubButtonUnlogged","unsubscribeUnloggedButton","addFacebookIdentityButton","facebookDisconnectButton","Social","buttonAddEmail","buttonSkip","buttonCancelAddEmail","UserRegistration","skipRegister","parObj","EMAIL","USERNAME","otherParams","reduce","skipped","login","forgot","changePassword","resetPassword","changeMail","userRegistration","profile","social","signup","triggerError","regexpPassword","regexpMail","regexpPin","regexpMsisdn","regObj","arrayPopupConf","irregular","loadModule","operatorList","Useris","domain","enableAliasCheck","disablePinInput","enableGoogleCheckbox","emailIdentityEnabled","redirectToMipRegisterAtStart","identityFbEnabled","onSuccess","user","title","onError","onFacebookSuccess","onFacebookError","onTemplateLoaded","tmplInfo","onCancel","cosnole","onSaveNickname","onFacebookRegisterSuccess","onFacebookDisconnect","onUnsubLoggedSuccess","onUnsubLoggedError","onUnsubUnloggedSuccess","resp","onFbSignupSuccess","getPopupElement","popupInit","prefix","popupShow"],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;kBA/MqB6B;;;;;;;;;ACrErB;;;;AACA;;AACA;;AACA;;;;AACA;;;;AACA;;;;;;;;;;;;AAEA,IAAMf,YAAY;AACdmB,kBAAc,cADA;AAEdC,cAAU,UAFI;AAGdC,kBAAc;AAHA,CAAlB;;AAMA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiEqBC;;;;;;;;;;;;;;0LACjBlQ,OAAO,UAAClC,OAAD,EAAa;AAChB,kBAAKkQ,eAAL,GAAuB;AACnB1H,4BAAY,aADO;AAEnB+H,0BAAUvQ,QAAQwJ,OAAR,IAAmB,KAFV;AAGnBT,8BAAc/I,QAAQ+I,YAAR,IAAwB,EAHnB;AAInBK,2BAAWpJ,QAAQoJ,SAAR,IAAqB;AAJb,aAAvB;AAMA,kBAAKiH,YAAL;AACH,iBAEDK,eAAe,YAAM;AACjB,gBAAMuB,eAAe,MAAK9G,gBAAL,CAAsB4C,UAAtB,CAAiC+C,UAAUmB,YAA3C,CAArB;;AAEA,kBAAK9G,gBAAL,CAAsB0C,WAAtB,CAAkCoE,YAAlC,EAAgD;AAC5CzH,2BAAW,OADiC;AAE5CrD,uBAAO,eAAC5N,CAAD,EAAO;AACVA,sBAAE8X,cAAF;AACA;;AAEA,wBAAIa,WAAW,MAAK/G,gBAAL,CAAsBmG,QAAtB,CAA+BR,UAAUoB,QAAzC,CAAf;AACA,wBAAMG,cAAc,MAAKlH,gBAAL,CAAsB4C,UAAtB,CAAiC+C,UAAUqB,YAA3C,CAApB;;AAEA,wBAAI;AACA,4BAAI,wBAAOD,QAAP,CAAJ,EAAsB;AAClB,2DAAY,kBAAZ;AACA;AACH;;AAED,4BAAI,yBAAQA,QAAR,EAAkB,MAAK9B,WAAL,CAAiBnH,MAAnC,CAAJ,EAAgD;AAC5C,gCAAInB,iBAAO/L,GAAP,CAAW,kBAAX,CAAJ,EAAoC;AAChC,oCAAImW,SAAS/X,OAAT,CAAiB,GAAjB,KAAyB,CAA7B,EAAgC;AAC5B+X,+CAAWA,SAASvR,OAAT,CAAiB,GAAjB,EAAsB,EAAtB,CAAX;AACH;;AAED2I,8CAAIN,QAAJ,CAAa;AACTC,4CAAQiJ;AADC,iCAAb,EAEG9S,IAFH,CAEQ,UAACmC,QAAD,EAAc;AAClB,wCAAIA,YAAYA,SAAS+Q,KAAzB,EAAgC;AAC5B,4CAAID,WAAJ,EAAiB;AACbA,wDAAYvX,KAAZ,GAAoByG,SAAS+Q,KAA7B;AACH;;AAED,4CAAMC,iBAAiB;AACnBD,mDAAO/Q,SAAS+Q;AADG,yCAAvB;;AAIA,4CAAI,OAAO,MAAKtS,OAAL,CAAawS,WAApB,KAAoC,WAApC,IAAmD,MAAKxS,OAAL,CAAawS,WAAb,KAA6B,EAApF,EAAwF;AACpFD,2DAAeC,WAAf,GAA6B,MAAKxS,OAAL,CAAawS,WAA1C;AACH;AACD,8CAAKrW,QAAL,CAAc,WAAd,EAA2BoW,cAA3B;AACH,qCAbD,MAaO;AACHtM,yDAAO0B,MAAP,CAAc6G,GAAd,CAAkB,aAAlB;AACA,uEAAY,kBAAZ;AACH;AACJ,iCApBD,EAoBGmC,KApBH,CAoBS,UAACvT,KAAD,EAAW;AAChB,mEAAYA,KAAZ;AACH,iCAtBD;AAuBH,6BA5BD,MA4BO;AACH,oCAAIiV,WAAJ,EAAiB;AACbA,gDAAYvX,KAAZ,GAAoBoX,QAApB;AACH;;AAED,oCAAMK,iBAAiB;AACnBtJ,4CAAQiJ;AADW,iCAAvB;;AAIA,oCAAI,OAAO,MAAKlS,OAAL,CAAawS,WAApB,KAAoC,WAApC,IAAmD,MAAKxS,OAAL,CAAawS,WAAb,KAA6B,EAApF,EAAwF;AACpFD,mDAAeC,WAAf,GAA6B,MAAKxS,OAAL,CAAawS,WAA1C;AACH;AACD,sCAAKrW,QAAL,CAAc,WAAd,EAA2BoW,cAA3B;AACH;AACJ,yBA3CD,MA2CO,IAAI,yBAAQL,QAAR,EAAkB,MAAK9B,WAAL,CAAiBW,KAAnC,CAAJ,EAA+C;AAClD,kCAAK5U,QAAL,CAAc,WAAd,EAA2B,EAAE4U,OAAOmB,QAAT,EAA3B;AACH,yBAFM,MAEA;AACH,2DAAY,kBAAZ;AACH;AACJ,qBAtDD,CAsDE,OAAO9U,KAAP,EAAc;AACZ,uDAAYA,KAAZ;AACH;AACJ;AAlE2C,aAAhD;AAoEH;;;;EAlF+B4S;;AAqFpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;kBAtMqBoC;;;;;;;;;;AC9ErB;;;;AACA;;;;;;AAEA,IAAMjH,mBAAmB,IAAIjC,kBAAJ,EAAzB;AACA,IAAMoC,oBAAoB;AACtBC,eAAW,eADW;AAEtBzJ,aAAS,uBAFa;AAGtB0J,UAAM,oBAHgB;AAItBiH,WAAO,qBAJe;AAKtBhH,UAAM;AALgB,CAA1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,MAAhC,CAAJ,EAA6C;AACzC,kCAAKkC,gBAAL,CAAsBiJ,OAAtB,CAA8BtD,UAAUE,QAAxC;AACA,kCAAK7F,gBAAL,CAAsBoG,QAAtB,CAA+BT,UAAUE,QAAzC,EAAmD,EAAnD;AACH,yBAHD,MAGO,IAAImD,UAAJ,EAAgB;AACnBN,0CAAclJ,QAAd,GAAyB,KAAzB;AACH;AACJ;AAX4C,iBAAjD;AAaH;AACJ;;;;EAnJ8BqF;;AAsJnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;kBAhUqB0D;;;;;;;;ACjIrB;;AACA;;AACA;;;;;;;;;;;;AAEA,IAAM5C,YAAY;AACduD,wBAAoB,eADN;AAEdC,uBAA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","file":"example.f9284d6e.map","sourceRoot":"..","sourcesContent":["var support = {\n  searchParams: 'URLSearchParams' in self,\n  iterable: 'Symbol' in self && 'iterator' in Symbol,\n  blob:\n    'FileReader' in self &&\n    'Blob' in self &&\n    (function() {\n      try {\n        new Blob()\n        return true\n      } catch (e) {\n        return false\n      }\n    })(),\n  formData: 'FormData' in self,\n  arrayBuffer: 'ArrayBuffer' in self\n}\n\nfunction isDataView(obj) {\n  return obj && DataView.prototype.isPrototypeOf(obj)\n}\n\nif (support.arrayBuffer) {\n  var viewClasses = [\n    '[object Int8Array]',\n    '[object Uint8Array]',\n    '[object Uint8ClampedArray]',\n    '[object Int16Array]',\n    '[object Uint16Array]',\n    '[object Int32Array]',\n    '[object Uint32Array]',\n    '[object Float32Array]',\n    '[object Float64Array]'\n  ]\n\n  var isArrayBufferView =\n    ArrayBuffer.isView ||\n    function(obj) {\n      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n    }\n}\n\nfunction normalizeName(name) {\n  if (typeof name !== 'string') {\n    name = String(name)\n  }\n  if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n    throw new TypeError('Invalid character in header field name')\n  }\n  return name.toLowerCase()\n}\n\nfunction normalizeValue(value) {\n  if (typeof value !== 'string') {\n    value = String(value)\n  }\n  return value\n}\n\n// Build a destructive iterator for the value list\nfunction iteratorFor(items) {\n  var iterator = {\n    next: function() {\n      var value = items.shift()\n      return {done: value === undefined, value: value}\n    }\n  }\n\n  if (support.iterable) {\n    iterator[Symbol.iterator] = function() {\n      return iterator\n    }\n  }\n\n  return iterator\n}\n\nexport function Headers(headers) {\n  this.map = {}\n\n  if (headers instanceof Headers) {\n    headers.forEach(function(value, name) {\n      this.append(name, value)\n    }, this)\n  } else if (Array.isArray(headers)) {\n    headers.forEach(function(header) {\n      this.append(header[0], header[1])\n    }, this)\n  } else if (headers) {\n    Object.getOwnPropertyNames(headers).forEach(function(name) {\n      this.append(name, headers[name])\n    }, this)\n  }\n}\n\nHeaders.prototype.append = function(name, value) {\n  name = normalizeName(name)\n  value = normalizeValue(value)\n  var oldValue = this.map[name]\n  this.map[name] = oldValue ? oldValue + ', ' + value : value\n}\n\nHeaders.prototype['delete'] = function(name) {\n  delete this.map[normalizeName(name)]\n}\n\nHeaders.prototype.get = function(name) {\n  name = normalizeName(name)\n  return this.has(name) ? this.map[name] : null\n}\n\nHeaders.prototype.has = function(name) {\n  return this.map.hasOwnProperty(normalizeName(name))\n}\n\nHeaders.prototype.set = function(name, value) {\n  this.map[normalizeName(name)] = normalizeValue(value)\n}\n\nHeaders.prototype.forEach = function(callback, thisArg) {\n  for (var name in this.map) {\n    if (this.map.hasOwnProperty(name)) {\n      callback.call(thisArg, this.map[name], name, this)\n    }\n  }\n}\n\nHeaders.prototype.keys = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push(name)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.values = function() {\n  var items = []\n  this.forEach(function(value) {\n    items.push(value)\n  })\n  return iteratorFor(items)\n}\n\nHeaders.prototype.entries = function() {\n  var items = []\n  this.forEach(function(value, name) {\n    items.push([name, value])\n  })\n  return iteratorFor(items)\n}\n\nif (support.iterable) {\n  Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n}\n\nfunction consumed(body) {\n  if (body.bodyUsed) {\n    return Promise.reject(new TypeError('Already read'))\n  }\n  body.bodyUsed = true\n}\n\nfunction fileReaderReady(reader) {\n  return new Promise(function(resolve, reject) {\n    reader.onload = function() {\n      resolve(reader.result)\n    }\n    reader.onerror = function() {\n      reject(reader.error)\n    }\n  })\n}\n\nfunction readBlobAsArrayBuffer(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  reader.readAsArrayBuffer(blob)\n  return promise\n}\n\nfunction readBlobAsText(blob) {\n  var reader = new FileReader()\n  var promise = fileReaderReady(reader)\n  reader.readAsText(blob)\n  return promise\n}\n\nfunction readArrayBufferAsText(buf) {\n  var view = new Uint8Array(buf)\n  var chars = new Array(view.length)\n\n  for (var i = 0; i < view.length; i++) {\n    chars[i] = String.fromCharCode(view[i])\n  }\n  return chars.join('')\n}\n\nfunction bufferClone(buf) {\n  if (buf.slice) {\n    return buf.slice(0)\n  } else {\n    var view = new Uint8Array(buf.byteLength)\n    view.set(new Uint8Array(buf))\n    return view.buffer\n  }\n}\n\nfunction Body() {\n  this.bodyUsed = false\n\n  this._initBody = function(body) {\n    this._bodyInit = body\n    if (!body) {\n      this._bodyText = ''\n    } else if (typeof body === 'string') {\n      this._bodyText = body\n    } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n      this._bodyBlob = body\n    } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n      this._bodyFormData = body\n    } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n      this._bodyText = body.toString()\n    } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n      this._bodyArrayBuffer = bufferClone(body.buffer)\n      // IE 10-11 can't handle a DataView body.\n      this._bodyInit = new Blob([this._bodyArrayBuffer])\n    } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n      this._bodyArrayBuffer = bufferClone(body)\n    } else {\n      this._bodyText = body = Object.prototype.toString.call(body)\n    }\n\n    if (!this.headers.get('content-type')) {\n      if (typeof body === 'string') {\n        this.headers.set('content-type', 'text/plain;charset=UTF-8')\n      } else if (this._bodyBlob && this._bodyBlob.type) {\n        this.headers.set('content-type', this._bodyBlob.type)\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n      }\n    }\n  }\n\n  if (support.blob) {\n    this.blob = function() {\n      var rejected = consumed(this)\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return Promise.resolve(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as blob')\n      } else {\n        return Promise.resolve(new Blob([this._bodyText]))\n      }\n    }\n\n    this.arrayBuffer = function() {\n      if (this._bodyArrayBuffer) {\n        return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n      } else {\n        return this.blob().then(readBlobAsArrayBuffer)\n      }\n    }\n  }\n\n  this.text = function() {\n    var rejected = consumed(this)\n    if (rejected) {\n      return rejected\n    }\n\n    if (this._bodyBlob) {\n      return readBlobAsText(this._bodyBlob)\n    } else if (this._bodyArrayBuffer) {\n      return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n    } else if (this._bodyFormData) {\n      throw new Error('could not read FormData body as text')\n    } else {\n      return Promise.resolve(this._bodyText)\n    }\n  }\n\n  if (support.formData) {\n    this.formData = function() {\n      return this.text().then(decode)\n    }\n  }\n\n  this.json = function() {\n    return this.text().then(JSON.parse)\n  }\n\n  return this\n}\n\n// HTTP methods whose capitalization should be normalized\nvar methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\nfunction normalizeMethod(method) {\n  var upcased = method.toUpperCase()\n  return methods.indexOf(upcased) > -1 ? upcased : method\n}\n\nexport function Request(input, options) {\n  options = options || {}\n  var body = options.body\n\n  if (input instanceof Request) {\n    if (input.bodyUsed) {\n      throw new TypeError('Already read')\n    }\n    this.url = input.url\n    this.credentials = input.credentials\n    if (!options.headers) {\n      this.headers = new Headers(input.headers)\n    }\n    this.method = input.method\n    this.mode = input.mode\n    this.signal = input.signal\n    if (!body && input._bodyInit != null) {\n      body = input._bodyInit\n      input.bodyUsed = true\n    }\n  } else {\n    this.url = String(input)\n  }\n\n  this.credentials = options.credentials || this.credentials || 'same-origin'\n  if (options.headers || !this.headers) {\n    this.headers = new Headers(options.headers)\n  }\n  this.method = normalizeMethod(options.method || this.method || 'GET')\n  this.mode = options.mode || this.mode || null\n  this.signal = options.signal || this.signal\n  this.referrer = null\n\n  if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n    throw new TypeError('Body not allowed for GET or HEAD requests')\n  }\n  this._initBody(body)\n}\n\nRequest.prototype.clone = function() {\n  return new Request(this, {body: this._bodyInit})\n}\n\nfunction decode(body) {\n  var form = new FormData()\n  body\n    .trim()\n    .split('&')\n    .forEach(function(bytes) {\n      if (bytes) {\n        var split = bytes.split('=')\n        var name = split.shift().replace(/\\+/g, ' ')\n        var value = split.join('=').replace(/\\+/g, ' ')\n        form.append(decodeURIComponent(name), decodeURIComponent(value))\n      }\n    })\n  return form\n}\n\nfunction parseHeaders(rawHeaders) {\n  var headers = new Headers()\n  // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n  // https://tools.ietf.org/html/rfc7230#section-3.2\n  var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ')\n  preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n    var parts = line.split(':')\n    var key = parts.shift().trim()\n    if (key) {\n      var value = parts.join(':').trim()\n      headers.append(key, value)\n    }\n  })\n  return headers\n}\n\nBody.call(Request.prototype)\n\nexport function Response(bodyInit, options) {\n  if (!options) {\n    options = {}\n  }\n\n  this.type = 'default'\n  this.status = options.status === undefined ? 200 : options.status\n  this.ok = this.status >= 200 && this.status < 300\n  this.statusText = 'statusText' in options ? options.statusText : 'OK'\n  this.headers = new Headers(options.headers)\n  this.url = options.url || ''\n  this._initBody(bodyInit)\n}\n\nBody.call(Response.prototype)\n\nResponse.prototype.clone = function() {\n  return new Response(this._bodyInit, {\n    status: this.status,\n    statusText: this.statusText,\n    headers: new Headers(this.headers),\n    url: this.url\n  })\n}\n\nResponse.error = function() {\n  var response = new Response(null, {status: 0, statusText: ''})\n  response.type = 'error'\n  return response\n}\n\nvar redirectStatuses = [301, 302, 303, 307, 308]\n\nResponse.redirect = function(url, status) {\n  if (redirectStatuses.indexOf(status) === -1) {\n    throw new RangeError('Invalid status code')\n  }\n\n  return new Response(null, {status: status, headers: {location: url}})\n}\n\nexport var DOMException = self.DOMException\ntry {\n  new DOMException()\n} catch (err) {\n  DOMException = function(message, name) {\n    this.message = message\n    this.name = name\n    var error = Error(message)\n    this.stack = error.stack\n  }\n  DOMException.prototype = Object.create(Error.prototype)\n  DOMException.prototype.constructor = DOMException\n}\n\nexport function fetch(input, init) {\n  return new Promise(function(resolve, reject) {\n    var request = new Request(input, init)\n\n    if (request.signal && request.signal.aborted) {\n      return reject(new DOMException('Aborted', 'AbortError'))\n    }\n\n    var xhr = new XMLHttpRequest()\n\n    function abortXhr() {\n      xhr.abort()\n    }\n\n    xhr.onload = function() {\n      var options = {\n        status: xhr.status,\n        statusText: xhr.statusText,\n        headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n      }\n      options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n      var body = 'response' in xhr ? xhr.response : xhr.responseText\n      resolve(new Response(body, options))\n    }\n\n    xhr.onerror = function() {\n      reject(new TypeError('Network request failed'))\n    }\n\n    xhr.ontimeout = function() {\n      reject(new TypeError('Network request failed'))\n    }\n\n    xhr.onabort = function() {\n      reject(new DOMException('Aborted', 'AbortError'))\n    }\n\n    xhr.open(request.method, request.url, true)\n\n    if (request.credentials === 'include') {\n      xhr.withCredentials = true\n    } else if (request.credentials === 'omit') {\n      xhr.withCredentials = false\n    }\n\n    if ('responseType' in xhr && support.blob) {\n      xhr.responseType = 'blob'\n    }\n\n    request.headers.forEach(function(value, name) {\n      xhr.setRequestHeader(name, value)\n    })\n\n    if (request.signal) {\n      request.signal.addEventListener('abort', abortXhr)\n\n      xhr.onreadystatechange = function() {\n        // DONE (success or failure)\n        if (xhr.readyState === 4) {\n          request.signal.removeEventListener('abort', abortXhr)\n        }\n      }\n    }\n\n    xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n  })\n}\n\nfetch.polyfill = true\n\nif (!self.fetch) {\n  self.fetch = fetch\n  self.Headers = Headers\n  self.Request = Request\n  self.Response = Response\n}\n","/**\n * @this {Promise}\n */\nfunction finallyConstructor(callback) {\n  var constructor = this.constructor;\n  return this.then(\n    function(value) {\n      return constructor.resolve(callback()).then(function() {\n        return value;\n      });\n    },\n    function(reason) {\n      return constructor.resolve(callback()).then(function() {\n        return constructor.reject(reason);\n      });\n    }\n  );\n}\n\nexport default finallyConstructor;\n","import promiseFinally from './finally';\n\n// Store setTimeout reference so promise-polyfill will be unaffected by\n// other code modifying setTimeout (like sinon.useFakeTimers())\nvar setTimeoutFunc = setTimeout;\n\nfunction noop() {}\n\n// Polyfill for Function.prototype.bind\nfunction bind(fn, thisArg) {\n  return function() {\n    fn.apply(thisArg, arguments);\n  };\n}\n\n/**\n * @constructor\n * @param {Function} fn\n */\nfunction Promise(fn) {\n  if (!(this instanceof Promise))\n    throw new TypeError('Promises must be constructed via new');\n  if (typeof fn !== 'function') throw new TypeError('not a function');\n  /** @type {!number} */\n  this._state = 0;\n  /** @type {!boolean} */\n  this._handled = false;\n  /** @type {Promise|undefined} */\n  this._value = undefined;\n  /** @type {!Array<!Function>} */\n  this._deferreds = [];\n\n  doResolve(fn, this);\n}\n\nfunction handle(self, deferred) {\n  while (self._state === 3) {\n    self = self._value;\n  }\n  if (self._state === 0) {\n    self._deferreds.push(deferred);\n    return;\n  }\n  self._handled = true;\n  Promise._immediateFn(function() {\n    var cb = self._state === 1 ? deferred.onFulfilled : deferred.onRejected;\n    if (cb === null) {\n      (self._state === 1 ? resolve : reject)(deferred.promise, self._value);\n      return;\n    }\n    var ret;\n    try {\n      ret = cb(self._value);\n    } catch (e) {\n      reject(deferred.promise, e);\n      return;\n    }\n    resolve(deferred.promise, ret);\n  });\n}\n\nfunction resolve(self, newValue) {\n  try {\n    // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n    if (newValue === self)\n      throw new TypeError('A promise cannot be resolved with itself.');\n    if (\n      newValue &&\n      (typeof newValue === 'object' || typeof newValue === 'function')\n    ) {\n      var then = newValue.then;\n      if (newValue instanceof Promise) {\n        self._state = 3;\n        self._value = newValue;\n        finale(self);\n        return;\n      } else if (typeof then === 'function') {\n        doResolve(bind(then, newValue), self);\n        return;\n      }\n    }\n    self._state = 1;\n    self._value = newValue;\n    finale(self);\n  } catch (e) {\n    reject(self, e);\n  }\n}\n\nfunction reject(self, newValue) {\n  self._state = 2;\n  self._value = newValue;\n  finale(self);\n}\n\nfunction finale(self) {\n  if (self._state === 2 && self._deferreds.length === 0) {\n    Promise._immediateFn(function() {\n      if (!self._handled) {\n        Promise._unhandledRejectionFn(self._value);\n      }\n    });\n  }\n\n  for (var i = 0, len = self._deferreds.length; i < len; i++) {\n    handle(self, self._deferreds[i]);\n  }\n  self._deferreds = null;\n}\n\n/**\n * @constructor\n */\nfunction Handler(onFulfilled, onRejected, promise) {\n  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n  this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n  this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, self) {\n  var done = false;\n  try {\n    fn(\n      function(value) {\n        if (done) return;\n        done = true;\n        resolve(self, value);\n      },\n      function(reason) {\n        if (done) return;\n        done = true;\n        reject(self, reason);\n      }\n    );\n  } catch (ex) {\n    if (done) return;\n    done = true;\n    reject(self, ex);\n  }\n}\n\nPromise.prototype['catch'] = function(onRejected) {\n  return this.then(null, onRejected);\n};\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n  // @ts-ignore\n  var prom = new this.constructor(noop);\n\n  handle(this, new Handler(onFulfilled, onRejected, prom));\n  return prom;\n};\n\nPromise.prototype['finally'] = promiseFinally;\n\nPromise.all = function(arr) {\n  return new Promise(function(resolve, reject) {\n    if (!arr || typeof arr.length === 'undefined')\n      throw new TypeError('Promise.all accepts an array');\n    var args = Array.prototype.slice.call(arr);\n    if (args.length === 0) return resolve([]);\n    var remaining = args.length;\n\n    function res(i, val) {\n      try {\n        if (val && (typeof val === 'object' || typeof val === 'function')) {\n          var then = val.then;\n          if (typeof then === 'function') {\n            then.call(\n              val,\n              function(val) {\n                res(i, val);\n              },\n              reject\n            );\n            return;\n          }\n        }\n        args[i] = val;\n        if (--remaining === 0) {\n          resolve(args);\n        }\n      } catch (ex) {\n        reject(ex);\n      }\n    }\n\n    for (var i = 0; i < args.length; i++) {\n      res(i, args[i]);\n    }\n  });\n};\n\nPromise.resolve = function(value) {\n  if (value && typeof value === 'object' && value.constructor === Promise) {\n    return value;\n  }\n\n  return new Promise(function(resolve) {\n    resolve(value);\n  });\n};\n\nPromise.reject = function(value) {\n  return new Promise(function(resolve, reject) {\n    reject(value);\n  });\n};\n\nPromise.race = function(values) {\n  return new Promise(function(resolve, reject) {\n    for (var i = 0, len = values.length; i < len; i++) {\n      values[i].then(resolve, reject);\n    }\n  });\n};\n\n// Use polyfill for setImmediate for performance gains\nPromise._immediateFn =\n  (typeof setImmediate === 'function' &&\n    function(fn) {\n      setImmediate(fn);\n    }) ||\n  function(fn) {\n    setTimeoutFunc(fn, 0);\n  };\n\nPromise._unhandledRejectionFn = function _unhandledRejectionFn(err) {\n  if (typeof console !== 'undefined' && console) {\n    console.warn('Possible Unhandled Promise Rejection:', err); // eslint-disable-line no-console\n  }\n};\n\nexport default Promise;\n","import Promise from './index';\nimport promiseFinally from './finally';\n\n/** @suppress {undefinedVars} */\nvar globalNS = (function() {\n  // the only reliable means to get the global object is\n  // `Function('return this')()`\n  // However, this causes CSP violations in Chrome apps.\n  if (typeof self !== 'undefined') {\n    return self;\n  }\n  if (typeof window !== 'undefined') {\n    return window;\n  }\n  if (typeof global !== 'undefined') {\n    return global;\n  }\n  throw new Error('unable to locate global object');\n})();\n\nif (!('Promise' in globalNS)) {\n  globalNS['Promise'] = Promise;\n} else if (!globalNS.Promise.prototype['finally']) {\n  globalNS.Promise.prototype['finally'] = promiseFinally;\n}\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Bluebus\"] = factory();\n\telse\n\t\troot[\"Bluebus\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = {\n\n\t    /*\n\t    events: {\n\t        eventName: {\n\t            triggered: true/false,\n\t            parameters: lastTriggeredParameters,\n\t            stack: [\n\t                bindedFunction1, bindedFunction2 ...\n\t            ]\n\t        }\n\t    }\n\t    */\n\n\t    events: {},\n\n\t    bind: function(key, callback){\n\t        var event = this.events[key];\n\t        if(event){\n\t            if(event.triggered){\n\t                callback.call(this, event.parameters);\n\t            } else {\n\t                event.stack.push(callback);\n\t            }\n\t        } else {\n\t            this.events[key] = {\n\t                triggered: false,\n\t                parameters: undefined,\n\t                stack: [callback]\n\t            };\n\t        }\n\t    },\n\n\t    trigger: function(key, parameters, leaveStack){\n\t        var event = this.events[key];\n\t        if(event){\n\t            // call binding methods\n\t            if(event.stack.length > 0){\n\t                for(var i = 0; i < event.stack.length; i++){\n\t                    event.stack[i].call(this, parameters);\n\t                }\n\t            }\n\n\t            // change event properties\n\t            this.events[key] = {\n\t                triggered: true,\n\t                parameters: parameters,\n\t                stack: leaveStack ? this.events[key].stack : []\n\t            };\n\t        } else {\n\t            // change event properties\n\t            this.events[key] = {\n\t                triggered: true,\n\t                parameters: parameters,\n\t                stack: []\n\t            };\n\t        }\n\t    },\n\n\t    isTriggered: function(key){\n\t        var event = this.events[key];\n\t        if(event){\n\t            return event.triggered;\n\t        } else {\n\t            return false;\n\t        }\n\t    },\n\n\t    clean: function(key){\n\t        this.events[key] = {\n\t            triggered: false,\n\t            parameters: undefined,\n\t            stack: []\n\t        };\n\t    },\n\n\t    cleanAll: function(){\n\t        this.events = {};\n\t    }\n\n\t};\n\n\n/***/ })\n/******/ ])\n});\n;\n\n/* Bluebus 1.3.1 */","const global = {\n    logger: console,\n    setLogger(newLogger) {\n        this.logger = newLogger;\n    }\n};\n\nexport default global;","\nexport default {\n    config: {},\n    init(initObject) {\n        if (initObject) {\n            Object.assign(this.config, initObject);\n        }\n    },\n    get(key) {\n        if (this.config[key]) {\n            return this.config[key];\n        }\n        return '';\n    },\n    set(objectToSet) {\n        Object.assign(this.config, objectToSet);\n    }\n};","import config from './config';\n\nconst compose = (url, queryParams) => {\n    let newUrl = url;\n    if (url.indexOf('?') === -1) {\n        newUrl += '?';\n    }\n    Object.keys(queryParams).forEach((key) => {\n        if ({}.hasOwnProperty.call(queryParams, key)) {\n            newUrl += `${key}=${queryParams[key]}&`;\n        }\n    });\n    return newUrl;\n};\n\nexport default {\n    smartstatus(options) {\n        const url = compose(`${config.get('domain')}v01/section.smart`, {\n            apikey: config.get('apikey'),\n            country: config.get('country'),\n            subsection: options.subsection || '',\n            content_id: options.contentId || '',\n            hybridnews: config.get('hybridnews'),\n            store_type: config.get('store_type'),\n            skip: options.skip ? options.skip : 0,\n            sentpin: options.sentpin ? options.sentpin : 0,\n            access_token: options.access_token ? options.access_token : ''\n        });\n        return fetch(url, {\n            credentials: 'same-origin'\n        }).then(\n            response => response.json(),\n            error => error\n        );\n    },\n    getAlias(options) {\n        const url = compose(config.get('aliasCheckUrl'), {\n            msisdn: options.msisdn\n        });\n\n        return fetch(url, {\n            credentials: 'same-origin'\n        }).then(\n            response => response.json(),\n            error => error\n        );\n    }\n};","import Api from './api';\n\nexport default class UserView {\n    init(params) {\n        if (params.doNotLoad) {\n            return Promise.resolve({\n                content: ''\n            });\n        }\n        return Api.smartstatus(params);\n    }\n\n    getValue(elementId) {\n        const element = document.getElementById(elementId);\n        return element ? element.value : false;\n    }\n\n    setValue(elementId, value){\n        const element = document.getElementById(elementId);\n\n        element.value = value;\n    }\n\n    hideElement(elementId) {\n        const element = document.getElementById(elementId);\n        if (element && element.style) {\n            element.style.display = 'none';\n        }\n    }\n\n    showElement(elementId) {\n        const element = document.getElementById(elementId);\n        if (element && element.style) {\n            element.style.display = 'block';\n        }\n    }\n\n    hideElementByClass(className) {\n        const element = document.getElementsByClassName(className)[0];\n        if (element && element.style) {\n            element.style.display = 'none';\n        }\n    }\n\n    showElementByClass(className) {\n        const element = document.getElementsByClassName(className)[0];\n        if (element && element.style) {\n            element.style.display = 'block';\n        }\n    }\n\n    showElementByClassInContainer(className, containerId) {\n        let element = document.getElementById(containerId);\n        if (element && element.querySelector) {\n            element = element.querySelector(`.${className}`);\n            if (element && element.style) {\n                element.style.display = 'block';\n            }\n        }\n    }\n\n    hideElementByClassInContainer(className, containerId) {\n        let element = document.getElementById(containerId);\n        if (element && element.querySelector) {\n            element = element.querySelector(`.${className}`);\n            if (element && element.style) {\n                element.style.display = 'none';\n            }\n        }\n    };\n\n    getElement(elementId) {\n        return document.getElementById(elementId) || false;\n    }\n\n    getElementsByName(elementId) {\n        let arrayElement = document.getElementsByName(elementId);\n        if (arrayElement.length <= 0) {\n            arrayElement = false;\n        }\n        return arrayElement;\n    }\n\n    getCheckedRadioValue(radioArray) {\n        let checkedValue = false;\n        radioArray.forEach((radio) => {\n            if (radio.checked) {\n                checkedValue = radio.value;\n            }\n        });\n        return checkedValue;\n    }\n\n    attachEvent(element, eventObject) {\n        if (element) {\n            element.addEventListener(eventObject.eventName, eventObject.event);\n        }\n    }\n\n    removeEvent(elementId, eventObject) {\n        const element = document.getElementById(elementId);\n        element.removeEventListener(eventObject.eventName, eventObject.event);\n    }\n\n    populate(element, htmlCode) {\n        element.innerHTML = htmlCode; // eslint-disable-line no-param-reassign\n    }\n\n    disable(elementId) {\n        const element = document.getElementById(elementId);\n        element.disabled = true;\n    }\n\n    switchInputType(inputId, eyeId) {\n        const inputElement = document.getElementById(inputId),\n            eyeElement = document.getElementById(eyeId);\n\n        if (inputElement) {\n            if (inputElement.type === 'password') {\n                inputElement.type = 'text';\n                if (eyeElement) {\n                    eyeElement.className = 'icon icon-hide-pw';\n                }\n            } else {\n                inputElement.type = 'password';\n                if (eyeElement) {\n                    eyeElement.className = 'icon icon-show-pw';\n                }\n            }\n        }\n    }\n\n    getElementByQuerySelectorAll(query) {\n        const elementsInQuery = document.querySelectorAll(query);\n        if (elementsInQuery.length > 0) {\n            return elementsInQuery;\n        }\n        return false;\n    }\n}\n","import UserView from '../userView';\n\nconst UserViewInstance = new UserView();\n\nexport default class BaseFeedback {\n    feedbackStructure = {\n        container: 'user-feedback',\n        message: 'user-feedback-message',\n        icon: 'user-feedback-icon',\n        link: 'user-feedback-link',\n        closeButton: 'user-feedback-close'\n    };\n\n    isActive = false;\n\n    feedbackTimeout = false;\n\n    fadeTimeout = false;\n\n    defaultClassIcon = '';\n\n    defaultClassContainer = '';\n\n    constructor(key, configuration) {\n        this.feedbackType = key;\n        this.feedbackTime = parseInt(configuration.temporizedFor || 0, 10);\n        this.feedbackFadeTime = parseInt(configuration.fadeTimeout || 0, 10);\n        this.enabled = configuration.enabled || false;\n        this.canClose = configuration.canClose || false;\n        this.overrideProps = configuration.overrideProps || false;\n        this.iconClass = configuration.iconClass || '';\n        this.popupClass = configuration.popupClass || false;\n\n        this.container = UserViewInstance.getElement(this.feedbackStructure.container);\n        this.feedbackMessage = UserViewInstance.getElement(this.feedbackStructure.message);\n        this.feedbackIcon = UserViewInstance.getElement(this.feedbackStructure.icon);\n        this.feedbackLink = UserViewInstance.getElement(this.feedbackStructure.link);\n        this.feedbackCloseIcon = UserViewInstance.getElement(this.feedbackStructure.closeButton);\n\n        if (this.feedbackIcon && this.feedbackIcon.className) {\n            this.defaultClassIcon = this.feedbackIcon.className;\n        }\n\n        if (this.container && this.container.className) {\n            this.defaultClassContainer = this.container.className;\n        }\n    }\n\n    cleanFeedbackTimeout = () => {\n        if (this.feedbackTimeout) {\n            clearTimeout(this.feedbackTimeout);\n            this.feedbackTimeout = false;\n        }\n    };\n\n    cleanFadeTimeout = () => {\n        if (this.fadeTimeout) {\n            clearTimeout(this.fadeTimeout);\n            this.fadeTimeout = false;\n        }\n    };\n\n    closePopup = () => {\n        this.feedbackMessage.innerHTML = '';\n        this.feedbackIcon.className = this.defaultClassIcon;\n        this.container.className = this.defaultClassContainer;\n\n        if (this.feedbackLink.getAttribute('href')) {\n            this.feedbackLink.setAttribute('href', '');\n            this.feedbackLink.innerText = '';\n            this.feedbackLink.style.display = 'none';\n        }\n\n        this.container.style.display = 'none';\n        this.isActive = false;\n    };\n\n    closeUserFeedback = () => {\n        this.cleanFeedbackTimeout();\n        this.cleanFadeTimeout();\n        this.closePopup();\n    };\n\n    isShowed = () => this.isActive;\n\n    isEnabled = () => this.enabled;\n\n    getType = () => this.feedbackType;\n\n    showUserFeedback = (obj) => {\n        let timeForShow = this.feedbackTime;\n        let timeForFade = this.feedbackFadeTime;\n        let tempIcon = this.iconClass;\n\n        if (typeof obj.message !== 'undefined') {\n            this.feedbackMessage.innerHTML = obj.message;\n        }\n\n        if (typeof this.popupClass !== 'undefined') {\n            this.container.className += ` ${this.popupClass}`;\n        }\n\n        if (this.overrideProps) {\n            if (typeof obj.fadeTimeout !== 'undefined') {\n                timeForFade = obj.fadeTimeout;\n            }\n\n            if (typeof obj.temporizedFor !== 'undefined') {\n                timeForShow = obj.temporizedFor;\n            }\n        }\n\n        if (typeof obj.icon !== 'undefined' && obj.icon !== '' && this.overrideProps) {\n            tempIcon = obj.icon;\n            this.feedbackIcon.className += ` ${tempIcon}`;\n        } else if (typeof this.iconClass !== 'undefined') {\n            this.feedbackIcon.className += ` ${this.iconClass}`;\n        }\n\n        if (typeof obj.link !== 'undefined') {\n            this.feedbackLink.style.display = 'block';\n            this.feedbackLink.href = obj.link.href;\n            this.feedbackLink.innerText = obj.link.text;\n        }\n\n        if (this.canClose) {\n            this.feedbackCloseIcon.style.display = 'block';\n            UserViewInstance.attachEvent(this.feedbackCloseIcon, { eventName: 'click', event: this.closeUserFeedback });\n        } else {\n            this.feedbackCloseIcon.style.display = 'none';\n        }\n\n        this.container.style.display = 'block';\n\n        if ((timeForFade > 0) && (timeForShow > 0)) {\n            this.fadeTimeout = setTimeout(() => {\n                this.container.className += ' fade';\n\n                this.feedbackTimeout = setTimeout(this.closePopup, timeForFade);\n            }, timeForShow - timeForFade);\n        } else if (typeof timeForShow !== 'undefined' && timeForShow > 0) {\n            this.feedbackTimeout = setTimeout(this.closePopup, timeForShow);\n        } else {\n            this.feedbackCloseIcon.style.display = 'block';\n            UserViewInstance.attachEvent(this.feedbackCloseIcon, { eventName: 'click', event: this.closeUserFeedback });\n        }\n\n        this.isActive = true;\n    }\n}\n","import Bluebus from 'bluebus';\nimport global from './global';\nimport BaseFeedback from './popup-feedback/feedback.base';\n\nexport default class PopupManager {\n    feedbackObject = {};\n\n    init(initObj, callback) {\n        if (typeof initObj === 'object') {\n            Object.values(initObj).forEach((elem) => {\n                const popupType = elem.type || '';\n                if (popupType !== '') {\n                    this.feedbackObject[popupType] = new BaseFeedback(elem.type, elem);\n                }\n            });\n\n            global.logger.log(['Useris', 'PopupManager', 'Init', this.feedbackObject]);\n\n            Bluebus.trigger('Useris-Popup-Init');\n\n            if (typeof callback === 'function') {\n                callback({ initialized: true });\n            }\n        } else {\n            global.logger.log(['Useris', 'PopupManager', 'Init', 'Any initialization object is given, please check the doc']);\n\n            if (typeof callback === 'function') {\n                callback({ initialized: false });\n            }\n        }\n    }\n\n    closeAllPopup() {\n        Bluebus.bind('Useris-Popup-Init', () => {\n            Object.values(this.feedbackObject).forEach((elem) => {\n                if (elem.isEnabled() && elem.isShowed()) {\n                    elem.closeUserFeedback();\n                }\n            });\n        });\n    }\n\n    showUserFeedback(obj) {\n        let feedbackToShow = {};\n        if (typeof obj !== 'undefined') {\n            Bluebus.bind('Useris-Popup-Init', () => {\n                if (typeof this.feedbackObject[obj.type] !== 'undefined' && this.feedbackObject[obj.type].isEnabled() && typeof obj.feedback !== 'undefined') {\n                    feedbackToShow = this.feedbackObject[obj.type];\n                    this.closeAllPopup();\n                    feedbackToShow.showUserFeedback(obj.feedback);\n                } else {\n                    global.logger.warn(['Any feedback to show, feedback should be not enabled or not found', obj]);\n                }\n            });\n        }\n    }\n\n    isInitilized = () => Bluebus.isTriggered('Useris-Popup-Init');\n\n    getFeedback = () => this.feedbackObject;\n}\n","import UserView from './userView';\nimport global from './global';\n\nconst arrayError = [\n    'useris-error-empty-terms',\n    'useris-error-pin',\n    'useris-error-msg',\n    'useris-error-op',\n    'useris-error-password',\n    'useris-error-password2',\n    'useris-error-old-password',\n    'useris-error-repeated-password',\n    'useris-error-password-not-changed',\n    'useris-error-password-match',\n    'useris-error-password-not-valid',\n    'useris-error-newton-error',\n    'useris-username-error',\n    'useris-nickname-not-changed',\n    'useris-error-required-input',\n    'useris-error-invalid-number'\n];\n\nconst UserViewInstance = new UserView();\n\nexport function manageErrorWithClass(error) {\n    global.logger.log('ErrorManager: ', error);\n    let errorName = '';\n\n    if (error) {\n        errorName = error.message || error;\n    }\n\n    if (errorName && arrayError.indexOf(errorName) >= 0) {\n        UserViewInstance.showElementByClass(errorName);\n    }\n}\n\nexport function manageErrorInContainer(error, containerId) {\n    global.logger.log('ErrorManager: ', 'Container Error:', `${error} in ${containerId}`);\n\n    let errorName = '';\n\n    if (error) {\n        errorName = error.message || error;\n    }\n\n    if (errorName && arrayError.indexOf(errorName) >= 0) {\n        UserViewInstance.showElementByClassInContainer(errorName, containerId);\n    }\n}\n\nexport function cleanError() {\n    arrayError.forEach((singleError) => {\n        UserViewInstance.hideElementByClass(singleError);\n    });\n}\n\nexport function cleanErrorEvo() {\n    let errorElements = [];\n    arrayError.forEach((singleError) => {\n        errorElements = UserViewInstance.getElementByQuerySelectorAll(`.${singleError}`);\n        if (errorElements) {\n            errorElements.forEach((element) => {\n                if (element.style) {\n                    element.style.display = 'none';\n                }\n            });\n        }\n    });\n}\n\n/**\n * @memberOf Useris\n * @function triggerError\n *\n * @description Expose the useris error manager\n * to the web application to show error or warning message.\n *\n * @param {string} error div to show for the error\n *\n * @example\n *  Useris.triggerError('useris-error-newton-error');\n */\nexport function manageError(error, containerId) {\n    if (containerId) {\n        manageErrorInContainer(error, containerId);\n    } else {\n        manageErrorWithClass(error);\n    }\n}\n\nexport default {\n    manageError,\n    manageErrorInContainer,\n    manageErrorWithClass,\n    cleanError,\n    cleanErrorEvo\n};\n","import global from '../../global';\n\n/**\n * @function isValid\n * @description Test if a given string match the given regular expression\n *\n * @param {String} string String to test\n * @param {String} regexpValue regular expression to test\n * @returns Boolean\n */\nexport default (string, regexpValue) => {\n    if (string && regexpValue) {\n        try {\n            const regexp = new RegExp(regexpValue);\n            if (regexp.test(string)) {\n                return true;\n            }\n        } catch (error) {\n            global.logger.warn(error.message);\n        }\n    }\n    return false;\n};\n","/**\n * @function isVoid\n * @description Test if a given string is falsy\n *\n * @param {String} value Value to check\n * @returns Boolean\n */\nexport default (value) => {\n    if (value) {\n        return false;\n    }\n    return true;\n};\n","import global from '../../global';\n\n/**\n * @function general\n * @description Test if a given string match at least one of the given regular expressions\n *\n * @param {String} string String to test\n * @param {Object} regexpObject Object with regular expression to test\n * @returns Boolean\n */\nexport default (string, regexpObject) => {\n    if (string && regexpObject) {\n        for (const key in regexpObject) { // eslint-disable-line\n            try {\n                const regexp = new RegExp(regexpObject[key]);\n                if (regexp.test(string)) {\n                    return key;\n                }\n            } catch (error) {\n                global.logger.log(error.message);\n            }\n        }\n    }\n    return false;\n};\n","export { default as isValid } from './isValid';\nexport { default as isVoid } from './isVoid';\nexport { default as general } from './general';\n","import UserView from '../userView';\nimport config from '../config';\nimport { cleanError, manageError } from '../errorManager';\n\nexport default class Method {\n    templateInjected = false;\n\n    UserViewInstance = new UserView();\n\n    smartsectionObj = {};\n\n    handle = (options, callbackObject) => {\n        this.options = options;\n        this.regexObject = options.regexObject || config.get('regexObject');\n        this.callbackObject = callbackObject;\n        this.init(options);\n    };\n\n    init = () => {\n        throw new Error('class needs to implement the \"init\" method');\n    };\n\n    initUserView = () => {\n        this.UserViewInstance.init(this.smartsectionObj).then((data) => {\n            this.loadForm(data);\n            this.callback('onTemplateLoaded', {\n                data,\n                templateName: this.smartsectionObj.subsection,\n                injected: this.templateInjected\n            });\n\n            cleanError();\n            this.attachEvents(data);\n\n            this.callback('onEventsAttached', {\n                data,\n                templateName: this.smartsectionObj.subsection,\n                injected: this.templateInjected\n            });\n        }).catch((error) => {\n            manageError(error);\n        });\n    };\n\n    loadForm = (data) => {\n        if (this.smartsectionObj.loadForm) {\n            this.UserViewInstance.populate(this.options.element, data.content);\n            this.templateInjected = true;\n        }\n    };\n\n    callback = (name, payload = {}) => {\n        if (typeof this.callbackObject[name] !== 'undefined') {\n            this.callbackObject[name](payload);\n        }\n    };\n\n    attachEvents = () => {};\n}","import { cleanError, manageError } from '../../errorManager';\nimport { isValid, isVoid } from '../../validation';\nimport Method from '../Method';\n\nconst formModel = {\n    email: 'email',\n    password: 'password',\n    repeatedPassword: 'password2',\n    addEmailButton: 'frmAddEmail',\n    cancelButton: 'frmAddEmailReturn'\n};\n\nexport default class ChangeMail extends Method {\n    init = (options) => {\n        this.smartsectionObj = {\n            subsection: 'smartaddemail',\n            loadForm: options.element || false,\n            access_token: options.access_token || '',\n            doNotLoad: options.doNotLoad || false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        const addEmailButton = this.UserViewInstance.getElement(formModel.addEmailButton);\n        const cancelButton = this.UserViewInstance.getElement(formModel.cancelButton);\n        this.UserViewInstance.attachEvent(addEmailButton, {\n            eventName: 'click',\n            event: (e) => {\n                e.preventDefault();\n                cleanError();\n\n                const email = this.UserViewInstance.getValue(formModel.email);\n                const password = this.UserViewInstance.getValue(formModel.password);\n                const repeatedPassword = this.UserViewInstance.getValue(formModel.repeatedPassword);\n\n                try {\n                    if (isVoid(email) || !isValid(email, this.options.regexObject.email)) {\n                        manageError('useris-error-msg');\n                        return;\n                    }\n\n                    if (isVoid(password) || !isValid(password, this.options.regexObject.password)) {\n                        manageError('useris-error-password');\n                        return;\n                    }\n\n                    if (isVoid(repeatedPassword)) {\n                        manageError('useris-error-password2');\n                        return;\n                    }\n\n                    if (password !== repeatedPassword) {\n                        manageError('useris-error-password-match');\n                        return;\n                    }\n\n                    this.callback('onSuccess', {\n                        email,\n                        password,\n                        repeatedPassword,\n                        type: 'email'\n                    });\n                } catch (error) {\n                    manageError(error);\n                }\n            }\n        });\n\n        this.UserViewInstance.attachEvent(cancelButton, {\n            eventName: 'click',\n            event: (e) => {\n                e.preventDefault();\n                this.UserViewInstance.setValue(formModel.email, '');\n                this.UserViewInstance.setValue(formModel.password, '');\n                this.UserViewInstance.setValue(formModel.repeatedPassword, '');\n            }\n        });\n    }\n}\n\n\n// export const old = (options, callbackObject) => {\n//     let templateInjected = false;\n//     const smartsectionObj = {\n//         subsection: 'smartaddemail',\n//         loadForm: options.element || false,\n//         access_token: options.access_token || '',\n//         doNotLoad: options.doNotLoad || false\n//     };\n//     const UserViewInstance = new UserView();\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//\n//         cleanError();\n//\n//         const addEmailButton = UserViewInstance.getElement(formModel.addEmailButton);\n//         const cancelButton = UserViewInstance.getElement(formModel.cancelButton);\n//\n//         UserViewInstance.attachEvent(addEmailButton, {\n//             eventName: 'click',\n//             event: (e) => {\n//                 e.preventDefault();\n//                 cleanError();\n//\n//                 const email = UserViewInstance.getValue(formModel.email);\n//                 const password = UserViewInstance.getValue(formModel.password);\n//                 const repeatedPassword = UserViewInstance.getValue(formModel.repeatedPassword);\n//\n//                 try {\n//                     if (isVoid(email) || !isValid(email, options.regexObject.email)) {\n//                         manageError('useris-error-msg');\n//                         return;\n//                     }\n//\n//                     if (isVoid(password) || !isValid(password, options.regexObject.password)) {\n//                         manageError('useris-error-password');\n//                         return;\n//                     }\n//\n//                     if (isVoid(repeatedPassword)) {\n//                         manageError('useris-error-password2');\n//                         return;\n//                     }\n//\n//                     if (password !== repeatedPassword) {\n//                         manageError('useris-error-password-match');\n//                         return;\n//                     }\n//\n//                     callbackObject.onSuccess({\n//                         email,\n//                         password,\n//                         repeatedPassword,\n//                         type: 'email'\n//                     });\n//                 } catch (error) {\n//                     manageError(error);\n//                 }\n//             }\n//         });\n//\n//         UserViewInstance.attachEvent(cancelButton, {\n//             eventName: 'click',\n//             event: (e) => {\n//                 e.preventDefault();\n//                 UserViewInstance.setValue(formModel.email, '');\n//                 UserViewInstance.setValue(formModel.password, '');\n//                 UserViewInstance.setValue(formModel.repeatedPassword, '');\n//             }\n//         });\n//\n//         if (typeof callbackObject.onAttachedEvent === 'function') {\n//             callbackObject.onAttachedEvent({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//     }).catch((error) => {\n//         manageError(error);\n//     });\n// };\n","import { cleanError, manageError } from '../../errorManager';\nimport { isValid, isVoid } from '../../validation';\nimport Method from '../Method';\n\nconst formModel = {\n    buttonChange: 'frmChangePsw',\n    buttonCancelChangePsw: 'frmChangePswReturn',\n    oldPassword: 'OldPassword',\n    password: 'password',\n    oldPasswordSwitchEye: 'change_psw_old_password_switch_type',\n    newPasswordSwitchEye: 'change_psw_password_switch_type'\n};\n\n/**\n * @memberOf Useris\n * @function changePassword\n *\n * @description Validate and recognize the object to make the user change its password.\n *\n * It must be used with the **newtonsmartchangepassword** template.\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {Object} [options.regexObject={}]\n * **Optionals** Contains all the regular expressions for input validation\n * (msisdn, pin, email, password and generic regex are allowed)\n * @param {String} [options.acccess_token='']\n * **Optionals** if true, the tmpl calls will be called with the params access_token filled\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicall)\n * @param {Object} callbackObject Manage the success and error callback\n * @param {function} [callbackObject.onSuccess='no-default']\n * Success callback (code managed by the app)\n * @param {function} [callbackObject.onCancel='no-default']\n * Cancel callback (code managed by the app)\n * @param {function} [callbackObject.onError='no-default']\n * Error callback (code managed by the app)\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n *\n * @example\n *  Useris.changePassword({\n *      element: document.getElementById('elementId'),\n *  }, {\n *      onSuccess: function(userCredentials){\n *          console.log(userCredentials);\n *          callsToNewtonAdapter.changePassword(userCredentials);\n *      },\n *      onCancel: function(){\n *          window.history.back();\n *      },\n *      onError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template loaded', tmplInfo);\n *      }\n *  });\n *\n * @returns {object}\n * <pre>\n *  {\n *      oldPassword: string,\n *      newPassword: string,\n *      repeatedPassword: string\n *  }\n * </pre>\n */\nexport default class ChangePassword extends Method {\n    init = (options) => {\n        this.smartsectionObj = {\n            subsection: 'newtonsmartchangepassword',\n            loadForm: options.element || false,\n            access_token: options.access_token || '',\n            doNotLoad: options.doNotLoad || false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        const changePasswordButton = this.UserViewInstance\n            .getElement(formModel.buttonChange);\n        const buttonCancelChangePsw = this.UserViewInstance\n            .getElement(formModel.buttonCancelChangePsw);\n        const oldPasswordSwitchEye = this.UserViewInstance\n            .getElement(formModel.oldPasswordSwitchEye);\n        const newPasswordSwitchEye = this.UserViewInstance\n            .getElement(formModel.newPasswordSwitchEye);\n\n        if (changePasswordButton) {\n            this.UserViewInstance.attachEvent(changePasswordButton, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    cleanError();\n\n                    const oldPassword = this.UserViewInstance.getValue(formModel.oldPassword);\n                    const newPassword = this.UserViewInstance.getValue(formModel.password);\n\n                    try {\n                        if (isVoid(oldPassword)) {\n                            manageError('useris-error-old-password');\n                            return;\n                        }\n\n                        if (isVoid(newPassword)) {\n                            manageError('useris-error-password');\n                            return;\n                        }\n\n                        if (oldPassword === newPassword) {\n                            manageError('useris-error-password-not-changed');\n                            return;\n                        }\n\n                        if (!isValid(newPassword, this.regexObject.password)) {\n                            manageError('useris-error-password');\n                            return;\n                        }\n                        this.callback('onSuccess', {\n                            oldPassword,\n                            newPassword\n                        });\n                    } catch (error) {\n                        manageError(error);\n                    }\n                }\n            });\n        }\n\n        if (oldPasswordSwitchEye) {\n            this.UserViewInstance.attachEvent(oldPasswordSwitchEye, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.UserViewInstance.switchInputType(\n                        formModel.oldPassword, oldPasswordSwitchEye.id\n                    );\n                }\n            });\n        }\n\n        if (newPasswordSwitchEye) {\n            this.UserViewInstance.attachEvent(newPasswordSwitchEye, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.UserViewInstance\n                        .switchInputType(formModel.password, newPasswordSwitchEye.id);\n                }\n            });\n        }\n\n        if (buttonCancelChangePsw) {\n            this.UserViewInstance.attachEvent(buttonCancelChangePsw, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.callback('onCancel');\n                }\n            });\n        }\n    }\n}\n\n// export const old = (options, callbackObject) => {\n//     let templateInjected = false;\n//     const smartsectionObj = {\n//         subsection: 'newtonsmartchangepassword',\n//         loadForm: options.element || false,\n//         access_token: options.access_token || '',\n//         doNotLoad: options.doNotLoad || false\n//     };\n//\n//     const { regexObject = config.get('regexObject') } = options;\n//     const UserViewInstance = new UserView();\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//\n//         errorManager.cleanError();\n//\n//         const changePasswordButton = UserViewInstance.getElement(formModel.buttonChange);\n//         const buttonCancelChangePsw = UserViewInstance\n//                  .getElement(formModel.buttonCancelChangePsw);\n//         const oldPasswordSwitchEye = UserViewInstance.getElement(formModel.oldPasswordSwitchEye);\n//         const newPasswordSwitchEye = UserViewInstance.getElement(formModel.newPasswordSwitchEye);\n//\n//         if (changePasswordButton) {\n//             UserViewInstance.attachEvent(changePasswordButton, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     errorManager.cleanError();\n//\n//                     const oldPassword = UserViewInstance.getValue(formModel.oldPassword);\n//                     const newPassword = UserViewInstance.getValue(formModel.password);\n//\n//                     try {\n//                         if (isVoid(oldPassword)) {\n//                             errorManager.manageError('useris-error-old-password');\n//                             return;\n//                         }\n//\n//                         if (isVoid(newPassword)) {\n//                             errorManager.manageError('useris-error-password');\n//                             return;\n//                         }\n//\n//                         if (oldPassword === newPassword) {\n//                             errorManager.manageError('useris-error-password-not-changed');\n//                             return;\n//                         }\n//\n//                         if (!isValid(newPassword, regexObject.password)) {\n//                             errorManager.manageError('useris-error-password');\n//                             return;\n//                         }\n//\n//                         callbackObject.onSuccess({\n//                             oldPassword,\n//                             newPassword\n//                         });\n//                     } catch (error) {\n//                         errorManager.manageError(error);\n//                     }\n//                 }\n//             });\n//         }\n//\n//         if (oldPasswordSwitchEye) {\n//             UserViewInstance.attachEvent(oldPasswordSwitchEye, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     UserViewInstance.switchInputType(\n//                         formModel.oldPassword, oldPasswordSwitchEye.id\n//                     );\n//                 }\n//             });\n//         }\n//\n//         if (newPasswordSwitchEye) {\n//             UserViewInstance.attachEvent(newPasswordSwitchEye, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     UserViewInstance\n//                          .switchInputType(formModel.password, newPasswordSwitchEye.id);\n//                 }\n//             });\n//         }\n//\n//         if (buttonCancelChangePsw) {\n//             UserViewInstance.attachEvent(buttonCancelChangePsw, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     callbackObject.onCancel();\n//                 }\n//             });\n//         }\n//     }).catch((error) => {\n//         errorManager.manageError(error);\n//     });\n// };\n","import Api from '../../api';\nimport { manageError, cleanError } from '../../errorManager';\nimport { isValid, isVoid } from '../../validation';\nimport config from '../../config';\nimport global from '../../global';\nimport Method from '../Method';\n\nconst formModel = {\n    forgotButton: 'forgotbutton',\n    username: 'username',\n    phone_number: 'phone_number'\n};\n\n/**\n * @memberOf Useris\n * @function forgot\n *\n * @description Validate and recognize how to send the link of reset password (msisdn or mail).\n *\n * It must be used with the **smartforgot** template;\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {Object} [options.regexObject='']\n * **Optionals** Contains all the regular expressions for input validation\n * (msisdn, pin, email, password and generic regex are allowed)\n * @param {String} [options.acccess_token=''] **Optionals** if true,\n * the tmpl calls will be called with the params access_token filled\n * @param {String} [options.smsTemplate=''] **Optionals** if set,\n * will take the sms template to recover pin\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicall)\n * @param {Object} callbackObject Manage the success and error callback\n * @param {function} [callbackObject.onSuccess='no-default']\n * Success callback (code managed by the app)\n * @param {function} [callbackObject.onError='no-default'] Error callback (code managed by the app)\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n *\n * @example\n *  Useris.forgot({\n *      element: document.getElementById('elementId'),\n *      regexObject: {\n *          msidn: '',\n *          pin: '',\n *          email: '',\n *          password: '',\n *          generic: '',\n *          genericPassword: ''\n *      }\n *  }, {\n *      onSuccess: function(userCredentials){\n *          console.log(userCredentials);\n *          callsToNewtonAdapter.forgot(userCredentials);\n *      },\n *      onError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template loaded', tmplInfo);\n *      }\n *  });\n *\n *  @returns {object}\n *  **Msisdn case:**\n *  <pre>\n *      {\n *          msisdn: string\n *      }\n *  </pre>\n *  **Email case:**\n *  <pre>\n *      {\n *          email: string\n *      }\n *  </pre>\n */\nexport default class Forgot extends Method {\n    init = (options) => {\n        this.smartsectionObj = {\n            subsection: 'smartforgot',\n            loadForm: options.element || false,\n            access_token: options.access_token || '',\n            doNotLoad: options.doNotLoad || false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        const forgotButton = this.UserViewInstance.getElement(formModel.forgotButton);\n\n        this.UserViewInstance.attachEvent(forgotButton, {\n            eventName: 'click',\n            event: (e) => {\n                e.preventDefault();\n                cleanError();\n\n                let username = this.UserViewInstance.getValue(formModel.username);\n                const phoneNumber = this.UserViewInstance.getElement(formModel.phone_number);\n\n                try {\n                    if (isVoid(username)) {\n                        manageError('useris-error-msg');\n                        return;\n                    }\n\n                    if (isValid(username, this.regexObject.msisdn)) {\n                        if (config.get('enableAliasCheck')) {\n                            if (username.indexOf('+') >= 0) {\n                                username = username.replace('+', '');\n                            }\n\n                            Api.getAlias({\n                                msisdn: username\n                            }).then((response) => {\n                                if (response && response.alias) {\n                                    if (phoneNumber) {\n                                        phoneNumber.value = response.alias;\n                                    }\n\n                                    const objToOnSuccess = {\n                                        alias: response.alias\n                                    };\n\n                                    if (typeof this.options.smsTemplate !== 'undefined' && this.options.smsTemplate !== '') {\n                                        objToOnSuccess.smsTemplate = this.options.smsTemplate;\n                                    }\n                                    this.callback('onSuccess', objToOnSuccess);\n                                } else {\n                                    global.logger.log('Empty Alias');\n                                    manageError('useris-error-msg');\n                                }\n                            }).catch((error) => {\n                                manageError(error);\n                            });\n                        } else {\n                            if (phoneNumber) {\n                                phoneNumber.value = username;\n                            }\n\n                            const objToOnSuccess = {\n                                msisdn: username\n                            };\n\n                            if (typeof this.options.smsTemplate !== 'undefined' && this.options.smsTemplate !== '') {\n                                objToOnSuccess.smsTemplate = this.options.smsTemplate;\n                            }\n                            this.callback('onSuccess', objToOnSuccess);\n                        }\n                    } else if (isValid(username, this.regexObject.email)) {\n                        this.callback('onSuccess', { email: username });\n                    } else {\n                        manageError('useris-error-msg');\n                    }\n                } catch (error) {\n                    manageError(error);\n                }\n            }\n        });\n    }\n}\n\n// export const old = (options, callbackObject) => {\n//     let templateInjected = false;\n//     const smartsectionObj = {\n//         subsection: 'smartforgot',\n//         loadForm: options.element || false,\n//         access_token: options.access_token || '',\n//         doNotLoad: options.doNotLoad || false\n//     };\n//\n//     const { regexObject = config.get('regexObject') } = options;\n//     const UserViewInstance = new UserView();\n//\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm && !smartsectionObj.doNotLoad) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//\n//         cleanError();\n//\n//         const forgotButton = UserViewInstance.getElement(formModel.forgotButton);\n//\n//         UserViewInstance.attachEvent(forgotButton, {\n//             eventName: 'click',\n//             event: (e) => {\n//                 e.preventDefault();\n//                 cleanError();\n//\n//                 let username = UserViewInstance.getValue(formModel.username);\n//                 const phoneNumber = UserViewInstance.getElement(formModel.phone_number);\n//\n//                 try {\n//                     if (isVoid(username)) {\n//                         manageError('useris-error-msg');\n//                         return;\n//                     }\n//\n//                     if (isValid(username, regexObject.msisdn)) {\n//                         if (config.get('enableAliasCheck')) {\n//                             if (username.indexOf('+') >= 0) {\n//                                 username = username.replace('+', '');\n//                             }\n//\n//                             Api.getAlias({\n//                                 msisdn: username\n//                             }).then((response) => {\n//                                 if (response && response.alias) {\n//                                     if (phoneNumber) {\n//                                         phoneNumber.value = response.alias;\n//                                     }\n//\n//                                     const objToOnSuccess = {\n//                                         alias: response.alias\n//                                     };\n//\n//                                     if (typeof options.smsTemplate !== 'undefined'\n//                                      && options.smsTemplate !== '') {\n//                                         objToOnSuccess.smsTemplate = options.smsTemplate;\n//                                     }\n//\n//                                     callbackObject.onSuccess(objToOnSuccess);\n//                                 } else {\n//                                     global.logger.log('Empty Alias');\n//                                     manageError('useris-error-msg');\n//                                 }\n//                             }).catch((error) => {\n//                                 manageError(error);\n//                             });\n//                         } else {\n//                             if (phoneNumber) {\n//                                 phoneNumber.value = username;\n//                             }\n//\n//                             const objToOnSuccess = {\n//                                 msisdn: username\n//                             };\n//\n//                             if (typeof options.smsTemplate !== 'undefined'\n//                                  && options.smsTemplate !== '') {\n//                                 objToOnSuccess.smsTemplate = options.smsTemplate;\n//                             }\n//\n//                             callbackObject.onSuccess(objToOnSuccess);\n//                         }\n//                     } else if (isValid(username, regexObject.email)) {\n//                         callbackObject.onSuccess({ email: username });\n//                     } else {\n//                         manageError('useris-error-msg');\n//                     }\n//                 } catch (error) {\n//                     manageError(error);\n//                 }\n//             }\n//         });\n//\n//         if (typeof callbackObject.onAttachedEvent === 'function') {\n//             callbackObject.onAttachedEvent({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//     }).catch((error) => {\n//         manageError(error);\n//     });\n// };\n","import UserView from './userView';\nimport global from './global';\n\nconst UserViewInstance = new UserView();\nconst feedbackStructure = {\n    container: 'user-feedback',\n    message: 'user-feedback-message',\n    icon: 'user-feedback-icon',\n    close: 'user-feedback-close',\n    link: 'user-feedback-link'\n};\nconst feedbackType = {\n    positive: 'form__message--pop-up-positive',\n    generic: 'form__message--pop-up-generic',\n    error: 'form__message--pop-up-error'\n};\n\nlet popupShowed = false;\n\n\nconst container = UserViewInstance.getElement(feedbackStructure.container);\nconst feedbackMessage = UserViewInstance.getElement(feedbackStructure.message);\nconst feedbackIcon = UserViewInstance.getElement(feedbackStructure.icon);\nconst feedbackLink = UserViewInstance.getElement(feedbackStructure.link);\nconst currentObj = {\n    icon: '',\n    container: '',\n    link: {\n        href: '',\n        text: ''\n    }\n};\n\nlet feedbackTimeout = false,\n    fadeTimeout = false;\n\nconst cleanFeedbackTimeout = () => {\n    if (feedbackTimeout) {\n        clearTimeout(feedbackTimeout);\n        feedbackTimeout = false;\n    }\n};\n\nconst cleanFadeTimeout = () => {\n    if (fadeTimeout) {\n        clearTimeout(fadeTimeout);\n        fadeTimeout = false;\n    }\n};\n\nconst closePopup = () => {\n    if (popupShowed) {\n        feedbackMessage.innerHTML = '';\n        feedbackIcon.className = currentObj.icon;\n        container.className = currentObj.container;\n\n        if (feedbackLink.getAttribute('href')) {\n            feedbackLink.setAttribute('href', '');\n            feedbackLink.innerText = '';\n            feedbackLink.style.display = 'none';\n        }\n\n        container.style.display = 'none';\n        popupShowed = false;\n    } else {\n        global.logger.warn('Useris - Any user feedback to close!');\n    }\n};\n\nexport const showUsrFeedback = (obj) => {\n    if (popupShowed) {\n        cleanFeedbackTimeout();\n        cleanFadeTimeout();\n        closePopup();\n    }\n\n    currentObj.icon = feedbackIcon.className;\n    currentObj.container = container.className;\n    currentObj.link.href = feedbackLink.getAttribute('href');\n    currentObj.link.text = feedbackLink.innerText;\n\n    if (typeof obj !== 'undefined') {\n        if (typeof obj.message !== 'undefined') {\n            feedbackMessage.innerHTML = obj.message;\n        }\n\n        if (typeof obj.feedbackType !== 'undefined') {\n            container.className += ` ${feedbackType[obj.feedbackType]}`;\n        }\n\n        if (typeof obj.icon !== 'undefined') {\n            feedbackIcon.className += ` ${obj.icon}`;\n        }\n\n        if (typeof obj.link !== 'undefined') {\n            feedbackLink.style.display = 'block';\n\n            feedbackLink.href = obj.link.href;\n            feedbackLink.innerText = obj.link.text;\n        }\n\n        container.style.display = 'block';\n        popupShowed = true;\n\n        if ((obj.fadeTimeout > 0) && (obj.temporizedFor > 0)) {\n            fadeTimeout = setTimeout(() => {\n                container.className += ' fade';\n                feedbackTimeout = setTimeout(closePopup, obj.fadeTimeout);\n            }, obj.temporizedFor - obj.fadeTimeout);\n        } else if (typeof obj.temporizedFor !== 'undefined') {\n            feedbackTimeout = setTimeout(closePopup, obj.temporizedFor);\n        }\n    } else {\n        global.logger.warn('Useris - Nothing to show. The given object is: ', obj);\n    }\n};\n\nexport const closeUserFeedback = () => {\n    cleanFeedbackTimeout();\n    cleanFadeTimeout();\n    closePopup();\n};\n","import { closeUserFeedback } from '../../popupManager';\nimport config from '../../config';\nimport global from '../../global';\n\n/**\n * @memberOf Useris\n * @function init\n * @description Initialization method of Useris.\n * Please note thtat this method has to be called\n * before any other methods and you should pass a configuration object.\n *\n * @param {Object} options configuration object\n * @param {Object} [options.regexObject]\n * Contains all the regular expressions for input validation\n * (msisdn, pin, email, password and generic regex are allowed)\n * @param {Object} [options.logger] A different logger by console (optional)\n * @param {string} [options.domain=''] webapp domain\n * @param {string} [options.country=''] country of the webapp\n * @param {boolean} [options.enableAliasCheck=0] to activate the alias features (INDIAN case)\n * @param {string} [options.aliasCheckUrl=''] api url of the alias\n * @param {boolean} [options.disablePinInput=0] enable/disable the input PIN for the login (PT case)\n * @param {boolean} [options.hybridnews=0] used in hybrid environment\n * @param {string} [options.store_type=''] used in hybrid environment\n * @param {string} [options.apikey=''] api key of the webapp\n * @param {boolean} [options.enableGoogleCheckbox=0]\n * enable/disable the Google Checkbox during the login flow\n * @param {boolean} [options.identityFbEnabled=0] enable/disable Facebook users\n * @param {boolean} [options.emailIdentityEnabled=0] enable/disable the email identity\n * @param {boolean} [options.redirectRegisterToMipAtStart=0]\n * enable/disable the smstemplate on addidentity\n * @param {boolean} [options.operatorList=0] enable/disable the operator login selection\n * @param {boolean} [options.addUsernameEnabled=0] enable/disable the add username feature\n *\n * @example\n *      Useris.init({\n *          domain: 'www.domain.com',\n *          country: 'ww',\n *          enableAliasCheck: 0,\n *          aliasCheckUrl: 'http://www.aliascheckurl.api/',\n *          disablePinInput: 0,\n *          hybridnews: 0,\n *          store_type: 'itunes',\n *          apikey: api_key,\n *          enableGoogleCheckbox: 0,\n *          emailIdentityEnabled: 1,\n *          identityFbEnabled: 1,\n *          redirectToMipRegisterAtStart: 0,\n *          logger: console,\n *          regexObject: {\n *              msisdn: '.',\n *              pin: '.',\n *              email: '.',\n *              password: '.',\n *              generic: '.',\n *              genericPassword: '.'\n *          }\n *      });\n */\nexport default (options) => {\n    const regexObject = {\n        msisdn: '.',\n        pin: '.',\n        email: '.',\n        password: '.',\n        generic: '.',\n        genericPassword: '.'\n    };\n\n    const popupClose = document.getElementById('user-feedback-close');\n\n    if (popupClose) {\n        popupClose.addEventListener('click', closeUserFeedback);\n    }\n\n    if (typeof options !== 'undefined') {\n        if (typeof options.regexObject === 'undefined') {\n            options.regexObject = regexObject;\n        }\n\n        if (typeof options.aliasCheckUrl !== 'undefined') {\n            if (options.aliasCheckUrl.indexOf('?') > 0) {\n                options.aliasCheckUrl = options.aliasCheckUrl.split('?')[0]; // eslint-disable-line prefer-destructuring\n            }\n        }\n\n        if (typeof options.logger !== 'undefined') {\n            global.setLogger(options.logger);\n        }\n    }\n    config.init(options);\n};\n","import { isVoid, isValid } from './validation';\nimport config from './config';\nimport UserView from './userView';\n\nexport default (username, password, regexObject) => {\n    const UserViewInstance = new UserView();\n\n    if (regexObject) {\n        if (isVoid(username)) {\n            throw new Error('useris-error-msg');\n        }\n\n        if (config.get('enableGoogleCheckbox')) {\n            const element = UserViewInstance.getElement('terms');\n            if (element && !element.checked) {\n                throw new Error('useris-error-empty-terms');\n            }\n        }\n\n        if (isValid(username, regexObject.msisdn)) { // MSISDN\n            if (config.get('operatorList')) {\n                const operatorArray = UserViewInstance.getElementsByName('operator');\n\n                if (!UserViewInstance.getCheckedRadioValue(operatorArray)) {\n                    throw new Error('useris-error-op');\n                }\n            }\n\n            if (config.get('disablePinInput')) {\n                return 'MSISDN';\n            }\n\n            if (isVoid(password)) {\n                throw new Error('useris-error-pin');\n            }\n\n            if (!isValid(password, regexObject.pin)) {\n                throw new Error('useris-error-pin');\n            }\n\n            return 'MSISDN';\n        }\n        if (isValid(username, regexObject.email) && config.get('emailIdentityEnabled')) { // EMAIL\n            if (isVoid(password)) {\n                throw new Error('useris-error-pin');\n            }\n\n            if (!isValid(password, regexObject.password)) {\n                throw new Error('useris-error-pin');\n            }\n\n            return 'EMAIL';\n        }\n        if (isValid(username, regexObject.generic) && config.get('emailIdentityEnabled')) { // GENERIC\n            if (isVoid(password)) {\n                throw new Error('useris-error-pin');\n            }\n\n            if (!isValid(password, regexObject.genericPassword)) {\n                throw new Error('useris-error-pin');\n            }\n\n            return 'GENERIC';\n        }\n        throw new Error('useris-error-msg');\n    } else {\n        throw new Error('errorNoRegex');\n    }\n};\n","\nexport default {\n    getQueryParams() {\n        const obj = {};\n        let url = window.location.href;\n        if (url.indexOf('?') >= 0) {\n            url = url.split('?')[1]; // eslint-disable-line prefer-destructuring\n            url = url.split('&');\n            Object.values(url).forEach((elem) => {\n                obj[elem.split('=')[0]] = elem.split('=')[1]; // eslint-disable-line prefer-destructuring\n            });\n        }\n        return obj;\n    }\n};","import Api from '../../api';\nimport recognize from '../../automaticRecognition';\nimport config from '../../config';\nimport { cleanErrorEvo, manageError } from '../../errorManager';\nimport { isValid } from '../../validation';\nimport utility from '../../utility';\nimport global from '../../global';\nimport Method from '../Method';\n\nconst formModel = {\n    container: 'smartlogin-container',\n    username: 'username',\n    password: 'passw',\n    switchEye: 'login_pass_switch_type',\n    loginButton: 'frmbutton',\n    fbConnect: 'fb_connect',\n    operatorChoice: 'operator'\n};\n\n/**\n * @memberOf Useris\n * @function login\n *\n * @description Validate and recognize the login object\n * to be sent to the newton adapter for the login.\n *\n * It must be used with the **smartlogin** template.\n *\n * It also manage the facebook login button.\n * Please note that you have to append the facebook access token\n * once you have logged in with facebook before passing useris response to newton.\n * This why we have decided to leave Useris unaware of Facebook.\n *\n * To allow the facebook integration\n * remember that you have to create and configurate a facebook app for your web applications.\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {Object} [options.regexObject={}]\n * **Optional** Contains all the regular expressions for input validation\n * (msisdn, pin, email, password and generic regex are allowed)\n * @param {String} [options.acccess_token=''] **Optionals** if true,\n * the tmpl calls will be called with the params access_token filled\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicall)\n * @param {Object} callbackObject Manage the success and error callback\n * @param {function} [callbackObject.onSuccess='no-default']\n * Success callback (code managed by the app)\n * @param {function} [callbackObject.onError='no-default'] Error callback (code managed by the app)\n * @param {function} [callbackObject.onFacebookSuccess='no-default']\n * Facebook success callback (code managed by the app).\n * You have to ovveride the access_token params before passing it to newton\n * @param {function} [callbackObject.onFacebookError='no-default']\n * Facebook error callback (code managed by the app)\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n\n *\n * @example\n *  Useris.login({\n *      element: document.getElementById('elementId'),\n *      regexObject: {\n *          msidn: '',\n *          pin: '',\n *          email: '',\n *          password: '',\n *          generic: '',\n *          genericPassword: ''\n *      }\n *  }, {\n *      onSuccess: function(userCredentials){\n *          console.log(userCredentials);\n *          callsToNewtonAdapter.login(userCredentials);\n *      },\n *      onError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onFacebookSuccess: function(userCredentials){\n *          console.log(userCredentials);\n *          FB.login(function(fbResponse){\n *              if(fbResponse.status === 'connected'){\n *                  // override the access_token params\n *                  userCredentials.access_token = FB.getAccessToken();\n *                  callsToNewtonAdapter.login(userCredentials);\n *              }\n *          }\n *      },\n *      onFacebookError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template loaded', tmplInfo);\n *      }\n *  });\n *\n * @returns {object}\n * **Msisdn case:**\n * <pre>\n *     {\n *         msisdn: string,\n *         pin: string,\n *         type: 'msisdn',\n *         logged: boolean\n *     }\n * </pre>\n *\n * **Email case:**\n * <pre>\n *     {\n *         email: string,\n *         password: string,\n *         type: 'email',\n *         logged: boolean\n *     }\n * </pre>\n *\n * **Generic case:**\n * <pre>\n *     {\n *         username: string,\n *         password: string,\n *         type: 'generic',\n *         logged: boolean\n *     }\n * </pre>\n */\n\nexport default class Login extends Method {\n    init = (options) => {\n        this.queryParams = utility.getQueryParams();\n        this.smartsectionObj = {\n            subsection: 'smartlogin',\n            loadForm: options.element || false,\n            sentpin: this.queryParams.sentpin || 0,\n            access_token: options.access_token || '',\n            doNotLoad: options.doNotLoad || false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        const usernameInput = this.UserViewInstance.getElement(formModel.username);\n        const passwordInput = this.UserViewInstance.getElement(formModel.password);\n        const switchEye = this.UserViewInstance.getElement(formModel.switchEye);\n        const operatorChoiceArray = config.get('operatorList') ? this.UserViewInstance.getElementsByName(formModel.operatorChoice) : false;\n        const loginButton = this.UserViewInstance.getElement(formModel.loginButton);\n        let facebookButton = false;\n        if (config.get('identityFbEnabled')) {\n            facebookButton = this.UserViewInstance.getElement(formModel.fbConnect);\n        }\n\n        this.UserViewInstance.attachEvent(loginButton, {\n            eventName: 'click',\n            event: (e) => {\n                e.preventDefault();\n                cleanErrorEvo();\n\n                let username = usernameInput.value;\n                const password = passwordInput.value;\n\n                try {\n                    switch (recognize(username, password, this.regexObject)) {\n                    case 'MSISDN':\n                        if (config.get('enableAliasCheck')) {\n                            if (username.indexOf('+') >= 0) {\n                                username = username.replace('+', '');\n                            }\n\n                            Api.getAlias({\n                                msisdn: username\n                            }).then((response) => {\n                                this.callback('onSuccess', {\n                                    alias: response.alias,\n                                    pin: password,\n                                    type: 'alias',\n                                    logged: true\n                                });\n                            }).catch((error) => {\n                                global.logger.log('Error: Can\\'t get Alias from this username');\n                                manageError(error, formModel.container);\n                            });\n                        } else if (operatorChoiceArray) {\n                            this.callback('onSuccess', {\n                                msisdn: username,\n                                pin: password,\n                                type: 'msisdn',\n                                operator: this.UserViewInstance\n                                    .getCheckedRadioValue(operatorChoiceArray),\n                                logged: true\n                            });\n                        } else {\n                            this.callback('onSuccess', {\n                                msisdn: username,\n                                pin: password,\n                                type: 'msisdn',\n                                logged: true\n                            });\n                        }\n                        break;\n                    case 'EMAIL':\n                        this.callback('onSuccess', {\n                            password,\n                            email: username,\n                            type: 'email',\n                            logged: true\n                        });\n                        break;\n                    default:\n                        this.callback('onSuccess', {\n                            username,\n                            password,\n                            type: 'generic',\n                            logged: true\n                        });\n                        break;\n                    }\n                } catch (error) {\n                    manageError(error, formModel.container);\n                }\n            }\n        });\n\n        if (switchEye) {\n            this.UserViewInstance.attachEvent(switchEye, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.UserViewInstance.switchInputType(formModel.password, switchEye.id);\n                }\n            });\n        }\n\n        if (facebookButton) {\n            this.UserViewInstance.attachEvent(facebookButton, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.callback('onFacebookSuccess', {\n                        type: 'oauth',\n                        provider: 'facebook',\n                        logged: true\n                    });\n                }\n            });\n        }\n\n        if (!config.get('enableAliasCheck')) {\n            if (this.queryParams.msisdn) {\n                this.UserViewInstance\n                    .setValue(formModel.username, decodeURIComponent(this.queryParams.msisdn));\n            } else if (this.queryParams.email) {\n                this.UserViewInstance\n                    .setValue(formModel.username, decodeURIComponent(this.queryParams.email));\n            }\n        }\n\n        /* add on keyup event listener to disable password input for login\n            where is required just the msisdn and not the pin */\n\n        if (config.get('disablePinInput')) {\n            this.UserViewInstance.attachEvent(usernameInput, {\n                eventName: 'keyup',\n                event: () => {\n                    const isDisabled = passwordInput.disabled;\n                    const value = this.UserViewInstance.getValue(formModel.username);\n                    if (isValid(value, this.regexObject.msisdn)) {\n                        this.UserViewInstance.disable(formModel.password);\n                        this.UserViewInstance.setValue(formModel.password, '');\n                    } else if (isDisabled) {\n                        passwordInput.disabled = false;\n                    }\n                }\n            });\n        }\n    }\n}\n\n// export const old = (options, callbackObject) => {\n//     const queryParams = utility.getQueryParams();\n//     let templateInjected = false;\n//\n//     const smartsectionObj = {\n//         subsection: 'smartlogin',\n//         loadForm: options.element || false,\n//         sentpin: queryParams.sentpin || 0,\n//         access_token: options.access_token || '',\n//         doNotLoad: options.doNotLoad || false\n//     };\n//\n//     const { regexObject = config.get('regexObject') } = options;\n//     // you can return the api as promise\n//     const UserViewInstance = new UserView();\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected\n//             });\n//         }\n//\n//         errorManager.cleanErrorEvo();\n//\n//         const usernameInput = UserViewInstance.getElement(formModel.username);\n//         const passwordInput = UserViewInstance.getElement(formModel.password);\n//         const switchEye = UserViewInstance.getElement(formModel.switchEye);\n//         const operatorChoiceArray = config.get('operatorList')\n//              ? UserViewInstance.getElementsByName(formModel.operatorChoice) : false;\n//         const loginButton = UserViewInstance.getElement(formModel.loginButton);\n//\n//         let facebookButton = false;\n//\n//         if (config.get('identityFbEnabled')) {\n//             facebookButton = UserViewInstance.getElement(formModel.fbConnect);\n//         }\n//\n//         UserViewInstance.attachEvent(loginButton, {\n//             eventName: 'click',\n//             event: (e) => {\n//                 e.preventDefault();\n//                 errorManager.cleanErrorEvo();\n//\n//                 let username = usernameInput.value;\n//                 const password = passwordInput.value;\n//\n//                 try {\n//                     switch (recognize(username, password, regexObject)) {\n//                     case 'MSISDN':\n//                         if (config.get('enableAliasCheck')) {\n//                             if (username.indexOf('+') >= 0) {\n//                                 username = username.replace('+', '');\n//                             }\n//\n//                             Api.getAlias({\n//                                 msisdn: username\n//                             }).then((response) => {\n//                                 callbackObject.onSuccess({\n//                                     alias: response.alias,\n//                                     pin: password,\n//                                     type: 'alias',\n//                                     logged: true\n//                                 });\n//                             }).catch((error) => {\n//                                 global.logger.log('Error: Can\\'t get Alias from this username');\n//                                 errorManager.manageError(error, formModel.container);\n//                             });\n//                         } else if (operatorChoiceArray) {\n//                             callbackObject.onSuccess({\n//                                 msisdn: username,\n//                                 pin: password,\n//                                 type: 'msisdn',\n//                                 operator: UserViewInstance\n//                                     .getCheckedRadioValue(operatorChoiceArray),\n//                                 logged: true\n//                             });\n//                         } else {\n//                             callbackObject.onSuccess({\n//                                 msisdn: username,\n//                                 pin: password,\n//                                 type: 'msisdn',\n//                                 logged: true\n//                             });\n//                         }\n//                         break;\n//                     case 'EMAIL':\n//                         callbackObject.onSuccess({\n//                             password,\n//                             email: username,\n//                             type: 'email',\n//                             logged: true\n//                         });\n//                         break;\n//                     default:\n//                         callbackObject.onSuccess({\n//                             username,\n//                             password,\n//                             type: 'generic',\n//                             logged: true\n//                         });\n//                         break;\n//                     }\n//                 } catch (error) {\n//                     errorManager.manageError(error, formModel.container);\n//                 }\n//             }\n//         });\n//\n//         if (switchEye) {\n//             UserViewInstance.attachEvent(switchEye, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     UserViewInstance.switchInputType(formModel.password, switchEye.id);\n//                 }\n//             });\n//         }\n//\n//         if (facebookButton) {\n//             UserViewInstance.attachEvent(facebookButton, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     callbackObject.onFacebookSuccess({\n//                         type: 'oauth',\n//                         provider: 'facebook',\n//                         logged: true\n//                     });\n//                 }\n//             });\n//         }\n//\n//         if (!config.get('enableAliasCheck')) {\n//             if (queryParams.msisdn) {\n//                 UserViewInstance\n//                     .setValue(formModel.username, decodeURIComponent(queryParams.msisdn));\n//             } else if (queryParams.email) {\n//                 UserViewInstance\n//                     .setValue(formModel.username, decodeURIComponent(queryParams.email));\n//             }\n//         }\n//\n//         /* add on keyup event listener to disable password input for login\n//             where is required just the msisdn and not the pin */\n//\n//         if (config.get('disablePinInput')) {\n//             UserViewInstance.attachEvent(usernameInput, {\n//                 eventName: 'keyup',\n//                 event: () => {\n//                     const isDisabled = passwordInput.disabled;\n//                     const value = UserViewInstance.getValue(formModel.username);\n//                     if (isValid(value, regexObject.msisdn)) {\n//                         UserViewInstance.disable(formModel.password);\n//                         UserViewInstance.setValue(formModel.password, '');\n//                     } else if (isDisabled) {\n//                         passwordInput.disabled = false;\n//                     }\n//                 }\n//             });\n//         }\n//     }).catch((error) => {\n//         errorManager.manageError(error);\n//     });\n// };\n","import { manageError, cleanError } from '../../errorManager';\nimport { isVoid } from '../../validation';\nimport Method from '../Method';\n\nconst formModel = {\n    editNicknameButton: 'edit_nickname',\n    setUsernameButton: 'set_username',\n    cancelEditButton: 'cancel_edit',\n    editNicknameForm: 'edit_nickname_status_form',\n    nicknameStatusForm: 'nickname_status_form',\n    nicknameStatus: 'nickname_status',\n    nicknameInput: 'name'\n};\n\n/**\n * @memberOf Useris\n * @function profile\n *\n * @description Validate and expose function for profile editing\n *\n * It must be used with the **newtonsmartstatusprofile** template.\n * CallbackSuccess must be called inside onSaveNickname to update the form,\n * passing the newNickname value provided by useris or your call.\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {String} [options.acccess_token=''] **Optionals** if true,\n * the tmpl calls will be called with the params access_token filled\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicalls)\n * @param {Object} callbackObject Manage the success and error callback\n * @param {function} [callbackObject.onSaveNickname='no-default']\n * Success callback (code managed by the app)\n * @param {function} [callbackObject.onError='no-default'] Error callback (code managed by the app)\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n *\n * @example\n *  Useris.profile({\n *      element: document.getElementById('elementId'),\n *      access_token: 'abcdefgh1234567890'\n *  }, {\n *      onSaveNickname: function(userCredentials){\n *          console.log(userCredentials);\n *          updateUserProps(userCredentials);\n *      },\n *      onError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template loaded', tmplInfo);\n *      }\n *  });\n *\n *  @returns {object}\n *  <pre>\n *      {\n *          newNickname: string,\n *          oldNickname: string,\n *          callbackSuccess: function(newNickname),\n *      }\n *  </pre>\n */\n\nexport default class Profile extends Method {\n    init = (options) => {\n        this.smartsectionObj = {\n            subsection: 'newtonsmartstatusprofile',\n            loadForm: options.element ? options.element : false,\n            access_token: options.access_token ? options.access_token : '',\n            doNotLoad: options.doNotLoad ? options.doNotLoad : false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        const editNicknameButton = this.UserViewInstance.getElement(formModel.editNicknameButton);\n        const cancelEditButton = this.UserViewInstance.getElement(formModel.cancelEditButton);\n        const setUsernameButton = this.UserViewInstance.getElement(formModel.setUsernameButton);\n        const nicknameStatusForm = this.UserViewInstance.getElement(formModel.nicknameStatusForm);\n        const editNicknameForm = this.UserViewInstance.getElement(formModel.editNicknameForm);\n        const nicknameInput = this.UserViewInstance.getElement(formModel.nicknameInput);\n        const nicknameStatus = this.UserViewInstance.getElement(formModel.nicknameStatus);\n\n        let oldNickname = '';\n\n        if (editNicknameButton) {\n            this.UserViewInstance.attachEvent(editNicknameButton, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    cleanError();\n                    if (editNicknameForm && nicknameStatusForm) {\n                        oldNickname = nicknameInput.value;\n                        editNicknameForm.style.display = 'block';\n                        nicknameStatusForm.style.display = 'none';\n                    }\n                }\n            });\n        }\n\n        if (cancelEditButton) {\n            this.UserViewInstance.attachEvent(cancelEditButton, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    cleanError();\n                    if (editNicknameForm && nicknameStatusForm) {\n                        nicknameInput.value = oldNickname;\n                        editNicknameForm.style.display = 'none';\n                        nicknameStatusForm.style.display = 'block';\n                    }\n                }\n            });\n        }\n\n        if (setUsernameButton) {\n            this.UserViewInstance.attachEvent(setUsernameButton, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    cleanError();\n                    const newNicknameTemp = nicknameInput.value;\n                    if (isVoid(nicknameInput.value)) {\n                        manageError('useris-username-error');\n                        return;\n                    }\n\n                    this.callback('onSaveNickname', {\n                        oldNickname,\n                        newNickname: newNicknameTemp,\n                        callbackSuccess: (newNickname) => {\n                            nicknameStatus.innerText = newNickname;\n                            editNicknameForm.style.display = 'none';\n                            nicknameStatusForm.style.display = 'block';\n                        }\n                    });\n                }\n            });\n        }\n    }\n}\n\n// export const old = (options, callbackObject) => {\n//     let templateInjected = false;\n//\n//     const smartsectionObj = {\n//         subsection: 'newtonsmartstatusprofile',\n//         loadForm: options.element ? options.element : false,\n//         access_token: options.access_token ? options.access_token : '',\n//         doNotLoad: options.doNotLoad ? options.doNotLoad : false\n//     };\n//\n//     const UserViewInstance = new UserView();\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected\n//             });\n//         }\n//\n//         errorManager.cleanError();\n//\n//         const editNicknameButton = UserViewInstance.getElement(formModel.editNicknameButton);\n//         const cancelEditButton = UserViewInstance.getElement(formModel.cancelEditButton);\n//         const setUsernameButton = UserViewInstance.getElement(formModel.setUsernameButton);\n//\n//         const nicknameStatusForm = UserViewInstance.getElement(formModel.nicknameStatusForm);\n//         const editNicknameForm = UserViewInstance.getElement(formModel.editNicknameForm);\n//         const nicknameInput = UserViewInstance.getElement(formModel.nicknameInput);\n//         const nicknameStatus = UserViewInstance.getElement(formModel.nicknameStatus);\n//\n//         let oldNickname = '';\n//\n//         if (editNicknameButton) {\n//             UserViewInstance.attachEvent(editNicknameButton, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     errorManager.cleanError();\n//                     if (editNicknameForm && nicknameStatusForm) {\n//                         oldNickname = nicknameInput.value;\n//                         editNicknameForm.style.display = 'block';\n//                         nicknameStatusForm.style.display = 'none';\n//                     }\n//                 }\n//             });\n//         }\n//\n//         if (cancelEditButton) {\n//             UserViewInstance.attachEvent(cancelEditButton, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     errorManager.cleanError();\n//                     if (editNicknameForm && nicknameStatusForm) {\n//                         nicknameInput.value = oldNickname;\n//                         editNicknameForm.style.display = 'none';\n//                         nicknameStatusForm.style.display = 'block';\n//                     }\n//                 }\n//             });\n//         }\n//\n//         if (setUsernameButton) {\n//             UserViewInstance.attachEvent(setUsernameButton, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     errorManager.cleanError();\n//                     const newNicknameTemp = nicknameInput.value;\n//                     if (isVoid(nicknameInput.value)) {\n//                         errorManager.manageError('useris-username-error');\n//                         return;\n//                     }\n//\n//                     callbackObject.onSaveNickname({\n//                         oldNickname,\n//                         newNickname: newNicknameTemp,\n//                         callbackSuccess: (newNickname) => {\n//                             nicknameStatus.innerText = newNickname;\n//                             editNicknameForm.style.display = 'none';\n//                             nicknameStatusForm.style.display = 'block';\n//                         }\n//                     });\n//                 }\n//             });\n//         }\n//     }).catch((error) => {\n//         errorManager.manageError(error);\n//     });\n// };\n","import { cleanError, manageError } from '../../errorManager';\nimport { isValid, isVoid } from '../../validation';\nimport Method from '../Method';\n\nconst formModel = {\n    password: 'password',\n    resetButton: 'frmResetEmailPsw',\n    switchEye: 'reset_psw_password_switch_type',\n    token: 'token',\n    email: 'email'\n};\n\n/**\n * @memberOf Useris\n * @function resetPassword\n *\n * @description Validate and recognize the object to reset a user password.\n *\n *  It must be used with the **newtonsmartresetpsw** template, it works only for email identity.\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {Object} [options.regexObject={}]\n * **Optionals** Contains all the regular expressions for input validation\n * (msisdn, pin, email, password and generic regex are allowed)\n * @param {String} [options.acccess_token=''] **Optionals** if true,\n * the tmpl calls will be called with the params access_token filled\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicall)\n * @param {string} [options.token=''] Token present as url params inside the reset link\n * @param {string} [options.email=''] Email present as url params inside the reset link\n * @param {Object} callbackObject Manage the success and error callback\n * @param {function} [callbackObject.onSuccess='no-default']\n * Success callback (code managed by the app)\n * @param {function} [callbackObject.onError='no-default'] Error callback (code managed by the app)\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n\n *\n * @example\n *  Useris.resetPassword({\n *      element: document.getElementById('elementId'),\n *      regexObject: {\n *          msidn: '',\n *          pin: '',\n *          email: '',\n *          password: '',\n *          generic: '',\n *          genericPassword: ''\n *      },\n *      token: '123459325',\n *      email: 'test@email.com'\n *  }, {\n *      onSuccess: function(userCredentials){\n *          console.log(userCredentials);\n *          callsToNewtonAdapter.resetPassword(userCredentials);\n *      },\n *      onError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template loaded', tmplInfo);\n *      }\n *  });\n *\n * @returns {object}\n * <pre>\n *     {\n *         password: string,\n *         token: url_params.token,\n *         email: url_params.mail\n *     }\n * </pre>\n */\nexport default class ResetPassword extends Method {\n    init = (options) => {\n        this.token = options.token;\n        this.email = options.email;\n        this.smartsectionObj = {\n            email: this.email,\n            token: this.token,\n            subsection: 'newtonsmartresetpsw',\n            loadForm: options.element || false,\n            access_token: options.access_token || '',\n            doNotLoad: options.doNotLoad || false\n        };\n        if (this.token && this.email) {\n            this.initUserView();\n        } else {\n            throw new Error('resetPassword without token or/and email');\n        }\n    };\n\n    attachEvents = () => {\n        this.UserViewInstance.setValue(formModel.token, this.token);\n        this.UserViewInstance.setValue(formModel.email, this.email);\n\n        const resetButton = this.UserViewInstance.getElement(formModel.resetButton);\n        const switchEye = this.UserViewInstance.getElement(formModel.switchEye);\n\n        this.UserViewInstance.attachEvent(resetButton, {\n            eventName: 'click',\n            event: (e) => {\n                e.preventDefault();\n                cleanError();\n\n                const password = this.UserViewInstance.getValue(formModel.password);\n                this.token = this.UserViewInstance.getValue(formModel.token);\n\n                try {\n                    if (isVoid(password) || !isValid(password, this.regexObject.password)) {\n                        manageError('useris-error-password');\n                        return;\n                    }\n\n                    this.callback('onSuccess', {\n                        password,\n                        email: this.email,\n                        token: this.token\n                    });\n                } catch (error) {\n                    manageError(error);\n                }\n            }\n        });\n\n        if (switchEye) {\n            this.UserViewInstance.attachEvent(switchEye, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.UserViewInstance.switchInputType(formModel.password, switchEye.id);\n                }\n            });\n        }\n    }\n}\n\n// export const old = (options, callbackObject) => {\n//     let templateInjected = false;\n//     let { token } = options;\n//     const { email, regexObject = config.get('regexObject') } = options;\n//     const smartsectionObj = {\n//         email,\n//         token,\n//         subsection: 'newtonsmartresetpsw',\n//         loadForm: options.element || false,\n//         access_token: options.access_token || '',\n//         doNotLoad: options.doNotLoad || false\n//     };\n//     if (token && email) {\n//         const UserViewInstance = new UserView();\n//         UserViewInstance.init(smartsectionObj).then((data) => {\n//             if (smartsectionObj.loadForm) {\n//                 UserViewInstance.populate(options.element, data.content);\n//                 templateInjected = true;\n//             }\n//\n//             if (typeof callbackObject.onTemplateLoaded === 'function') {\n//                 callbackObject.onTemplateLoaded({\n//                     data,\n//                     templateName: smartsectionObj.subsection,\n//                     injected: templateInjected\n//                 });\n//             }\n//\n//             errorManager.cleanError();\n//\n//             UserViewInstance.setValue(formModel.token, token);\n//             UserViewInstance.setValue(formModel.email, email);\n//\n//             const resetButton = UserViewInstance.getElement(formModel.resetButton);\n//             const switchEye = UserViewInstance.getElement(formModel.switchEye);\n//\n//             UserViewInstance.attachEvent(resetButton, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     errorManager.cleanError();\n//\n//                     const password = UserViewInstance.getValue(formModel.password);\n//                     token = UserViewInstance.getValue(formModel.token);\n//\n//                     try {\n//                         if (isVoid(password) || !isValid(password, regexObject.password)) {\n//                             errorManager.manageError('useris-error-password');\n//                             return;\n//                         }\n//\n//                         callbackObject.onSuccess({\n//                             password,\n//                             token,\n//                             email\n//                         });\n//                     } catch (error) {\n//                         errorManager.manageError(error);\n//                     }\n//                 }\n//             });\n//\n//             if (switchEye) {\n//                 UserViewInstance.attachEvent(switchEye, {\n//                     eventName: 'click',\n//                     event: (e) => {\n//                         e.preventDefault();\n//                         UserViewInstance.switchInputType(formModel.password, switchEye.id);\n//                     }\n//                 });\n//             }\n//         }).catch((error) => {\n//             errorManager.manageError(error);\n//         });\n//     } else {\n//         throw new Error('resetPassword without token or/and email');\n//     }\n// };\n","import { cleanErrorEvo, manageError } from '../../errorManager';\nimport { isValid, isVoid } from '../../validation';\nimport Method from '../Method';\n\nconst formModel = {\n    buttonSignup: 'frmSignup',\n    buttonFbSignup: 'signup_fb_connect',\n    email: 'email',\n    switchEye: 'add_mail_password_switch_type',\n    password: 'password',\n    container: 'smartsignup-container'\n};\n\n/**\n * @memberOf Useris\n * @function signup\n *\n * @description Validate and recognize the object to add a new free newton identity.\n *\n * Remember to check if an identy is already present.\n * If yes you have to delete the old and add the new one\n *\n * It must be used with the **smartsignup** template;\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {Object} [options.regexObject={}]\n * **Optionals** Contains all the regular expressions for input validation\n * (msisdn, pin, email, password and generic regex are allowed)\n * @param {String} [options.acccess_token=''] **Optionals** if true,\n * the tmpl calls will be called with the params access_token filled\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicall)\n * @param {boolean} [options.ohterParams=0] params to substitute for mail\n * @param {Object} callbackObject Manage the success and error callback\n * @param {function} [callbackObject.onSuccess='no-default']\n * Success callback (code managed by the app)\n * @param {function} [callbackObject.onFbSignupSucces='no-default']\n * Facebook function to signup with fb identity (code managed by the app)\n * @param {function} [callbackObject.onError='no-default'] Error callback (code managed by the app)\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n *\n * @example\n *  Useris.signup({\n *      element: document.getElementById('elementId'),\n *      regexObject: {\n *          msidn: '',\n *          pin: '',\n *          email: '',\n *          password: '',\n *          generic: '',\n *          genericPassword: ''\n *      },\n *      access_token: '',\n *      doNotLoad: false,\n *      otherParams: '{}'\n *  }, {\n *      onSuccess: function(userCredentials){\n *          // remember to check if an identy is already present.\n *          // If yes you have to delete the old and add the new one\n *          callsToNewton.signup(userCredentials);\n *      },\n *      onFbSignupSuccess: function(userCredentials){\n *          // fb code\n *          callsToNewton.signup(userCredentials);\n *      },\n *      onError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template loaded', tmplInfo);\n *      }\n *  });\n *\n * @returns {object}\n * **Email case:**\n * <pre>\n *     {\n *         email: string,\n *         password: string\n *     }\n * </pre>\n */\nexport default class Signup extends Method {\n    init = (options) => {\n        this.smartsectionObj = {\n            subsection: 'smartsignup',\n            loadForm: options.element || false,\n            access_token: options.access_token || '',\n            doNotLoad: options.doNotLoad || false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        const buttonSignup = this.UserViewInstance.getElement(formModel.buttonSignup);\n        const buttonFbSignup = this.UserViewInstance.getElement(formModel.buttonFbSignup);\n        const switchEye = this.UserViewInstance.getElement(formModel.switchEye);\n\n        this.UserViewInstance.attachEvent(buttonSignup, {\n            eventName: 'click',\n            event: (e) => {\n                e.preventDefault();\n                cleanErrorEvo();\n\n                const email = this.UserViewInstance.getValue('email');\n                const password = this.UserViewInstance.getValue('password');\n\n                try {\n                    if (isVoid(email) || !isValid(email, this.regexObject.email)) {\n                        manageError('useris-error-msg', formModel.container);\n                        return;\n                    }\n\n                    if (isVoid(password) || !isValid(password, this.regexObject.password)) {\n                        manageError('useris-error-password', formModel.container);\n                        return;\n                    }\n\n                    this.callback('onSuccess', {\n                        email,\n                        password,\n                    });\n                } catch (error) {\n                    manageError(error, formModel.container);\n                }\n            }\n        });\n\n        if (switchEye) {\n            this.UserViewInstance.attachEvent(switchEye, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.UserViewInstance.switchInputType(formModel.password, switchEye.id);\n                }\n            });\n        }\n\n        if (buttonFbSignup) {\n            this.UserViewInstance.attachEvent(buttonFbSignup, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.callback('onFbSignupSuccess');\n                }\n            });\n        }\n    }\n}\n\n// export const old = (options, callbackObject) => {\n//     let templateInjected = false;\n//     const smartsectionObj = {\n//         subsection: 'smartsignup',\n//         loadForm: options.element || false,\n//         access_token: options.access_token || '',\n//         doNotLoad: options.doNotLoad || false\n//     };\n//     const { regexObject = config.get('regexObject') } = options;\n//     const UserViewInstance = new UserView();\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//\n//         errorManager.cleanErrorEvo();\n//\n//         const buttonSignup = UserViewInstance.getElement(formModel.buttonSignup);\n//         const buttonFbSignup = UserViewInstance.getElement(formModel.buttonFbSignup);\n//         const switchEye = UserViewInstance.getElement(formModel.switchEye);\n//\n//         UserViewInstance.attachEvent(buttonSignup, {\n//             eventName: 'click',\n//             event: (e) => {\n//                 e.preventDefault();\n//                 errorManager.cleanErrorEvo();\n//\n//                 const email = UserViewInstance.getValue('email');\n//                 const password = UserViewInstance.getValue('password');\n//\n//                 try {\n//                     if (isVoid(email) || !isValid(email, regexObject.email)) {\n//                         errorManager.manageError('useris-error-msg', formModel.container);\n//                         return;\n//                     }\n//\n//                     if (isVoid(password) || !isValid(password, regexObject.password)) {\n//                         errorManager.manageError('useris-error-password', formModel.container);\n//                         return;\n//                     }\n//\n//                     callbackObject.onSuccess({\n//                         email,\n//                         password\n//                     });\n//                 } catch (error) {\n//                     errorManager.manageError(error, formModel.container);\n//                 }\n//             }\n//         });\n//\n//         if (switchEye) {\n//             UserViewInstance.attachEvent(switchEye, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     UserViewInstance.switchInputType(formModel.password, switchEye.id);\n//                 }\n//             });\n//         }\n//\n//         if (buttonFbSignup) {\n//             UserViewInstance.attachEvent(buttonFbSignup, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     callbackObject.onFbSignupSuccess();\n//                 }\n//             });\n//         }\n//     }).catch((error) => {\n//         errorManager.manageError(error);\n//     });\n// };\n","import { cleanError, manageError } from '../../errorManager';\nimport { isValid, isVoid } from '../../validation';\nimport Method from '../Method';\n\nconst formModelLogged = {\n    unsubButton: 'unsubscribe'\n};\n\nconst formModelUnlogged = {\n    inputMsisdn: 'unsub_msisdn',\n    unsubButton: 'status_button',\n    unsubscribeUnlogged: 'unsubscribe_3g_unlogged'\n};\n\n/**\n * @memberOf Useris\n * @function smartstatus\n *\n * @description Manage the click on the unsubscription (to unsubscribe a user)\n * and facebook (to add the facebook identity) buttons, calling the relative function.\n *\n * It must be used with the **smartstatus** template;\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {String} [options.access_token=''] **Optionals** if true,\n * the tmpl calls will be called with the params access_token filled\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicall)\n * @param {Object} callbackObject Manage the success and error callback\n * @param {function} [callbackObject.onUnsubLoggedSuccess='no-default']\n * Unsubscriptions logged click callback (code managed by the app)\n * @param {function} [callbackObject.onUnsubLoggedError='no-default']\n * Unsubscriptions logged click error callback (code managed by the app)\n * @param {function} [callbackObject.onUnsubUnloggedSuccess='no-default']\n * Unsubscriptions unlogged click callback (code managed by the app)\n * @param {function} [callbackObject.onUnsubUnloggedError='no-default']\n * Unsubscriptions unlogged click error callback (code managed by the app)\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n *\n * @example\n *  Useris.smartstatus({\n *      element: document.getElementById('elem'useris-username-error'entId'),\n *      access_token: abcdefgh1234567890,\n *      regexObject: {\n *          msidn: '',\n *          pin: '',\n *          email: '',\n *          password: '',\n *          generic: '',\n *          genericPassword: ''\n *      }, {\n *      onUnsubSuccess: function(){\n *          console.log();\n *          callToUnsubscribe();\n *      },\n *      onUnsubError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template laoded', tmplInfo);\n *      }\n *  });\n */\nexport default class Smartstatus extends Method {\n    init = (options) => {\n        this.access_token = options.access_token;\n        this.smartsectionObj = {\n            subsection: 'smartstatus',\n            loadForm: options.element ? options.element : false,\n            access_token: options.access_token ? options.access_token : '',\n            doNotLoad: options.doNotLoad ? options.doNotLoad : false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        if (this.access_token) {\n            const unsubButtonLogged = this.UserViewInstance.getElement(formModelLogged.unsubButton);\n            if (unsubButtonLogged) {\n                this.UserViewInstance.attachEvent(unsubButtonLogged, {\n                    eventName: 'click',\n                    event: (e) => {\n                        e.preventDefault();\n                        this.callback('onUnsunLoggedSuccess', {\n                            IDENTITY: '',\n                            TYPE: '',\n                            ACCESS_TOKEN: this.access_token\n                        });\n                    }\n                });\n            }\n        } else { // User is not logged\n            const unsubButtonUnlogged = this.UserViewInstance\n                .getElement(formModelUnlogged.unsubButton);\n            const unsubscribeUnloggedButton = this.UserViewInstance\n                .getElement(formModelUnlogged.unsubscribeUnlogged);\n\n            if (unsubButtonUnlogged) {\n                this.UserViewInstance.attachEvent(unsubButtonUnlogged, {\n                    eventName: 'click',\n                    event: (e) => {\n                        e.preventDefault();\n                        cleanError();\n                        const msisdn = this.UserViewInstance\n                            .getValue(formModelUnlogged.inputMsisdn);\n\n                        try {\n                            if (isVoid(msisdn)) {\n                                manageError('useris-error-required-input');\n                                return;\n                            }\n\n                            if (!isValid(msisdn, this.regexObject.msisdn)) {\n                                manageError('useris-error-invalid-number');\n                                return;\n                            }\n                            this.callback('onUnsubUnloggeddSuccess', {\n                                IDENTITY: msisdn,\n                                TYPE: 'msisdn',\n                                ACCESS_TOKEN: ''\n                            });\n                        } catch (error) {\n                            manageError(error);\n                        }\n                    }\n                });\n            } else if (unsubscribeUnloggedButton) {\n                /* Movistar case unlogged ... */\n\n                this.UserViewInstance.attachEvent(unsubscribeUnloggedButton, {\n                    eventName: 'click',\n                    event: (e) => {\n                        e.preventDefault();\n                        this.callback('onUnsubLoggedSuccess', {\n                            IDENTITY: '',\n                            TYPE: '',\n                            ACCESS_TOKEN: ''\n                        });\n                    }\n                });\n            }\n        }\n    }\n}\n\n// export const old = (options, callbackObject) => {\n//     let templateInjected = false;\n//     const smartsectionObj = {\n//         subsection: 'smartstatus',\n//         loadForm: options.element ? options.element : false,\n//         access_token: options.access_token ? options.access_token : '',\n//         doNotLoad: options.doNotLoad ? options.doNotLoad : false\n//     };\n//     const { regexObject = config.get('regexObject') } = options;\n//     const UserViewInstance = new UserView();\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//\n//         errorManager.cleanError();\n//\n//         if (options.access_token) {\n//             const unsubButtonLogged = UserViewInstance.getElement(formModelLogged.unsubButton);\n//             if (unsubButtonLogged) {\n//                 UserViewInstance.attachEvent(unsubButtonLogged, {\n//                     eventName: 'click',\n//                     event: (e) => {\n//                         e.preventDefault();\n//                         callbackObject.onUnsubLoggedSuccess({\n//                             IDENTITY: '',\n//                             TYPE: '',\n//                             ACCESS_TOKEN: options.access_token\n//                         });\n//                     }\n//                 });\n//             }\n//         }\n//         else { // User is not logged\n//             const unsubButtonUnlogged = UserViewInstance\n//                  .getElement(formModelUnlogged.unsubButton);\n//             const unsubscribeUnloggedButton = UserViewInstance\n//                 .getElement(formModelUnlogged.unsubscribeUnlogged);\n//\n//             if (unsubButtonUnlogged) {\n//                 UserViewInstance.attachEvent(unsubButtonUnlogged, {\n//                     eventName: 'click',\n//                     event: (e) => {\n//                         e.preventDefault();\n//\n//                         errorManager.cleanError();\n//\n//                         const msisdn = UserViewInstance.getValue(formModelUnlogged.inputMsisdn);\n//\n//                         try {\n//                             if (isVoid(msisdn)) {\n//                                 errorManager.manageError('useris-error-required-input');\n//                                 return;\n//                             }\n//\n//                             if (!isValid(msisdn, regexObject.msisdn)) {\n//                                 errorManager.manageError('useris-error-invalid-number');\n//                                 return;\n//                             }\n//\n//                             callbackObject.onUnsubUnloggedSuccess({\n//                                 IDENTITY: msisdn,\n//                                 TYPE: 'msisdn',\n//                                 ACCESS_TOKEN: ''\n//                             });\n//                         } catch (error) {\n//                             errorManager.manageError(error);\n//                         }\n//                     }\n//                 });\n//             } else if (unsubscribeUnloggedButton) {\n//                 /* Movistar case unlogged ... */\n//\n//                 UserViewInstance.attachEvent(unsubscribeUnloggedButton, {\n//                     eventName: 'click',\n//                     event: (e) => {\n//                         e.preventDefault();\n//                         callbackObject.onUnsubLoggedSuccess({\n//                             IDENTITY: '',\n//                             TYPE: '',\n//                             ACCESS_TOKEN: ''\n//                         });\n//                     }\n//                 });\n//             }\n//         }\n//     });\n// };\n","import config from '../../config';\nimport Method from '../Method';\n\nconst formModel = {\n    addFacebookIdentityButton: 'add_fb_identity',\n    facebookDisconnectButton: 'fb_disconnect'\n};\n\n/**\n * @memberOf Useris\n * @function social\n *\n * @description Validate and expose function for social account\n *\n * It must be used with the **newtonsmartstatussocial** template;\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {String} [options.access_token=''] **Optionals** if true,\n * the tmpl calls will be called with the params access_token filled\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicall)\n * @param {object} callbackOnject Object containg all the callbacks\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n * @param {function} [callbackObject.onFacebookRegisterSuccess='no-default']\n * Callback executed when the template has been loaded.\n * @param {function} [callbackObject.onFacebookDisconnect='no-default']\n * Callback executed when the template has been loaded.\n *\n * @example\n *  Useris.social({\n *      element: document.getElementById('elementId'),\n *      access_token: 'abcdefgh1234567890'\n *  }, {\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template loaded', tmplInfo);\n *      },\n *      onFacebookRegisterSuccess: function(){\n *          //facebook login code\n *          facebookLogin();\n *      },\n *      onFacebookDisconnect: function(){\n *          //facebook disconnect code\n *          facebookDisconnect();\n *      }\n *  });\n *\n *  @returns {object}\n *  <pre>\n *      {}\n *  </pre>\n */\nexport default class Social extends Method {\n    init = (options) => {\n        this.smartsectionObj = {\n            subsection: 'newtonsmartstatussocial',\n            loadForm: options.element || false,\n            access_token: options.access_token || '',\n            doNotLoad: options.doNotLoad || false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        let addFacebookIdentityButton = false;\n        let facebookDisconnectButton = false;\n        if (config.get('identityFbEnabled')) {\n            addFacebookIdentityButton = this.UserViewInstance\n                .getElement(formModel.addFacebookIdentityButton);\n            facebookDisconnectButton = this.UserViewInstance\n                .getElement(formModel.facebookDisconnectButton);\n\n            if (addFacebookIdentityButton) {\n                this.UserViewInstance.attachEvent(addFacebookIdentityButton, {\n                    eventName: 'click',\n                    event: (e) => {\n                        e.preventDefault();\n                        this.callback('onFacebookRegisterSuccess');\n                    }\n                });\n            }\n\n            if (facebookDisconnectButton) {\n                this.UserViewInstance.attachEvent(facebookDisconnectButton, {\n                    eventName: 'click',\n                    event: (e) => {\n                        e.preventDefault();\n                        this.callback('onFacebookDisconnect');\n                    }\n                });\n            }\n        }\n    }\n}\n\n// export const old =  (options, callbackObject) => {\n//     let templateInjected = false;\n//\n//     const smartsectionObj = {\n//         subsection: 'newtonsmartstatussocial',\n//         loadForm: options.element || false,\n//         access_token: options.access_token || '',\n//         doNotLoad: options.doNotLoad || false\n//     };\n//\n//     const UserViewInstance = new UserView();\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//\n//         errorManager.cleanError();\n//\n//         let addFacebookIdentityButton = false;\n//         let facebookDisconnectButton = false;\n//\n//         if (config.get('identityFbEnabled')) {\n//             addFacebookIdentityButton = UserViewInstance\n//                 .getElement(formModel.addFacebookIdentityButton);\n//             facebookDisconnectButton = UserViewInstance\n//                 .getElement(formModel.facebookDisconnectButton);\n//\n//             if (addFacebookIdentityButton) {\n//                 UserViewInstance.attachEvent(addFacebookIdentityButton, {\n//                     eventName: 'click',\n//                     event: (e) => {\n//                         e.preventDefault();\n//                         if (typeof callbackObject.onFacebookRegisterSuccess === 'function') {\n//                             callbackObject.onFacebookRegisterSuccess();\n//                         }\n//                     }\n//                 });\n//             }\n//\n//             if (facebookDisconnectButton) {\n//                 UserViewInstance.attachEvent(facebookDisconnectButton, {\n//                     eventName: 'click',\n//                     event: (e) => {\n//                         e.preventDefault();\n//                         if (typeof callbackObject.onFacebookDisconnect === 'function') {\n//                             callbackObject.onFacebookDisconnect();\n//                         }\n//                     }\n//                 });\n//             }\n//         }\n//     }).catch((error) => {\n//         errorManager.manageError(error);\n//     });\n// };\n","import { cleanError, manageError } from '../../errorManager';\nimport { isVoid, isValid } from '../../validation';\nimport config from '../../config';\nimport Method from '../Method';\n\nconst formModel = {\n    buttonAddEmail: 'frmAddEmail',\n    buttonSkip: 'frmAddEmailSkip',\n    buttonCancelAddEmail: 'frmAddEmailReturn',\n    email: 'email',\n    switchEye: 'add_mail_password_switch_type',\n    password: 'password'\n};\n\n/**\n * @memberOf Useris\n * @function userRegistration\n *\n * @description Validate and recognize the object to add a new newton identity.\n *\n * Remember to check if an identy is already present.\n * If yes you have to delete the old and add the new one\n *\n *\n * It must be used with the **smartaddemail** template;\n *\n * @param {Object} options Options object\n * @param {Object} [options.element=false] The div element where the html's tmpl will be injected\n * @param {Object} [options.regexObject={}]\n * **Optionals** Contains all the regular expressions for input validation\n * (msisdn, pin, email, password and generic regex are allowed)\n * @param {String} [options.acccess_token=''] **Optionals** if true,\n * the tmpl calls will be called with the params access_token filled\n * @param {Boolean} [options.doNotLoad=false] **Optionals** if true,\n * this params will tell useris to not load the template (It doesn't make the apicall)\n * @param {String} [options.smsTemplate=''] the template of the sms sent (msisdn add identity)\n * @param {boolean} [options.skipRegister=0] allow a user to have a generic identity\n * @param {boolean} [options.ohterParams=0] params to substitute for mail\n * @param {Object} callbackObject Manage the success and error callback\n * @param {function} [callbackObject.onSuccess='no-default']\n * Success callback (code managed by the app)\n * @param {function} [callbackObject.onError='no-default'] Error callback (code managed by the app)\n * @param {function} [callbackObject.onTemplateLoaded='no-default']\n * Callback executed when the template has been loaded.\n *\n * @example\n *  Useris.userRegistration({\n *      element: document.getElementById('elementId'),\n *      regexObject: {\n *          msidn: '',\n *          pin: '',\n *          email: '',\n *          password: '',\n *          generic: '',\n *          genericPassword: ''\n *      },\n *      skipRegister: 1,\n *      smsTemplate: 'Hello, welcome to the service!',\n *      otherParams: '{}'\n *  }, {\n *      onSuccess: function(userCredentials){\n *          // remember to check if an identy is already present.\n *          // If yes you have to delete the old and add the new one\n *          callsToNewton.addIdentity(userCredentials);\n *      },\n *      onCancel: function(){\n *          window.location.href = '#!';\n *      }\n *      onError: function(error){\n *          console.log('Error:', error);\n *          manageError(error);\n *      },\n *      onTemplateLoaded: function(tmplInfo){\n *          console.log('Template loaded', tmplInfo);\n *      }\n *  });\n *\n * @returns {object}\n *  **Email case:**\n *  <pre>\n *  {\n *      email: string,\n *      password: string,\n *      skipped: boolean,\n *      type: 'email',\n *      smsTemplate: string,\n *      params: Object\n *  }\n *  </pre>\n *  **Skipped case:**\n *  <pre>\n *  {\n *      skipped: boolean,\n *      type: 'generic',\n *      smsTemplate: string\n *  }\n *  </pre>\n */\nexport default class UserRegistration extends Method {\n    init = (options) => {\n        this.smartsectionObj = {\n            subsection: 'smartaddemail',\n            skip: options.skipRegister || 0,\n            loadForm: options.element || false,\n            access_token: options.access_token || '',\n            doNotLoad: options.doNotLoad || false\n        };\n        this.initUserView();\n    };\n\n    attachEvents = () => {\n        const buttonAddEmail = this.UserViewInstance.getElement(formModel.buttonAddEmail);\n        const buttonSkip = this.UserViewInstance.getElement(formModel.buttonSkip);\n        const buttonCancelAddEmail = this.UserViewInstance\n            .getElement(formModel.buttonCancelAddEmail);\n        const switchEye = this.UserViewInstance.getElement(formModel.switchEye);\n        this.UserViewInstance.attachEvent(buttonAddEmail, {\n            eventName: 'click',\n            event: (e) => {\n                e.preventDefault();\n                cleanError();\n                const email = this.UserViewInstance.getValue('email');\n                const password = this.UserViewInstance.getValue('password');\n                const parObj = {\n                    EMAIL: email,\n                    USERNAME: email\n                };\n\n                try {\n                    if (isVoid(email) || !isValid(email, this.regexObject.email)) {\n                        manageError('useris-error-msg');\n                        return;\n                    }\n\n                    if (isVoid(password) || !isValid(password, this.regexObject.password)) {\n                        manageError('useris-error-password');\n                        return;\n                    }\n                    let params = {};\n                    if (this.options.otherParams) {\n                        params = Object.keys(this.options.otherParams).reduce((obj, key) => {\n                            obj[key] = parObj[this.options.otherParams[key].replace(':', '')];\n                            return obj;\n                        }, {});\n                    }\n                    this.callback('onSuccess', {\n                        email,\n                        password,\n                        params,\n                        skipped: 0,\n                        type: 'email',\n                        smsTemplate: config.get('redirectToMipRegisterAtStart') ? this.options.smsTemplate : false,\n                    });\n                } catch (error) {\n                    manageError(error);\n                }\n            }\n        });\n\n        if (this.options.skipRegister || config.get('skipRegister')) {\n            this.UserViewInstance.attachEvent(buttonSkip, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.callback('onSuccess', {\n                        skipped: 1,\n                        type: 'generic',\n                        smsTemplate: this.options.smsTemplate\n                    });\n                }\n            });\n        }\n\n        if (switchEye) {\n            this.UserViewInstance.attachEvent(switchEye, {\n                eventName: 'click',\n                event: (e) => {\n                    e.preventDefault();\n                    this.UserViewInstance.switchInputType(formModel.password, switchEye.id);\n                }\n            });\n        }\n\n        this.UserViewInstance.attachEvent(buttonCancelAddEmail, {\n            eventName: 'click',\n            event: (e) => {\n                e.preventDefault();\n                this.callback('onCancel');\n            }\n        });\n    }\n}\n\n// export const old = (options, callbackObject) => {\n//     let templateInjected = false;\n//     const smartsectionObj = {\n//         subsection: 'smartaddemail',\n//         skip: options.skipRegister || 0,\n//         loadForm: options.element || false,\n//         access_token: options.access_token || '',\n//         doNotLoad: options.doNotLoad || false\n//     };\n//     const { regexObject = config.get('regexObject') } = options;\n//     const UserViewInstance = new UserView();\n//     UserViewInstance.init(smartsectionObj).then((data) => {\n//         if (smartsectionObj.loadForm) {\n//             UserViewInstance.populate(options.element, data.content);\n//             templateInjected = true;\n//         }\n//\n//         if (typeof callbackObject.onTemplateLoaded === 'function') {\n//             callbackObject.onTemplateLoaded({\n//                 data,\n//                 templateName: smartsectionObj.subsection,\n//                 injected: templateInjected,\n//             });\n//         }\n//\n//         errorManager.cleanError();\n//\n//         const buttonAddEmail = UserViewInstance.getElement(formModel.buttonAddEmail);\n//         const buttonSkip = UserViewInstance.getElement(formModel.buttonSkip);\n//         const buttonCancelAddEmail = UserViewInstance.getElement(formModel.buttonCancelAddEmail);\n//         const switchEye = UserViewInstance.getElement(formModel.switchEye);\n//\n//         UserViewInstance.attachEvent(buttonAddEmail, {\n//             eventName: 'click',\n//             event: (e) => {\n//                 e.preventDefault();\n//                 errorManager.cleanError();\n//\n//                 const email = UserViewInstance.getValue('email');\n//                 const password = UserViewInstance.getValue('password');\n//\n//                 const parObj = {\n//                     EMAIL: email,\n//                     USERNAME: email\n//                 };\n//\n//                 try {\n//                     if (isVoid(email) || !isValid(email, regexObject.email)) {\n//                         errorManager.manageError('useris-error-msg');\n//                         return;\n//                     }\n//\n//                     if (isVoid(password) || !isValid(password, regexObject.password)) {\n//                         errorManager.manageError('useris-error-password');\n//                         return;\n//                     }\n//                     let params = {};\n//                     if (options.otherParams) {\n//                         params = Object.keys(options.otherParams).reduce((obj, key) => {\n//                             obj[key] = parObj[options.otherParams[key].replace(':', '')];\n//                             return obj;\n//                         }, {});\n//                     }\n//\n//                     callbackObject.onSuccess({\n//                         email,\n//                         password,\n//                         params,\n//                         skipped: 0,\n//                         type: 'email',\n//                         smsTemplate: config.get('redirectToMipRegisterAtStart')\n//                              ? options.smsTemplate : false,\n//                     });\n//                 } catch (error) {\n//                     errorManager.manageError(error);\n//                 }\n//             }\n//         });\n//\n//         if (options.skipRegister || config.get('skipRegister')) {\n//             UserViewInstance.attachEvent(buttonSkip, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     callbackObject.onSuccess({\n//                         skipped: 1,\n//                         type: 'generic',\n//                         smsTemplate: options.smsTemplate\n//                     });\n//                 }\n//             });\n//         }\n//\n//         if (switchEye) {\n//             UserViewInstance.attachEvent(switchEye, {\n//                 eventName: 'click',\n//                 event: (e) => {\n//                     e.preventDefault();\n//                     UserViewInstance.switchInputType(formModel.password, switchEye.id);\n//                 }\n//             });\n//         }\n//\n//         UserViewInstance.attachEvent(buttonCancelAddEmail, {\n//             eventName: 'click',\n//             event: (e) => {\n//                 e.preventDefault();\n//                 callbackObject.onCancel();\n//             }\n//         });\n//     }).catch((error) => {\n//         errorManager.manageError(error);\n//     });\n// };\n","export { default as ChangeMail } from './changeMail';\nexport { default as ChangePassword } from './changePassword';\nexport { default as Forgot } from './forgot';\nexport { default as init } from './init';\nexport { default as Login } from './login';\nexport { default as Profile } from './profile';\nexport { default as ResetPassword } from './resetPassword';\nexport { default as Signup } from './signup';\nexport { default as Smartstatus } from './smartstatus';\nexport { default as Social } from './social';\nexport { default as UserRegistration } from './userRegistration';\n","import 'whatwg-fetch';\nimport 'promise-polyfill/src/polyfill';\n\nimport PopupManager from './newPopupManager';\nimport {\n    init,\n    Login,\n    Forgot,\n    ChangePassword,\n    ResetPassword,\n    ChangeMail,\n    Smartstatus,\n    UserRegistration,\n    Profile,\n    Social,\n    Signup,\n} from './methods';\nimport { manageError } from './errorManager';\n\n/**\n * @class Useris\n * @description\n * **Useris** is a Js library to be used in B! web applications\n * and must be used together with the NewtonAdapter module.\n * It features a simple way to manage and validate all the forms,\n * inputs and buttons to manage the user actions.\n * You can use **Useris** when you need to implement one of those features:\n *  - [Login]{@link Useris.login}\n *  - [Forgot]{@link Useris.forgot}\n *  - [Change Password]{@link Useris.changePassword}\n *  - [Reset Password]{@link Useris.resetPassword}\n *  - [Manage the smartstatus actions]{@link Useris.smartstatus}\n *  - [Add Identity]{@link Useris.userRegistration}\n *  - [Show an error message]{@link Useris.triggerError}\n *\n *\n * Remember that **Useris** doesn't manage a full login flow.\n * It only manages the html content to add click action and validation features.\n * The real login flow has to be passed as callback.\n * You will find the object to pass to the newton adapter as response in the callback\n * and in most of the cases you should use it without manipulation.\n *\n * In all the methods you will see an options object with an element params.\n * This element params is optional.\n * If you have yet injected the tmpl inside the html,\n * **Useris** will not call any template and will not populate any html\n * but it will start to attach events and validation features to the forms.\n *\n * **Useris** is based on a simple **MVC** model.\n * In fact, the UserView module is the referent to the view.\n * When you have to manage event or hide, show, get or add an element,\n * you have to use the UserView module.\n * The controller is not necessary because we don't have to mantain or manipulate any type of datas.\n *\n * To use **Useris**\n * you have (before calling any other function) to initialize it with the init method.\n */\nexport default {\n    init,\n    login: (new Login()).handle,\n    forgot: (new Forgot()).handle,\n    changePassword: (new ChangePassword()).handle,\n    resetPassword: (new ResetPassword()).handle,\n    changeMail: (new ChangeMail()).handle,\n    smartstatus: (new Smartstatus()).handle,\n    userRegistration: (new UserRegistration()).handle,\n    profile: (new Profile()).handle,\n    social: (new Social()).handle,\n    signup: (new Signup()).handle,\n\n    triggerError: manageError,\n    PopupManager: new PopupManager()\n};\n","import Useris from '../src/index.js';\n\nvar regexpPassword = /^[a-zA-Z]*$/;\nvar regexpMail = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nvar regexpPin = /^\\d{4}$/;\nvar regexpMsisdn = /./;// /^(?:\\+39)?([0-9]{10})$/;\nvar regObj = {};\nvar arrayPopupConf = [];\nregObj = { irregular: '\\\\', email: regexpMail, pin: regexpPin, msisdn: regexpMsisdn, password: regexpPassword, generic: '.', genericPassword: '.' };\n\nexport var loadModule = function(){\n    var operatorList = 0;\n\n    Useris.init({\n        domain: document.getElementById('domain').value,\n        country: 'es-wwemobile',\n        enableAliasCheck: 0,\n        aliasCheckUrl: '',\n        disablePinInput: 0,\n        hybridnews: 0,\n        store_type: '',\n        apikey: document.getElementById('apikey').value,\n        enableGoogleCheckbox: 0,\n        emailIdentityEnabled: 1,\n        redirectToMipRegisterAtStart: 0,\n        operatorList: operatorList,\n        identityFbEnabled: 1,\n        regexObject: regObj,\n        skipRegister: 1\n    });\n\n    if(operatorList){\n        document.getElementById('operators').style.display = 'block';\n    }\n\n    var test = document.getElementById('loadedModule').value;\n    if(test === 'login'){\n        Useris.login({\n            element: document.getElementById('blackboard'),\n            access_token: 'ciccione'\n        }, {\n            onSuccess: function (user) {\n                console.log(user);\n                Useris.PopupManager.showUserFeedback({ message: 'You are now logged in', title: 'USER LOGGED!', feedbackType: 'positive' });\n            },\n            onError: function(error){\n                console.log(error);\n            },\n            onFacebookSuccess: function(user){\n                console.log(user);\n            },\n            onFacebookError: function(error){\n                console.log(error);\n            },\n            onTemplateLoaded: function(tmplInfo){\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if(test === 'forgot'){\n        Useris.forgot({\n            element: document.getElementById('blackboard')\n        }, {\n            onSuccess: function(data){\n                console.log(data);\n                if(data.msisdn){\n                    Useris.PopupManager.showUserFeedback({ message: 'We have send a sms to:' + data.msisdn, title: 'CHECK YOUR SMS', feedbackType: 'suggestion' });\n                } else {\n                    Useris.PopupManager.showUserFeedback({ message: 'We have send a new mail to: ' + data.email, title: 'CHECK YOUR UPCOMING MAIL', feedbackType: 'suggestion' });\n                }\n            },\n            onError: function(error){\n                console.log(error);\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if(test === 'changePassword'){\n        Useris.changePassword({\n            element: document.getElementById('blackboard')\n        }, {\n            onSuccess: function(data){\n                console.log(data);\n            },\n            onCancel: function(){\n                console.log('ciaone');\n            },\n            onError: function(error){\n                console.log(error);\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if(test === 'resetPassword'){\n        Useris.resetPassword({\n            element: document.getElementById('blackboard'),\n            token: 'abcdefgh1234567890',\n            email: 'test@test.it'\n        }, {\n            onSuccess: function(data){\n                console.log(data);\n            },\n            onError: function(error){\n                console.log(error);\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if (test === 'changeMail'){\n        Useris.changeMail({\n            element: document.getElementById('blackboard'),\n            regexObject: regObj\n        }, {\n            onSuccess: function(data){\n                console.log(data);\n            },\n            onError: function(error){\n                console.log(error);\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if (test === 'register'){\n        Useris.userRegistration({\n            element: document.getElementById('blackboard'),\n            regexObject: regObj,\n            smsTemplate: 'CIAONEEEEE'\n        }, {\n            onSuccess: function(data){\n                console.log(data);\n            },\n            onError: function(error){\n                console.log(error);\n            },\n            onCancel: function(){\n                cosnole.log('cancel');\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if (test === 'profile') {\n\n        Useris.profile({\n            element: document.getElementById('blackboard'),\n            access_token: 'N_d9078730b6341ef172a9'\n        }, {\n            onSaveNickname: function (obj) {\n                console.log(obj);\n\n                obj.callbackSuccess(obj.newNickname);\n            },\n            onError: function (error) {\n                console.log(error);\n            },\n            onCancel: function () {\n                cosnole.log('cancel');\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if (test === 'social') {\n        Useris.social({\n            element: false\n        }, {\n            onFacebookRegisterSuccess: function () {\n                console.log('YOUR FACEBOOK LOGIN CODE');\n            },\n            onFacebookDisconnect: function () {\n                console.log('YOUR FACEBOOK DISCONNECT CODE');\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if(test === 'status'){\n        Useris.smartstatus({\n            element: false,\n            doNotLoad: true\n        }, {\n            onUnsubLoggedSuccess: function () {\n                console.log('Unsubscription');\n            },\n            onUnsubLoggedError: function () {\n                console.log('unsubscribe');\n            },\n            onUnsubUnloggedSuccess: function(resp){\n                console.log('yeahh', resp);\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if (test === 'addemail') {\n        Useris.userRegistration({\n            element: document.getElementById('blackboard'),\n            smsTemplate: 'pin: 0000'\n        }, {\n            onSuccess: function (data) {\n                console.log(data);\n            },\n            onError: function (err) {\n                console.log(err);\n            },\n            onCancel: function () {\n                console.log('cancel');\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    } else if (test === 'signup') {\n        Useris.signup({\n            element: document.getElementById('blackboard')\n        }, {\n            onSuccess: function (data) {\n                console.log(data);\n            },\n            onFbSignupSuccess: function (resp) {\n                console.log('FB!');\n            },\n            onError: function (e) {\n                console.log('e', e);\n            },\n            onTemplateLoaded: function (tmplInfo) {\n                console.log('Template loaded', tmplInfo);\n            }\n        });\n    }\n};\n\nexport var getPopupElement = function(type){\n    var initObj = {};\n\n    initObj = {\n        type: type,\n        enabled: document.getElementById(type + '-enabled').checked,\n        canClose: document.getElementById(type + '-canClose').checked,\n        overrideProps: document.getElementById(type + '-overrideProps').checked,\n        temporizedFor: document.getElementById(type + '-temporizedFor').value || 0,\n        fadeTimeout: document.getElementById(type + '-fadeTimeout').value || 0,\n        iconClass: document.getElementById(type + '-iconClass').value\n    }\n\n    arrayPopupConf.push(initObj);\n};\n\nexport var popupInit = function(){\n    var prefix = ['positive', 'generic', 'error'];\n    for(var key in prefix){\n        getPopupElement(prefix[key]);\n    }\n\n    Useris.PopupManager.init(arrayPopupConf, function(resp){\n        console.log(resp)\n    });\n}\n\nexport var popupShow = function(){\n    Useris.PopupManager.showUserFeedback({\n        type: document.getElementById('show-popup-type').value,\n        feedback: {\n            message: document.getElementById('show-message').value,\n            icon: document.getElementById('show-icon').value,\n            link: {\n                text: document.getElementById('show-link-text').value,\n                href: document.getElementById('show-link-href').value\n            },\n            temporizedFor: document.getElementById('show-temporizedFor').value ? parseInt(document.getElementById('show-temporizedFor').value, 10) : undefined,\n            fadeTimeout: document.getElementById('show-fadeTimeout').value ? parseInt(document.getElementById('show-fadeTimeout').value, 10) : undefined,\n        }\n    })\n}"]}