{"version":3,"file":"js/login-4955e69dd55068dc3e46.js","mappings":"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","sources":["webpack://booqable/./webpack/login/application.js","webpack://booqable/./webpack/login/globals.js","webpack://booqable/./webpack/login/redux/reducers/login.js","webpack://booqable/./webpack/login/redux/reducers/index.js","webpack://booqable/./webpack/login/redux/store.js","webpack://booqable/./webpack/login/redux/actions/login.js","webpack://booqable/./webpack/login/react/login.jsx","webpack://booqable/./webpack/login/react/app.jsx","webpack://booqable/./webpack/shared/sentry.js","webpack://booqable/./node_modules/redux-thunk/es/index.js"],"sourcesContent":["require('./globals')\n\n// Intialize App\nrequire('./react/app')\n","// Polyfills for older and crappy browsers\nimport 'core-js'\n\nimport 'shared/utils/i18n'\n\nimport { Promise } from 'bluebird'\n\n// Bluebird config\nPromise.config({\n warnings: false\n})\n\nPromise.onPossiblyUnhandledRejection((error) => {\n if (error && error.message !== 'requestError') {\n throw error\n }\n})\n","import { Record, List } from 'immutable'\n\nconst LoginRecord = Record({\n email: null,\n password: null,\n passwordValid: true,\n companies: List(),\n selectedCompany: null,\n source: null,\n data: {},\n token: null,\n force_saml: false\n})\n\nconst initialState = new LoginRecord()\n\nconst loginReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'INITIALIZE_DATA':\n case 'AUTHENTICATION_SUCCESSFULL':\n case 'COMPANIES_FETCH_SUCCESS':\n case 'SELECTED_COMPANY':\n case 'RESET':\n return state.merge(action.payload)\n default:\n return state\n }\n}\n\nexport default loginReducer\n","import { combineReducers } from 'redux'\nimport { reducer as uiConnectReducer } from 'shared/redux/interface'\nimport loginReducer from './login'\n\nconst rootReducer = combineReducers({\n interface: uiConnectReducer,\n login: loginReducer\n})\n\nexport default rootReducer\n","// Import dependencies\nimport { createStore, applyMiddleware, compose } from 'redux'\nimport thunkMiddleware from 'redux-thunk'\nimport rootReducer from './reducers/index'\n\n// Define middlewares array\nconst middlewares = [\n thunkMiddleware\n]\n\n// Apply middleware\nlet middleware = applyMiddleware(...middlewares)\n\n// Optionally integrate Redux DevTools Extension\nif (window.__REDUX_DEVTOOLS_EXTENSION__) {\n middleware = compose(middleware, window.__REDUX_DEVTOOLS_EXTENSION__())\n}\n\n// Create store\nconst store = createStore(rootReducer, {}, middleware)\n\n// Export the store\nexport default store\n","import store from '../store'\nimport { List } from 'immutable'\nimport axios from 'axios'\n\nconst LoginActions = {\n initializeData: (data) => {\n return store.dispatch({\n type: 'INITIALIZE_DATA',\n payload: { data }\n })\n },\n\n lookupCompaniesByEmail: (email) => {\n const url = `${window.booqableProtocol}://login.${window.booqableUrl}/api/1/companies_by_email`\n\n return axios.post(url, { email })\n .then((response) => {\n return store.dispatch({\n type: 'COMPANIES_FETCH_SUCCESS',\n payload: {\n email,\n companies: List(response.data)\n }\n })\n })\n },\n\n selectCompany: (company) => {\n return store.dispatch({\n type: 'SELECTED_COMPANY',\n payload: { selectedCompany: company }\n })\n },\n\n reset: () => {\n return store.dispatch({\n type: 'RESET',\n payload: {\n selectedCompany: null,\n email: null,\n companies: List(),\n password: null\n }\n })\n },\n\n isAuthenticated: (company) => {\n const url = `${window.booqableProtocol}://${company}.${window.booqableUrl}/api/1/session`\n\n return axios.get(url, { withCredentials: true })\n }\n}\n\nexport default LoginActions\n","// React\nimport React, { useEffect } from 'react'\nimport PropTypes from 'prop-types'\nimport { connect as reduxConnect } from 'react-redux'\nimport uiConnect from 'shared/redux/interface'\nimport store from 'login/redux/store'\n\n// Libraries\nimport { withTranslation } from 'shared/utils/withTranslation'\n\n// Components\nimport Button from 'ui/components/Button'\nimport Link from 'ui/components/Link'\n\n// Actions\nimport LoginActions from 'login/redux/actions/login'\n\nconst Login = ({\n initialEmail,\n updateUI,\n ui,\n email,\n companies,\n selectedCompany,\n t,\n onChange,\n onEmailKeypress,\n onEmailBlur,\n nextStep,\n selectCompany,\n lookupByEmail\n}) => {\n useEffect(() => {\n if (initialEmail) {\n updateUI({ email: initialEmail })\n lookupByEmail(false, initialEmail)\n }\n }, [initialEmail, updateUI, lookupByEmail])\n\n return (\n
\n
\n

{t('login.title')}

\n\n
\n
\n \n onChange('email', e)}\n onKeyPress={onEmailKeypress}\n onBlur={onEmailBlur}\n autoFocus\n />\n\n {ui.loadingCompanies && (\n
\n
\n
\n )}\n
\n\n {companies.size > 0 && (\n
\n
\n
\n \n {companies.map((company) => {\n const selected = selectedCompany === company.slug\n\n return (\n selectCompany(selected ? null : company)}\n className={`${selected ? 'selected' : ''} list-group-item`}\n >\n
\n {company.name}\n
\n
{`https://${company.slug}.booqable.com`}
\n {selected && ui.loadingAuthenticated && (\n
\n
\n
\n )}\n \n )\n })}\n
\n
\n )}\n\n {(!email || companies.size === 0) && (\n
\n nextStep(email, selectedCompany)}\n >\n {t('common.actions.continue')}\n \n
\n )}\n
\n
\n
\n {t('login.no_account')}\n {' '}\n \n {t('login.signup')}\n \n
\n
\n )\n}\n\nLogin.propTypes = {\n initialEmail: PropTypes.string,\n updateUI: PropTypes.func.isRequired,\n ui: PropTypes.object.isRequired,\n email: PropTypes.string,\n companies: PropTypes.object,\n selectedCompany: PropTypes.string,\n t: PropTypes.func.isRequired,\n onChange: PropTypes.func.isRequired,\n onEmailKeypress: PropTypes.func.isRequired,\n onEmailBlur: PropTypes.func.isRequired,\n nextStep: PropTypes.func.isRequired,\n selectCompany: PropTypes.func.isRequired,\n lookupByEmail: PropTypes.func.isRequired\n}\n\nconst mapStateToProps = (state) => ({\n email: state.login.email,\n initialEmail: state.login.data?.toJS().email,\n companies: state.login.companies,\n selectedCompany: state.login.selectedCompany\n})\n\nconst mapDispatchToProps = (_dispatch, props) => {\n const lookupByEmail = (signup = true, email) => {\n props.updateUI({ loadingCompanies: true })\n\n LoginActions.lookupCompaniesByEmail(email || props.ui.email).then((response) => {\n props.updateUI({ loadingCompanies: false })\n\n if (signup && response.payload.companies.size === 0) {\n const data = store.getState().login.data?.toJS()\n let params\n\n if (data?.authenticated_url) {\n data.Source = data.provider\n data.email = email || props.ui.email\n params = Object.keys(data).map((key) => `${key}=${encodeURIComponent(data[key])}`).join('&')\n } else {\n params = `email=${encodeURIComponent(email || props.ui.email)}`\n }\n\n window.location = `${window.booqableProtocol}://signup.${window.booqableUrl}?${params}`\n }\n })\n }\n\n const redirect = (company) => {\n const data = store.getState().login.data?.toJS() || {}\n data.company = company\n data.email = props.ui.email\n\n const url = data?.authenticated_url || `${window.booqableProtocol}://${company}.${window.booqableUrl}`\n const params = Object.keys(data).map((key) => `${key}=${encodeURIComponent(data[key])}`).join('&')\n\n window.location = `${url}?${params}`\n }\n\n const redirectToSignInPage = (company) => {\n const data = store.getState().login.data?.toJS()\n company = company || props.ui.selectedCompany\n\n let redirectTo\n if (data?.authenticated_url) {\n redirectTo = new URL(`${window.booqableProtocol}://connect.${window.booqableUrl}`)\n redirectTo.pathname = data.authenticated_url\n\n data.company = company.slug\n data.email = props.ui.email\n\n Object.keys(data).forEach((key) => {\n redirectTo.searchParams.set(key, data[key])\n })\n }\n\n const uri = new URL(`${window.booqableProtocol}://${company.slug}.${window.booqableUrl}`)\n uri.pathname = '/employees/sign_in'\n uri.searchParams.set('employee[email]', props.ui.email)\n\n if (redirectTo) {\n uri.searchParams.set('redirect_uri', redirectTo.toString())\n }\n\n window.location = uri.toString()\n }\n\n const authenticate = () => {\n }\n\n return {\n onChange: (field, e) => {\n if (field === 'email') LoginActions.reset()\n\n const newState = {}\n newState[field] = e.target.value\n props.updateUI(newState)\n },\n\n onEmailBlur: () => {\n lookupByEmail(false)\n },\n\n onEmailKeypress: (e) => {\n if (e.key === 'Enter') lookupByEmail()\n },\n\n lookupByEmail,\n\n selectCompany: (company) => {\n if (company && company.saml) {\n window.location = `${window.booqableProtocol}://${company.slug}.booqable.com/employees/auth/saml`\n\n return\n }\n\n LoginActions.selectCompany(company.slug)\n props.updateUI({ selectedCompany: company.slug })\n\n if (company) {\n props.updateUI({ loadingAuthenticated: true })\n\n LoginActions.isAuthenticated(company.slug).then((response) => {\n const email = response.data.employee.email\n\n if (email === props.ui.email) {\n redirect(company.slug)\n } else {\n redirectToSignInPage(company)\n }\n }).catch(() => {\n redirectToSignInPage(company)\n })\n }\n },\n\n nextStep: (email, company) => {\n if (email && company) {\n authenticate()\n } else if (email) {\n lookupByEmail()\n }\n }\n }\n}\n\nlet decoratedComponent = reduxConnect(mapStateToProps, mapDispatchToProps)(Login)\n\ndecoratedComponent = uiConnect('Login', {\n state: {\n submitPromise: null,\n email: null,\n loadingCompanies: false,\n loadingAuthenticated: false,\n selectedCompany: null\n }\n})(decoratedComponent)\n\nexport default withTranslation('login')(decoratedComponent)\n","// React\nimport React, { Component } from 'react'\nimport { createRoot } from 'react-dom/client'\n\n// Libraries\nimport { ThemeProvider, StyleSheetManager } from 'styled-components'\nimport { Provider } from 'react-redux'\n\n// Components\n\n// Shared\nimport { shouldForwardProp } from 'shared/utils/shouldForwardProp'\nimport store from 'login/redux/store'\nimport theme from 'ui/themes/app'\nimport Login from './login'\nimport loginActions from 'login/redux/actions/login'\n\nclass App extends Component {\n static displayName = 'BooqableLogin'\n\n render () {\n return (\n \n \n \n \n \n \n \n )\n }\n}\n\nwindow.onload = () => {\n const container = document.getElementById('root')\n\n if (container) {\n // Setup oauth data if present\n let data = container.getAttribute('data')\n\n data = data && JSON.parse(data)\n loginActions.initializeData(data)\n\n const root = createRoot(container)\n const component = React.createElement(App, {})\n\n root.render(component)\n }\n\n // Track pageview\n\n const analytics = window.analytics\n\n analytics && analytics.page && analytics.page()\n}\n","/* global process */\n\nimport * as Sentry from '@sentry/browser'\n\nconst sentryEnvironments = ['production', 'staging', 'feature']\n\nif (sentryEnvironments.includes(window.environment)) {\n Sentry.init({\n dsn: 'https://6c2d907193364be6b2c535b5df7ba868@o45347.ingest.sentry.io/4504763682324480',\n integrations: [Sentry.browserTracingIntegration()],\n environment: window.environment,\n ignoreErrors: [],\n\n release: process.env.PENDING_RELEASE_VERSION || process.env.RELEASE_VERSION,\n tracesSampleRate: parseFloat(process.env.SENTRY_TRACES_SAMPLE_RATE || '0.1')\n })\n}\n","/** A function that accepts a potential \"extra argument\" value to be injected later,\r\n * and returns an instance of the thunk middleware that uses that value\r\n */\nfunction createThunkMiddleware(extraArgument) {\n // Standard Redux middleware definition pattern:\n // See: https://redux.js.org/tutorials/fundamentals/part-4-store#writing-custom-middleware\n var middleware = function middleware(_ref) {\n var dispatch = _ref.dispatch,\n getState = _ref.getState;\n return function (next) {\n return function (action) {\n // The thunk middleware looks for any functions that were passed to `store.dispatch`.\n // If this \"action\" is really a function, call it and return the result.\n if (typeof action === 'function') {\n // Inject the store's `dispatch` and `getState` methods, as well as any \"extra arg\"\n return action(dispatch, getState, extraArgument);\n } // Otherwise, pass the action down the middleware chain as usual\n\n\n return next(action);\n };\n };\n };\n\n return middleware;\n}\n\nvar thunk = createThunkMiddleware(); // Attach the factory function so users can create a customized version\n// with whatever \"extra arg\" they want to inject into their thunks\n\nthunk.withExtraArgument = createThunkMiddleware;\nexport default thunk;"],"names":["require","Promise","config","warnings","onPossiblyUnhandledRejection","error","message","initialState","Record","email","password","passwordValid","companies","List","selectedCompany","source","data","token","force_saml","loginReducer","state","action","type","merge","payload","combineReducers","interface","uiConnectReducer","login","middlewares","thunkMiddleware","middleware","applyMiddleware","window","__REDUX_DEVTOOLS_EXTENSION__","compose","createStore","rootReducer","initializeData","store","dispatch","lookupCompaniesByEmail","url","booqableProtocol","booqableUrl","axios","then","response","selectCompany","company","reset","isAuthenticated","withCredentials","Login","initialEmail","updateUI","ui","t","onChange","onEmailKeypress","onEmailBlur","nextStep","lookupByEmail","useEffect","React","className","name","value","e","onKeyPress","onBlur","autoFocus","loadingCompanies","size","map","selected","slug","key","onClick","style","fontWeight","loadingAuthenticated","Button","block","color","promise","submitPromise","padding","Link","href","displayName","propTypes","PropTypes","isRequired","decoratedComponent","reduxConnect","toJS","mapDispatchToProps","_dispatch","props","signup","LoginActions","getState","params","authenticated_url","Source","provider","Object","keys","encodeURIComponent","join","location","redirectToSignInPage","redirectTo","URL","pathname","forEach","searchParams","set","uri","toString","field","newState","target","saml","employee","redirect","catch","uiConnect","withTranslation","App","Component","static","render","Provider","ThemeProvider","theme","StyleSheetManager","shouldForwardProp","enableVendorPrefixes","onload","container","document","getElementById","getAttribute","JSON","parse","loginActions","root","createRoot","component","analytics","page","includes","environment","Sentry","dsn","integrations","ignoreErrors","release","process","env","PENDING_RELEASE_VERSION","tracesSampleRate","parseFloat","createThunkMiddleware","extraArgument","_ref","next","thunk","withExtraArgument"],"sourceRoot":""}