{"version":3,"sources":["webpack:///./pages/sessions/index.js","webpack:///./pages/sessions/new/username_validator.js","webpack:///./pages/sessions/new/signin_tabs_memoizer.js","webpack:///./pages/sessions/new/oauth_remember_me.js","webpack:///./pages/sessions/new/index.js"],"names":["document","addEventListener","_shared_sessions_u2f__WEBPACK_IMPORTED_MODULE_0__","debounceTimeoutDuration","UsernameValidator","_this","this","_classCallCheck","inputElement","jquery_default","inputDomElement","get","state","available","valid","pending","empty","debounceTimeout","underscore_default","a","debounce","username","validateUsername","on","val","validity","length","renderState","interceptInvalid","bind","clearFieldValidationState","setSuccessState","setPendingState","setUnavailableState","setInvalidState","event","preventDefault","stopPropagation","_this2","axios_utils","gon","relative_url_root","then","_ref","data","setAvailabilityState","exists","catch","Object","flash","locale","usernameTaken","siblings","hide","removeClass","$usernameUnavailableMessage","addClass","show","$usernameSuccessMessage","$usernamePendingMessage","$inputErrorMessage","SigninTabsMemoizer","arguments","undefined","_ref$currentTabKey","currentTabKey","_ref$tabSelector","tabSelector","signin_tabs_memoizer_classCallCheck","isLocalStorageAvailable","accessor","isLocalStorageAccessSafe","window","location","hash","saveData","bootstrap","tabs","querySelectorAll","e","target","nodeName","anchorName","getAttribute","showTab","readData","tab","querySelector","click","firstTab","localStorage","setItem","getItem","OAuthRememberMe","opts","oauth_remember_me_classCallCheck","container","loginLinkSelector","toggleRememberMe","rememberMe","is","each","i","element","href","attr","replace","username_validator","signin_tabs_memoizer","oauth_remember_me","bindEvents"],"mappings":"2GAEAA,SAASC,iBAAiB,mBAAoBC,EAAA,0VCM9C,IAAMC,EAA0B,iBAS9B,SAAAC,IAAc,IAAAC,EAAAC,kGAAAC,CAAAD,KAAAF,GACZE,KAAKE,aAAeC,IAAE,sBACtBH,KAAKI,gBAAkBJ,KAAKE,aAAaG,IAAI,GAC7CL,KAAKM,OACHC,WAAW,EACXC,OAAO,EACPC,SAAS,EACTC,OAAO,GAGT,IAAMC,EAAkBC,EAAAC,EAAEC,SAAS,SAACC,GAClChB,EAAKiB,iBAAiBD,IACrBlB,GAEHG,KAAKE,aAAae,GAAG,uBAAwB,WAC3C,IAAMF,EAAWhB,EAAKG,aAAagB,MAKnC,GAHAnB,EAAKO,MAAME,MAAQT,EAAKK,gBAAgBe,SAASX,MACjDT,EAAKO,MAAMI,OAASK,EAASK,OAEzBrB,EAAKO,MAAME,MACb,OAAOG,EAAgBI,GAGzBhB,EAAKsB,gBAIPrB,KAAKE,aAAae,GAAG,UAAWjB,KAAKsB,iBAAiBC,KAAKvB,uDAO3D,OAFAA,KAAKwB,4BAEDxB,KAAKM,MAAME,OAASR,KAAKM,MAAMC,UAC1BP,KAAKyB,kBAGVzB,KAAKM,MAAMI,MACNV,KAAKwB,4BAGVxB,KAAKM,MAAMG,QACNT,KAAK0B,kBAGT1B,KAAKM,MAAME,MAIXR,KAAKM,MAAMC,eAAhB,EACSP,KAAK2B,sBAJL3B,KAAK4B,2DAQCC,GACfA,EAAMC,iBACND,EAAME,2DAGShB,GAAU,IAAAiB,EAAAhC,KACrBA,KAAKM,MAAME,QACbR,KAAKM,MAAMG,SAAU,EACrBT,KAAKM,MAAMC,WAAY,EACvBP,KAAKqB,cACLY,EAAA,EAAM5B,IAAO6B,IAAIC,kBAAjB,UAA4CpB,EAA5C,WACGqB,KAAK,SAAAC,GAAA,IAAGC,EAAHD,EAAGC,KAAH,OAAcN,EAAKO,qBAAqBD,EAAKE,UAClDC,MAAM,kBAAMC,OAAAC,EAAA,EAAAD,CAAMA,OAAAE,EAAA,EAAAF,CAAG,gGAIPG,GAEjB7C,KAAKM,MAAMC,WADTsC,EAKJ7C,KAAKM,MAAMG,SAAU,EACrBT,KAAKqB,kEAILrB,KAAKE,aAAa4C,SAAS,KAAKC,OAEhC/C,KAAKE,aAAa8C,YA7FI,0BA8FnBA,YA7FmB,0EAiGtB,IAAMC,EAA8BjD,KAAKE,aAAa4C,SAhGvB,+BAiG/B9C,KAAKE,aAAagD,SAnGI,0BAmGwBF,YAlGxB,4BAmGtBC,EAA4BE,iDAI5B,IAAMC,EAA0BpD,KAAKE,aAAa4C,SArGvB,iCAsG3B9C,KAAKE,aAAagD,SAxGI,4BAwGwBF,YAzGxB,0BA0GtBI,EAAwBD,iDAIxB,IAAME,EAA0BlD,IA1GL,iCA2GvBH,KAAKM,MAAMG,QACb4C,EAAwBF,OAExBE,EAAwBN,iDAK1B,IAAMO,EAAqBnD,IAlHA,6BAmH3BH,KAAKE,aAAagD,SAxHI,0BAwHwBF,YAvHxB,4BAwHtBM,EAAmBH,8RC3HrB,SAAAI,IAAgG,IAAAlB,EAAAmB,UAAApC,OAAA,QAAAqC,IAAAD,UAAA,GAAAA,UAAA,MAAAE,EAAArB,EAAlFsB,qBAAkFF,IAAAC,EAAlE,qBAAkEA,EAAAE,EAAAvB,EAA5CwB,mBAA4CJ,IAAAG,EAA9B,sBAA8BA,+FAAAE,CAAA9D,KAAAuD,GAC9FvD,KAAK2D,cAAgBA,EACrB3D,KAAK6D,YAAcA,EACnB7D,KAAK+D,wBAA0BC,EAAA,EAAkBC,2BAE7CC,OAAOC,SAASC,MAClBpE,KAAKqE,SAASH,OAAOC,SAASC,MAGhCpE,KAAKsE,0DAGK,IAAAvE,EAAAC,KACJuE,EAAO7E,SAAS8E,iBAAiBxE,KAAK6D,aACxCU,EAAKnD,OAAS,GAChBmD,EAAK,GAAG5E,iBAAiB,QAAS,SAAC8E,GACjC,GAAIA,EAAEC,QAAgC,MAAtBD,EAAEC,OAAOC,SAAkB,CACzC,IAAMC,EAAaH,EAAEC,OAAOG,aAAa,QACzC9E,EAAKsE,SAASO,MAKpB5E,KAAK8E,4CAIL,IAAMF,EAAa5E,KAAK+E,WACxB,GAAIH,EAAY,CACd,IAAMI,EAAMtF,SAASuF,cAAiBjF,KAAK6D,YAA/B,YAAsDe,EAAtD,MACZ,GAAII,EACFA,EAAIE,YACC,CACL,IAAMC,EAAWzF,SAASuF,cAAiBjF,KAAK6D,YAA/B,MACbsB,GACFA,EAASD,2CAMRhE,GACP,GAAKlB,KAAK+D,wBAEV,OAAOG,OAAOkB,aAAaC,QAAQrF,KAAK2D,cAAezC,sCAIvD,OAAKlB,KAAK+D,wBAEHG,OAAOkB,aAAaE,QAAQtF,KAAK2D,eAFE,oRC7C5C,SAAA4B,IAAuB,IAAXC,EAAWhC,UAAApC,OAAA,QAAAqC,IAAAD,UAAA,GAAAA,UAAA,mGAAAiC,CAAAzF,KAAAuF,GACrBvF,KAAK0F,UAAYF,EAAKE,WAAa,GACnC1F,KAAK2F,kBAAoB,8DAIzBxF,IAAE,eAAgBH,KAAK0F,WAAWzE,GAAG,QAASjB,KAAK4F,2DAGpC/D,GACf,IAAMgE,EAAa1F,IAAE0B,EAAM6C,QAAQoB,GAAG,YAEtC3F,IAAE,eAAgBH,KAAK0F,WAAWK,KAAK,SAACC,EAAGC,GACzC,IAAMC,EAAO/F,IAAE8F,GAASE,KAAK,QAEzBN,EACF1F,IAAE8F,GAASE,KAAK,OAAWD,EAA3B,kBAEA/F,IAAE8F,GAASE,KAAK,OAAQD,EAAKE,QAAQ,iBAAkB,gBCvB/D1G,SAASC,iBAAiB,mBAAoB,WAC5C,IAAI0G,EACJ,IAAIC,EAEJ,IAAIC,GACFb,UAAWvF,IAAE,yBACZqG","file":"pages.sessions.new.d9b5a425.chunk.js","sourcesContent":["import initU2F from '../../shared/sessions/u2f';\n\ndocument.addEventListener('DOMContentLoaded', initU2F);\n","/* eslint-disable comma-dangle, consistent-return, class-methods-use-this */\n\nimport $ from 'jquery';\nimport _ from 'underscore';\nimport axios from '~/lib/utils/axios_utils';\nimport flash from '~/flash';\nimport { __ } from '~/locale';\n\nconst debounceTimeoutDuration = 1000;\nconst invalidInputClass = 'gl-field-error-outline';\nconst successInputClass = 'gl-field-success-outline';\nconst unavailableMessageSelector = '.username .validation-error';\nconst successMessageSelector = '.username .validation-success';\nconst pendingMessageSelector = '.username .validation-pending';\nconst invalidMessageSelector = '.username .gl-field-error';\n\nexport default class UsernameValidator {\n constructor() {\n this.inputElement = $('#new_user_username');\n this.inputDomElement = this.inputElement.get(0);\n this.state = {\n available: false,\n valid: false,\n pending: false,\n empty: true\n };\n\n const debounceTimeout = _.debounce((username) => {\n this.validateUsername(username);\n }, debounceTimeoutDuration);\n\n this.inputElement.on('keyup.username_check', () => {\n const username = this.inputElement.val();\n\n this.state.valid = this.inputDomElement.validity.valid;\n this.state.empty = !username.length;\n\n if (this.state.valid) {\n return debounceTimeout(username);\n }\n\n this.renderState();\n });\n\n // Override generic field validation\n this.inputElement.on('invalid', this.interceptInvalid.bind(this));\n }\n\n renderState() {\n // Clear all state\n this.clearFieldValidationState();\n\n if (this.state.valid && this.state.available) {\n return this.setSuccessState();\n }\n\n if (this.state.empty) {\n return this.clearFieldValidationState();\n }\n\n if (this.state.pending) {\n return this.setPendingState();\n }\n\n if (!this.state.valid) {\n return this.setInvalidState();\n }\n\n if (!this.state.available) {\n return this.setUnavailableState();\n }\n }\n\n interceptInvalid(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n validateUsername(username) {\n if (this.state.valid) {\n this.state.pending = true;\n this.state.available = false;\n this.renderState();\n axios.get(`${gon.relative_url_root}/users/${username}/exists`)\n .then(({ data }) => this.setAvailabilityState(data.exists))\n .catch(() => flash(__('An error occurred while validating username')));\n }\n }\n\n setAvailabilityState(usernameTaken) {\n if (usernameTaken) {\n this.state.available = false;\n } else {\n this.state.available = true;\n }\n this.state.pending = false;\n this.renderState();\n }\n\n clearFieldValidationState() {\n this.inputElement.siblings('p').hide();\n\n this.inputElement.removeClass(invalidInputClass)\n .removeClass(successInputClass);\n }\n\n setUnavailableState() {\n const $usernameUnavailableMessage = this.inputElement.siblings(unavailableMessageSelector);\n this.inputElement.addClass(invalidInputClass).removeClass(successInputClass);\n $usernameUnavailableMessage.show();\n }\n\n setSuccessState() {\n const $usernameSuccessMessage = this.inputElement.siblings(successMessageSelector);\n this.inputElement.addClass(successInputClass).removeClass(invalidInputClass);\n $usernameSuccessMessage.show();\n }\n\n setPendingState() {\n const $usernamePendingMessage = $(pendingMessageSelector);\n if (this.state.pending) {\n $usernamePendingMessage.show();\n } else {\n $usernamePendingMessage.hide();\n }\n }\n\n setInvalidState() {\n const $inputErrorMessage = $(invalidMessageSelector);\n this.inputElement.addClass(invalidInputClass).removeClass(successInputClass);\n $inputErrorMessage.show();\n }\n}\n","import AccessorUtilities from '~/lib/utils/accessor';\n\n/**\n * Memorize the last selected tab after reloading a page.\n * Does that setting the current selected tab in the localStorage\n */\nexport default class SigninTabsMemoizer {\n constructor({ currentTabKey = 'current_signin_tab', tabSelector = 'ul.new-session-tabs' } = {}) {\n this.currentTabKey = currentTabKey;\n this.tabSelector = tabSelector;\n this.isLocalStorageAvailable = AccessorUtilities.isLocalStorageAccessSafe();\n // sets selected tab if given as hash tag\n if (window.location.hash) {\n this.saveData(window.location.hash);\n }\n\n this.bootstrap();\n }\n\n bootstrap() {\n const tabs = document.querySelectorAll(this.tabSelector);\n if (tabs.length > 0) {\n tabs[0].addEventListener('click', (e) => {\n if (e.target && e.target.nodeName === 'A') {\n const anchorName = e.target.getAttribute('href');\n this.saveData(anchorName);\n }\n });\n }\n\n this.showTab();\n }\n\n showTab() {\n const anchorName = this.readData();\n if (anchorName) {\n const tab = document.querySelector(`${this.tabSelector} a[href=\"${anchorName}\"]`);\n if (tab) {\n tab.click();\n } else {\n const firstTab = document.querySelector(`${this.tabSelector} a`);\n if (firstTab) {\n firstTab.click();\n }\n }\n }\n }\n\n saveData(val) {\n if (!this.isLocalStorageAvailable) return undefined;\n\n return window.localStorage.setItem(this.currentTabKey, val);\n }\n\n readData() {\n if (!this.isLocalStorageAvailable) return null;\n\n return window.localStorage.getItem(this.currentTabKey);\n }\n}\n","import $ from 'jquery';\n\n/**\n * OAuth-based login buttons have a separate \"remember me\" checkbox.\n *\n * Toggling this checkbox adds/removes a `remember_me` parameter to the\n * login buttons' href, which is passed on to the omniauth callback.\n */\n\nexport default class OAuthRememberMe {\n constructor(opts = {}) {\n this.container = opts.container || '';\n this.loginLinkSelector = '.oauth-login';\n }\n\n bindEvents() {\n $('#remember_me', this.container).on('click', this.toggleRememberMe);\n }\n\n toggleRememberMe(event) {\n const rememberMe = $(event.target).is(':checked');\n\n $('.oauth-login', this.container).each((i, element) => {\n const href = $(element).attr('href');\n\n if (rememberMe) {\n $(element).attr('href', `${href}?remember_me=1`);\n } else {\n $(element).attr('href', href.replace('?remember_me=1', ''));\n }\n });\n }\n}\n","import $ from 'jquery';\nimport UsernameValidator from './username_validator';\nimport SigninTabsMemoizer from './signin_tabs_memoizer';\nimport OAuthRememberMe from './oauth_remember_me';\n\ndocument.addEventListener('DOMContentLoaded', () => {\n new UsernameValidator(); // eslint-disable-line no-new\n new SigninTabsMemoizer(); // eslint-disable-line no-new\n\n new OAuthRememberMe({\n container: $('.omniauth-container'),\n }).bindEvents();\n});\n"],"sourceRoot":""}