{"version":3,"sources":["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","webpack:///./pages/sessions/index.js"],"names":["debounceTimeoutDuration","UsernameValidator","_this","this","_classCallCheck","inputElement","$","inputDomElement","get","state","available","valid","pending","empty","debounceTimeout","_","debounce","username","validateUsername","on","val","validity","length","renderState","interceptInvalid","bind","clearFieldValidationState","setSuccessState","setPendingState","setUnavailableState","setInvalidState","event","preventDefault","stopPropagation","_this2","axios","concat","gon","relative_url_root","then","_ref","data","setAvailabilityState","exists","catch","flash","__","usernameTaken","siblings","hide","removeClass","$usernameUnavailableMessage","addClass","show","$usernameSuccessMessage","$usernamePendingMessage","$inputErrorMessage","SigninTabsMemoizer","arguments","undefined","_ref$currentTabKey","currentTabKey","_ref$tabSelector","tabSelector","signin_tabs_memoizer_classCallCheck","isLocalStorageAvailable","AccessorUtilities","isLocalStorageAccessSafe","window","location","hash","saveData","bootstrap","tabs","document","querySelectorAll","addEventListener","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","bindEvents","__webpack_require__","r","__webpack_exports__","_shared_sessions_u2f__WEBPACK_IMPORTED_MODULE_0__","initU2F"],"mappings":"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","file":"pages.sessions.new.d629b760.chunk.js","sourcesContent":["/* eslint-disable 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\n .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).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","import initU2F from '../../shared/sessions/u2f';\n\ndocument.addEventListener('DOMContentLoaded', initU2F);\n"],"sourceRoot":""}