{"version":3,"file":"js/access-790db1ae8bb89dd6da9f.js","mappings":"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","sources":["webpack://gohiring-mpt/./frontend/bundles/components/common/spinner.js","webpack://gohiring-mpt/./frontend/bundles/components/common/axios.js","webpack://gohiring-mpt/./frontend/bundles/contexts/company_name.js","webpack://gohiring-mpt/./frontend/bundles/contexts/countries.js","webpack://gohiring-mpt/./frontend/bundles/contexts/form.js","webpack://gohiring-mpt/./frontend/bundles/contexts/store.js","webpack://gohiring-mpt/./frontend/bundles/components/common/error_boundary.js","webpack://gohiring-mpt/./frontend/bundles/hoc.js","webpack://gohiring-mpt/./frontend/bundles/lib/jsonapi.js","webpack://gohiring-mpt/./frontend/bundles/lib/helpers/select_unit.js","webpack://gohiring-mpt/./frontend/bundles/lib/use_i18n.js","webpack://gohiring-mpt/./frontend/bundles/react_on_rails.js","webpack://gohiring-mpt/./frontend/bundles/components/access/customer_quote.js","webpack://gohiring-mpt/./frontend/bundles/components/access/style.js","webpack://gohiring-mpt/./frontend/bundles/components/access/wrapper.js","webpack://gohiring-mpt/./frontend/bundles/components/access/no_session.js","webpack://gohiring-mpt/./frontend/bundles/components/access/captcha.js","webpack://gohiring-mpt/./frontend/bundles/components/access/sign_in.js","webpack://gohiring-mpt/./frontend/bundles/components/access/reset_password.js","webpack://gohiring-mpt/./frontend/bundles/components/access/sign_up.js","webpack://gohiring-mpt/./frontend/packs/access.js","webpack://gohiring-mpt/./frontend/bundles/components/access/request_reset_password.js"],"sourcesContent":["import React from 'react';\n\n// https://tobiasahlin.com/spinkit/\nconst Spinner = () => (\n
\n
\n
\n
\n
\n
\n);\n\nexport default Spinner;\n","/* global Rollbar */\n\nimport React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport PropTypes from 'prop-types';\nimport useI18n from '../../lib/use_i18n';\n\nimport Spinner from './spinner';\n\nconst redirectIfNeeded = (resp) => {\n const url = (resp['headers'] || {})['location'];\n if (url) window.location.replace(url);\n};\n\n// A wrapper function around the rest call functions(`action`) that allows additional\n// flexibility in how we handle rest call errors. Most common unhandled errors\n// are 422 outside of the form context (form usually handles the 422 response).\nexport const errorHandleWrapper = async ({ action, getErrorMessage }) => {\n try {\n return await action();\n } catch (error) {\n const errorMessage = getErrorMessage\n ? getErrorMessage(error)\n : error?.response?.data?.error ||\n `HTTP status: ${error?.response?.status}`;\n Flash.alert(errorMessage);\n }\n};\n\nconst handleError = (error, generalError) => {\n const resp = error.response;\n\n // If the request is canceled by user, axios will handle it as an error\n if (error?.code === 'ERR_CANCELED') {\n return Promise.reject(error);\n }\n\n if (resp) {\n const { status, data } = resp;\n\n switch (status) {\n case 401:\n redirectIfNeeded(resp);\n break;\n case 409:\n redirectIfNeeded(resp);\n\n // it is about some conflicts, show it\n Flash.alert(data);\n return Promise.reject(data);\n case 422:\n // it is about validation, allow it to pass\n return Promise.reject(error);\n case 424:\n // an external dependency failed\n return Promise.reject(error);\n\n // don't report it to Rollbar, it is something on the client side, we can do nothing\n default: {\n Flash.alert(generalError);\n\n const errorMsg = `HTTP status: ${status}; Body: ${data}`;\n return Promise.reject(errorMsg);\n }\n }\n } else {\n Flash.alert(generalError);\n Rollbar.error(error);\n\n return Promise.reject(error);\n }\n};\n\n/**\n * Sets settings for Axios (https://github.com/axios/axios),\n * handles errors occurred after getting a response from the backend.\n *\n * If recovery from an error isn't possible, it will show a general server error.\n *\n * Also, it shows a spinner when there are active requests.\n */\nconst Axios = ({ csrfToken, children }) => {\n const { translate } = useI18n('errors');\n const [counter, setCounter] = useState(0);\n\n const decreaseCounter = () => setCounter(counter - 1);\n\n /**\n * This hook adds interceptors to Axios. Some pages have a few components which get rendered\n * independently in Rails views, such components render this component too. When an error\n * occurs every instance of this component receives that error. In case of validation errors\n * there is no big harm besides several re-rendering but if it is a general error, users would\n * see the same error several times (3 independent components = 3 errors). So, only first Axios\n * component should add interceptors and never remove them even if the component is removed\n * from DOM.\n */\n useEffect(() => {\n if (window.axiosHandlersAdded) return;\n\n window.axiosHandlersAdded = true;\n\n const commonHeaders = axios.defaults.headers.common;\n\n commonHeaders['X-CSRF-Token'] = csrfToken;\n commonHeaders['X-Requested-With'] = 'XMLHttpRequest';\n\n axios.interceptors.request.use((config) => {\n setCounter(counter + 1);\n return config;\n });\n\n /**\n * this interceptor processes responses before any other,\n * more about interceptors is here https://github.com/axios/axios#interceptors\n */\n axios.interceptors.response.use(\n (response) => {\n decreaseCounter();\n return response;\n },\n (error) => {\n decreaseCounter();\n return handleError(error, translate('.server'));\n }\n );\n }, []);\n\n return (\n <>\n {children}\n {counter > 0 && }\n \n );\n};\n\nAxios.propTypes = {\n csrfToken: PropTypes.string.isRequired,\n};\n\nexport default Axios;\n","import { createContext } from 'react';\n\n/**\n * Initializes a context for sharing a company name.\n */\nexport const CompanyNameContext = createContext(null);\n","import { createContext } from 'react';\n\n/**\n * Initializes a context for sharing countries between components.\n * More info can be found in https://reactjs.org/docs/context.html\n */\nexport const CountriesContext = createContext([]);\n","import React, { useCallback, useEffect, useState } from 'react';\nimport { createContext } from 'react';\n\n/**\n * Initializes a context for keeping track of 'dirty' forms.\n * Provider will be handled on a top level, by wrapping the\n * top level component with FormContextWrapper.\n * value is supposed to be consumed by the `components/common/form/form.js`\n * value is supposed to be a function that enables form to register itself\n * as dirty/not dirty\n */\nexport const FormContext = createContext();\n\n/**\n * This component is used as a part of the change in the\n * `topLevel` function, see `hoc.js`.\n * we use it to keep track of dirty forms, and prevent the\n * page change if needed\n */\nexport const FormContextWrapper = ({ children }) => {\n const [dirtyForms, setDirtyForms] = useState({});\n const isDirty = Object.values(dirtyForms).some(Boolean);\n\n // a function exposed through FormContext.\n // we wrapp it in the `useCallback` to ensure\n // reffernce stability, thus preventing unecessery\n // re-renders\n const setDirty = useCallback(\n ({ id, isDirty }) => {\n setDirtyForms((oldState) => {\n if (id in oldState && !isDirty) {\n delete oldState[id];\n return { ...oldState };\n } else if (!oldState[id] && isDirty) {\n return { ...oldState, [id]: isDirty };\n }\n return oldState;\n });\n },\n [setDirtyForms]\n );\n\n useEffect(() => {\n if (isDirty) {\n window.onbeforeunload = () => true;\n } else {\n window.onbeforeunload = null;\n }\n }, [isDirty]);\n\n return (\n {children}\n );\n};\n","import { createContext } from 'react';\n\nexport const StateContext = createContext(null);\n\nexport const DispatchContext = createContext(null);\n\n/**\n * StoreProvider component provides state and dispatch contexts to its children.\n * It is designed to work with the useReducer hook, enabling state management\n * through a centralized store.\n *\n * state: from the useReducer hook.\n * dispatch: The dispatch function from useReducer.\n * children: The child components that will have access to the context.\n */\nexport const StoreProvider = ({ state, dispatch, children }) => (\n \n \n {children}\n \n \n);\n","/* global Rollbar */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { injectIntl } from 'react-intl';\n\nimport { translate } from '../../lib/use_i18n';\n\n/**\n * It is a special component which catches exceptions raised while\n * rendering components below this one. Since it isn't possible\n * to recover from an exception (otherwise, it would've been caught\n * and processed somewhere), it shows a general error.\n *\n * More info about this approach can be found here\n * https://reactjs.org/docs/error-boundaries.html\n */\nclass ErrorBoundary extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n error: null,\n errorInfo: null,\n };\n }\n\n componentDidCatch(error, errorInfo) {\n this.setState({\n error: error,\n errorInfo: errorInfo,\n });\n\n console.error(error, errorInfo);\n Rollbar.error(error);\n }\n\n render() {\n if (this.state.errorInfo) {\n return (\n <>\n
\n
\n {translate(this.props.intl, 'errors.general')}\n
\n \n );\n }\n // normally render children\n return this.props.children;\n }\n}\n\nErrorBoundary.propTypes = {\n intl: PropTypes.object.isRequired,\n};\n\nexport default injectIntl(ErrorBoundary);\n","import PropTypes from 'prop-types';\n\nimport { IntlProvider } from 'react-intl';\nimport ErrorBoundary from './components/common/error_boundary';\nimport Axios from './components/common/axios';\nimport { FormContextWrapper } from './contexts';\n\n/**\n * High order components (https://reactjs.org/docs/higher-order-components.html).\n */\n\n/**\n * Sets settings for Axios (https://github.com/axios/axios).\n */\nconst withAxios = (WrappedComponent) => {\n const wrapper = (props) => (\n \n \n \n );\n\n wrapper.displayName = 'withAxios';\n wrapper.propTypes = {\n csrfToken: PropTypes.string.isRequired,\n };\n\n return wrapper;\n};\n\n/**\n * Initializes the intl provider to be used by children.\n */\nconst withIntl = (WrappedComponent) => {\n const wrapper = (props) => {\n const locale = props.locale || props.defaultLocale;\n const translations = window.translations || {};\n\n return (\n \n \n \n );\n };\n\n wrapper.displayName = 'withIntl';\n wrapper.propTypes = {\n locale: PropTypes.string,\n defaultLocale: PropTypes.string.isRequired,\n };\n return wrapper;\n};\n\n/**\n * Adds a global error catcher (https://reactjs.org/docs/error-boundaries.html).\n */\nconst withErrorBoundary = (WrappedComponent) => {\n const wrapper = (props) => (\n \n \n \n );\n\n wrapper.displayName = 'withErrorBoundary';\n\n return wrapper;\n};\n\nconst withFormContext = (WrappedComponent) => {\n const wrapper = (props) => (\n \n \n \n );\n\n wrapper.displayName = 'withFormContext';\n\n return wrapper;\n};\n/**\n * Setups a given component for use in Rails views.\n */\nconst topLevel = (WrappedComponent) => {\n return withIntl(\n withAxios(withErrorBoundary(withFormContext(WrappedComponent)))\n );\n};\n\nexport { withAxios, withIntl, topLevel };\n","/**\n * Helpers for working with errors returned in the JsonAPI format\n * (https://jsonapi.org/examples/#error-objects-multiple-errors).\n */\n\nexport function groupErrorsByFields(errors) {\n return errors.errors.reduce((memo, error) => {\n const field = error.source.pointer.replace('/data/attributes/', '');\n\n if (!memo[field]) memo[field] = [];\n\n memo[field].push(error);\n\n return memo;\n }, {});\n}\n\nexport function concatErrors(errors) {\n if (!errors) return null;\n\n return errors.map((error) => error.detail).join(' ');\n}\n\n/**\n * If an ajax request fails, an exception might be thrown. In most cases, it should be a response\n * with validation errors. However, it might be different network errors too. So, before accessing\n * validation errors, the response must be checked to avoid needless errors in Rollbar. All errors\n * get processed by the Axios component anyway. So, this method ignores all errors beside\n * validation.\n *\n * Mostly, this function is designed for use in an onSubmit callback of FinalForm, see more there\n * https://final-form.org/docs/react-final-form/types/FormProps#1-synchronous\n *\n * Example:\n *\n * handleApiResponse(\n * sendAjaxRequest(),\n * (resp) => { showSuccessMsg(resp); },\n * (errors) => { showErrorMsg(errors); }\n * );\n */\nexport async function handleApiResponse(\n reqPromise,\n successCallback,\n errorCallback\n) {\n errorCallback = errorCallback || (() => {});\n\n try {\n const res = await reqPromise;\n successCallback(res);\n } catch (error) {\n if (error.response && error.response.data) {\n errorCallback(error.response.data);\n\n // return validation errors which will be shown by FinalForm\n return error.response.data;\n } else {\n console.error(error);\n }\n }\n}\n","// extracted from @formatjs/intl-utils which doesn't exist anymore\n\nconst DEFAULT_THRESHOLDS = {\n second: 45,\n minute: 45,\n hour: 22,\n day: 5,\n};\n\nconst MS_PER_SECOND = 1e3;\nconst SECS_PER_MIN = 60;\nconst SECS_PER_HOUR = SECS_PER_MIN * 60;\nconst SECS_PER_DAY = SECS_PER_HOUR * 24;\nconst SECS_PER_WEEK = SECS_PER_DAY * 7;\n\nexport default function selectUnit(from, to, thresholds) {\n if (to === undefined) to = Date.now();\n\n if (thresholds === undefined) thresholds = {};\n\n const resolvedThresholds = Object.assign({}, DEFAULT_THRESHOLDS, thresholds);\n\n const secs = (+from - +to) / MS_PER_SECOND;\n\n if (Math.abs(secs) < resolvedThresholds.second) {\n return { value: Math.round(secs), unit: 'second' };\n }\n\n const mins = secs / SECS_PER_MIN;\n\n if (Math.abs(mins) < resolvedThresholds.minute) {\n return { value: Math.round(mins), unit: 'minute' };\n }\n\n const hours = secs / SECS_PER_HOUR;\n\n if (Math.abs(hours) < resolvedThresholds.hour) {\n return { value: Math.round(hours), unit: 'hour' };\n }\n\n const days = secs / SECS_PER_DAY;\n\n if (Math.abs(days) < resolvedThresholds.day) {\n return { value: Math.round(days), unit: 'day' };\n }\n\n const fromDate = new Date(from);\n const toDate = new Date(to);\n const years = fromDate.getFullYear() - toDate.getFullYear();\n\n if (Math.round(Math.abs(years)) > 0) {\n return { value: Math.round(years), unit: 'year' };\n }\n\n const months = years * 12 + fromDate.getMonth() - toDate.getMonth();\n\n if (Math.round(Math.abs(months)) > 0) {\n return { value: Math.round(months), unit: 'month' };\n }\n\n const weeks = secs / SECS_PER_WEEK;\n\n return { value: Math.round(weeks), unit: 'week' };\n}\n","import { useIntl } from 'react-intl';\nimport selectUnit from './helpers/select_unit';\n\n/**\n * A formatMessage method supplied by react-intl works with objects like this:\n *\n * { id: 'app.actions.edit', defaultMessage: 'Edit' }\n *\n * Usually, this kind of objects could be retrieved from a `intl/default.js` file,\n * however, that file isn't loaded anymore, we load only translations for a certain locale,\n * there aren't missing translations, a Ruby part takes case of providing defaults.\n * So, the method below constructs the mentioned object.\n */\nconst translateWithFormatMsg = (formatMessage, id, opts) => {\n if (window.phraseEnabled) {\n return `{{__phrase_${id}__}}`;\n } else {\n return formatMessage({ id }, opts);\n }\n};\n\n/**\n * Allows for something similar to rails i18n, where a namespace is\n * automatically used for ids beginning with '.'\n */\nconst translateWithNamespace = (namespace, formatMessage, id, opts) => {\n if (id.startsWith('.')) id = `${namespace}${id}`;\n\n return translateWithFormatMsg(formatMessage, id, opts);\n};\n\n/**\n * This method only exists because of components which still inject the intl object via props.\n * Mostly, it is true for class-based components, hooks cannot be used with them.\n */\nconst translate = (intl, id, opts) =>\n translateWithFormatMsg(intl.formatMessage, id, opts);\n\n/**\n * Represents a number with the currency.\n */\nconst numberToCurrency = (formatNumber, number, options) =>\n formatNumber(number, { style: 'currency', currency: 'EUR', ...options });\n\nconst defaultOptions = { year: 'numeric', month: 'short', day: 'numeric' };\n\nconst dateToString = (formatDate, date, options = {}) =>\n formatDate(date, Object.assign({}, defaultOptions, options));\n\n// gets date in format: YYYY-mm-dd\nconst dateInDbFormat = (date) => date.toISOString().substr(0, 10);\n\nconst relativeOrFormatDate = (translate, dateToString, date) => {\n const todayInStr = dateInDbFormat(new Date());\n\n if (date.search(todayInStr) > -1) return translate('app.today');\n\n const yesterdayInStr = dateInDbFormat(\n new Date(new Date().getTime() - 86400 * 1000)\n );\n\n if (date.search(yesterdayInStr) > -1) return translate('app.yesterday');\n\n return dateToString(date);\n};\n\n/**\n * Returns a String representing time in words.\n */\nconst timeToDistance = (formatRelativeTime, date) => {\n const { value, unit } = selectUnit(new Date(date));\n return formatRelativeTime(value, unit);\n};\n\nexport const generateLink = ({ href, text }) =>\n `${text}`;\n\n// we often want to show today/yasterday for recent dates,\n// instead of displaying the date itself.\nconst customRelativeDate = (\n elasticDateFormat,\n formatRelativeTime,\n formatTime,\n { dateString, showTime }\n) => {\n if (!dateString) return;\n\n const time = showTime ? `, ${formatTime(dateString)}` : '';\n const distance = Math.ceil(\n (new Date() - new Date(dateString)) / (86400 * 1000)\n );\n\n const date =\n distance > 2 && distance < 8\n ? formatRelativeTime(distance * -1, 'day')\n : elasticDateFormat(dateString);\n\n return `${date}${time}`;\n};\n\n/**\n * A hook which proxies method calls to react-intl\n * and provides access to the translate method.\n * An optional default namespace can be supplied,\n * which will be prefixed to any given id that starts\n * with the '.' character.\n * Translations can be requested like:\n *\n * let { translate } = useI18n();\n * translate('app.actions.edit')\n *\n * let { translate } = useI18n('app.actions');\n * translate('.edit'); // Evaluates to app.actions.edit\n * translate('no.prefix'); // Evaluates to no.prefix\n *\n * let { formatCurrency } = useI18n();\n * formatCurrency(300) // €300.00\n */\nconst useI18n = (namespace) => {\n const intl = useIntl();\n const {\n formatMessage,\n formatNumber,\n formatRelativeTime,\n formatDate,\n formatTime,\n locale,\n } = intl;\n\n const translate = namespace\n ? translateWithNamespace.bind(null, namespace, formatMessage)\n : translateWithFormatMsg.bind(null, formatMessage);\n\n const formatCurrency = numberToCurrency.bind(null, formatNumber);\n const timeAgo = timeToDistance.bind(null, formatRelativeTime);\n const formattedDate = dateToString.bind(null, formatDate);\n const elasticDateFormat = relativeOrFormatDate.bind(\n null,\n translate,\n formattedDate\n );\n\n const formatRelativeDate = customRelativeDate.bind(\n null,\n elasticDateFormat,\n formatRelativeTime,\n formatTime\n );\n return {\n translate,\n formatNumber,\n formatCurrency,\n formatTime,\n formatRelativeTime,\n formatRelativeDate,\n timeAgo,\n formattedDate,\n elasticDateFormat,\n generateLink,\n locale,\n };\n};\n\nexport default useI18n;\n\nexport { translate };\n","/* eslint-disable no-undef */\n\n// Object.assign is used inside ReactOnRails, IE 11 users suffer without this polyfill\nimport 'core-js/features/object/assign';\n\n// disable React auto-rendering\nwindow.__REACT_ON_RAILS_EVENT_HANDLERS_RAN_ONCE__ = true;\n\n/**\n * ReactOnRails must be included only once, otherwise, it removes registered components\n * from another bundle. More explanation of this problem might be found there\n * https://github.com/shakacode/react_on_rails/issues/991\n */\nwindow.ReactOnRails = window.ReactOnRails || require('react-on-rails').default;\n\n/**\n * Pages might load different bundles with components, it means all components aren't registered\n * right away, React tries to render components once the loading is stopped (see https://bit.ly/34HWLsn).\n * After disabling auto-rendering above, react components must be rendered manually once the DOM is loaded\n * (all components are registered at that time).\n */\nif (!window.reactHandlerAdded) {\n window.reactHandlerAdded = true;\n\n window.addEventListener(\n 'DOMContentLoaded',\n window.ReactOnRails.reactOnRailsPageLoaded\n );\n}\n","import styled from 'styled-components';\nimport useI18n from '../../lib/use_i18n';\nimport { blue, fontSizeL } from '../common/styles/variables';\n\nconst Wrapper = styled.div`\n height: 100%;\n background: ${blue};\n padding: 80px 60px;\n display: flex;\n align-item: center;\n flex-direction: column;\n justify-content: center;\n * {\n color: white;\n text-align: center;\n }\n`;\n\nconst Quote = styled.div`\n font-size: 21px;\n line-height: 35px;\n padding: 24px 0;\n`;\n\nconst Name = styled.div`\n font-size: ${fontSizeL};\n line-height: 21px;\n`;\n\nconst getRandomElement = (array) =>\n array[Math.floor(Math.random() * array.length)];\n\nexport const CUSTOMER_QUOTES = [\n {\n translationKey: 'kutter',\n name: 'Veronika Konrad, Personal bei Kutter GmbH & Co. KG Bauunternehmung',\n },\n {\n translationKey: 'asklepios',\n name: 'Katharina Schroeder, Asklepios Kliniken GmbH & Co. KGaA',\n },\n {\n translationKey: 'apetito',\n name: 'Jana Köning, apetito AG',\n },\n];\n\nexport const CustomerQuote = () => {\n const { translate } = useI18n('customer_quote');\n const { name, translationKey } = getRandomElement(CUSTOMER_QUOTES);\n\n return (\n \n “{translate(`.${translationKey}`)}”\n {name}\n \n );\n};\n","import styled from 'styled-components';\nimport { Flex } from '../common/styles/flex';\nimport { mobileBreakpoint } from '../common/styles/variables';\n\nexport const StyledButton = styled.button`\n width: 100%;\n margin-top: -8px;\n`;\n\nexport const FormWrapper = styled.div`\n padding: 20px 60px;\n`;\n\nexport const ImageWrapper = styled.div`\n img {\n width: 136px;\n margin-bottom: 80px;\n }\n`;\n\nexport const TextWrapper = styled.div`\n h1 {\n font-size: 43px;\n line-height: 56px;\n color: #444;\n }\n div {\n font-size: 18px;\n line-height: 23px;\n }\n margin-bottom: 56px;\n`;\n\nconst FOOTER_HEIGHT = '37px';\nconst MOBILE_FOOTER_HEIGHT = '52px';\nexport const PageWrapper = styled(Flex)`\n height: calc(100vh - ${FOOTER_HEIGHT});\n width: 100vw;\n & > * {\n width: 50%;\n }\n @media (max-width: ${mobileBreakpoint}) {\n flex-direction: column;\n height: calc(100vh - ${MOBILE_FOOTER_HEIGHT});\n & > *:first-child {\n background: white;\n }\n & > *:last-child {\n padding-bottom: 50px;\n }\n & > * {\n width: 100%;\n padding: 10px;\n }\n }\n`;\n","import PropTypes from 'prop-types';\nimport Logo from '../../../images/logo_monochrome.svg';\nimport { CustomerQuote } from './customer_quote';\nimport { FormWrapper, ImageWrapper, PageWrapper, TextWrapper } from './style';\nimport { Notification } from '../common/notification';\n\nexport const Wrapper = ({\n children,\n title,\n subtitle,\n goHiringUrl,\n notificationProps,\n}) => (\n \n \n \n \n \"GOhiring\n \n \n \n

{title}

\n
{subtitle}
\n
\n {notificationProps?.text && (\n \n )}\n {children}\n
\n \n
\n);\n\nWrapper.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.arrayOf(PropTypes.element),\n ]),\n title: PropTypes.string,\n subtitle: PropTypes.string,\n goHiringUrl: PropTypes.string,\n notificationProps: PropTypes.shape({\n ...Notification.propTypes,\n kind: PropTypes.oneOf(['info', 'warning', 'error', 'success']),\n text: PropTypes.string,\n }),\n};\n\nWrapper.defaultProps = {\n goHiringUrl: 'https://gohiring.com',\n};\n","import PropTypes from 'prop-types';\nimport useI18n from '../../lib/use_i18n';\nimport { Notification } from '../common/notification';\nimport { Flex } from '../common/styles/flex';\nimport { Wrapper } from './wrapper';\n\nexport const NoSession = ({\n allowCookiesArticleUrl,\n clientUrl,\n goHiringUrl,\n host,\n notificationProps,\n}) => {\n const { translate } = useI18n('access');\n return (\n \n

{translate('.allow_cookies')}

\n ${host}`,\n }),\n }}\n />\n\n \n {translate('.allow_cookies_link')}\n \n {clientUrl && (\n \n \n {translate('.back_to_recruiting_system')}\n \n \n )}\n \n );\n};\nNoSession.propTypes = {\n allowCookiesArticleUrl: PropTypes.string,\n clientUrl: PropTypes.string,\n goHiringUrl: PropTypes.string,\n host: PropTypes.string,\n notificationProps: PropTypes.shape(Notification.propTypes),\n};\nNoSession.defaultProps = {\n host: window.location.hostname,\n};\n","/* global process */\n\nimport {\n useEffect,\n useRef,\n useImperativeHandle,\n forwardRef,\n React,\n} from 'react';\nimport PropTypes from 'prop-types';\nimport { WidgetInstance } from 'friendly-challenge';\nimport useI18n from '../../lib/use_i18n';\nimport styled from 'styled-components';\n\nconst StyledCaptchaWrapper = styled.div`\n margin-top: 15px;\n`;\n\nconst StyledCaptcha = styled.div`\n width: 314px;\n ${({ error }) => (error ? 'border: 1px solid #e51c23' : '')}\n`;\n\nconst Captcha = forwardRef(\n ({ setCaptchaToken, setCaptchaError, captchaError }, ref) => {\n const widgetRef = useRef();\n const container = useRef();\n const { locale, translate } = useI18n('access.form');\n\n const doneCallback = (solution) => {\n setCaptchaError(false);\n setCaptchaToken(solution);\n };\n\n const errorCallback = () => {\n setCaptchaToken(null);\n widgetRef.current.reset();\n };\n\n const reset = () => {\n if (process.env.FRIENDLY_CAPTCHA_MODE == 'test') {\n return setCaptchaToken('test-token');\n }\n setCaptchaToken(null);\n widgetRef.current.reset();\n };\n\n useImperativeHandle(ref, () => ({\n reset,\n }));\n\n useEffect(() => {\n if (process.env.FRIENDLY_CAPTCHA_MODE == 'test') {\n return setCaptchaToken('test-token');\n }\n\n if (!widgetRef.current && container.current) {\n widgetRef.current = new WidgetInstance(container.current, {\n startMode: 'auto',\n doneCallback: doneCallback,\n errorCallback: errorCallback,\n language: locale,\n });\n }\n\n return () => {\n if (widgetRef.current != undefined) widgetRef.current.reset();\n };\n }, [container]);\n\n return (\n \n \n \n \n \n {captchaError ? translate('.captcha_error') : null}\n \n \n );\n }\n);\n\nCaptcha.propTypes = {\n setCaptchaToken: PropTypes.func,\n setCaptchaError: PropTypes.func,\n captchaError: PropTypes.bool,\n};\n\nCaptcha.displayName = 'Captcha';\n\nexport default Captcha;\n","import { useState, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\nimport { handleApiResponse } from '../../lib/jsonapi';\nimport useI18n from '../../lib/use_i18n';\nimport { signIn } from '../../store';\nimport { CheckboxField, Form, InputField } from '../common/form';\nimport { Flex } from '../common/styles/flex';\nimport { FormRow, RowsWrapper } from '../common/styles/form';\nimport { StyledButton } from './style';\nimport { Wrapper } from './wrapper';\nimport Captcha from './captcha';\n\nconst ResetPassword = styled.a`\n position: absolute;\n right: 0;\n width: fit-content;\n`;\n\nexport const SignIn = ({\n signUpUrl,\n resetPasswordUrl,\n notificationProps,\n goHiringUrl,\n signupEnabled,\n}) => {\n const { translate } = useI18n('access');\n const [captchaToken, setCaptchaToken] = useState(null);\n const [captchaError, setCaptchaError] = useState(false);\n const captchaRef = useRef();\n\n return (\n \n {\n if (captchaToken === null) return setCaptchaError(true);\n\n values['captcha_token'] = captchaToken;\n const errors = await handleApiResponse(\n signIn(values),\n ({ headers }) => window.location.assign(headers?.location)\n );\n\n if (errors) captchaRef.current.reset();\n return errors;\n }}\n >\n {({ handleSubmit }) => {\n return (\n \n \n \n \n \n \n \n {translate('.request_reset_password')}\n \n \n \n \n {translate('.form.login_button')}\n \n \n );\n }}\n \n {signupEnabled && (\n \n {translate('.not_signed_up')}\n {translate('.create_account')}\n \n )}\n \n \n );\n};\n\nSignIn.propTypes = {\n resetPasswordUrl: PropTypes.string,\n signUpUrl: PropTypes.string,\n signupEnabled: PropTypes.bool,\n ...Wrapper.propTypess,\n};\n\nSignIn.defaultProps = {\n resetPasswordUrl: '/resets',\n signUpUrl: '/signup',\n};\n\nexport const SIGN_IN_URL = '/signin';\n","import PropTypes from 'prop-types';\nimport { handleApiResponse } from '../../lib/jsonapi';\nimport useI18n from '../../lib/use_i18n';\nimport { resetPassword } from '../../store';\nimport { removeEmptyKeys } from '../../utils';\nimport { Form, InputField } from '../common/form';\nimport { Notification } from '../common/notification';\nimport { Flex } from '../common/styles/flex';\nimport { FormRow, RowsWrapper } from '../common/styles/form';\nimport { Wrapper } from './wrapper';\nimport { SIGN_IN_URL } from './sign_in';\n\nexport const ResetPassword = ({\n activationToken,\n goHiringUrl,\n url,\n userEmail,\n submitButtonId,\n}) => {\n const { translate } = useI18n('access');\n return (\n \n {userEmail && (\n \n )}\n {\n const errors = await handleApiResponse(\n resetPassword({\n values: removeEmptyKeys({ ...values, token: activationToken }),\n url,\n }),\n ({ headers }) =>\n window.location.assign(headers?.location ?? SIGN_IN_URL)\n );\n return errors;\n }}\n >\n {({ handleSubmit, submitting }) => {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n {\n e.preventDefault();\n handleSubmit();\n }}\n className=\"btn btn-primary\"\n >\n {translate('.form.reset_password')}\n \n \n \n );\n }}\n \n \n );\n};\n\nResetPassword.propTypes = {\n activationToken: PropTypes.string,\n goHiringUrl: PropTypes.string,\n signInUrl: PropTypes.string,\n url: PropTypes.string.isRequired,\n userEmail: PropTypes.string,\n submitButtonId: PropTypes.string,\n};\n","import PropTypes from 'prop-types';\nimport { useState, useRef } from 'react';\nimport { handleApiResponse } from '../../lib/jsonapi';\nimport useI18n from '../../lib/use_i18n';\nimport { signUp } from '../../store';\nimport { CheckboxField, Form, InputField } from '../common/form';\nimport { Flex } from '../common/styles/flex';\nimport { FormRow, RowsWrapper } from '../common/styles/form';\nimport { StyledButton } from './style';\nimport { Wrapper } from './wrapper';\nimport Captcha from './captcha';\n\nexport const SignUp = ({\n goHiringUrl,\n privacyPolicyUrl,\n signInUrl,\n conditionsOfUseUrl,\n}) => {\n const { translate, generateLink } = useI18n('access');\n const [submitted, setSubmitted] = useState(false);\n const titleKey = submitted ? '.sign_up_success_title' : '.sign_up_title';\n const subtitleKey = submitted ? '.sign_up_success_subtitle' : '.subtitle';\n\n const [captchaToken, setCaptchaToken] = useState(null);\n const [captchaError, setCaptchaError] = useState(false);\n const captchaRef = useRef();\n\n return (\n \n {submitted ? (\n {translate('.back_to_login')}\n ) : (\n <>\n {\n if (captchaToken === null) return setCaptchaError(true);\n\n values['captcha_token'] = captchaToken;\n const errors = await handleApiResponse(\n signUp(values),\n ({ status }) => {\n status === 201 && setSubmitted(true);\n }\n );\n\n if (errors) captchaRef.current.reset();\n return errors;\n }}\n >\n {({ handleSubmit }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n passwordConfirmation !== password\n ? translate('.form.password_confirmation.error')\n : undefined\n }\n />\n \n \n }\n />\n \n {translate('.form.register_button')}\n \n \n );\n }}\n \n \n {translate('.have_account')}\n {translate('.back_to_login')}\n {' '}\n \n \n )}\n \n );\n};\n\nSignUp.propTypes = {\n termsOfUseUrl: PropTypes.string,\n privacyPolicyUrl: PropTypes.string,\n signInUrl: PropTypes.string,\n setSubmitted: PropTypes.func,\n};\n\nSignUp.defaultProps = {\n signInUrl: '/signin',\n};\n","import { NoSession } from '../bundles/components/access/no_session';\nimport { RequestResetPassword } from '../bundles/components/access/request_reset_password';\nimport { ResetPassword } from '../bundles/components/access/reset_password';\nimport { SignIn } from '../bundles/components/access/sign_in';\nimport { SignUp } from '../bundles/components/access/sign_up';\nimport { topLevel } from '../bundles/hoc';\nimport '../bundles/react_on_rails';\n\n// This is how react_on_rails can see components in the browser.\nwindow.ReactOnRails.register({\n NoSession: topLevel(NoSession),\n RequestResetPassword: topLevel(RequestResetPassword),\n ResetPassword: topLevel(ResetPassword),\n SignIn: topLevel(SignIn),\n SignUp: topLevel(SignUp),\n});\n","import PropTypes from 'prop-types';\nimport { useState } from 'react';\nimport { handleApiResponse } from '../../lib/jsonapi';\nimport useI18n from '../../lib/use_i18n';\nimport { requestResetPassword } from '../../store';\nimport { Form, InputField } from '../common/form';\nimport { Notification } from '../common/notification';\nimport { Flex } from '../common/styles/flex';\nimport { FormRow, RowsWrapper } from '../common/styles/form';\nimport { Wrapper } from './wrapper';\nimport { SIGN_IN_URL } from './sign_in';\n\nexport const RequestResetPassword = ({ goHiringUrl, notificationProps }) => {\n const [showNotification, setShowNotification] = useState(false);\n const { translate } = useI18n('access');\n return (\n \n {\n const errors = await handleApiResponse(\n requestResetPassword(values),\n () => setShowNotification(true)\n );\n return errors;\n }}\n >\n {({ handleSubmit, submitting }) => {\n return (\n <>\n {showNotification && (\n \n )}\n \n \n \n \n \n \n {\n e.preventDefault();\n handleSubmit(e);\n }}\n className=\"btn btn-primary\"\n >\n {translate('.form.request_reset_password')}\n \n {translate('.back_to_login')}\n \n \n );\n }}\n \n \n );\n};\n\nRequestResetPassword.propTypes = {\n signInUrl: PropTypes.string,\n goHiringUrl: PropTypes.string,\n notificationProps: PropTypes.shape(Notification.propTypes),\n};\n"],"names":["className","role","redirectIfNeeded","resp","url","window","location","replace","errorHandleWrapper","async","action","getErrorMessage","error","errorMessage","response","data","status","Flash","alert","csrfToken","children","translate","useI18n","counter","setCounter","useState","decreaseCounter","useEffect","axiosHandlersAdded","commonHeaders","axios","defaults","headers","common","interceptors","request","use","config","generalError","code","Promise","reject","Rollbar","errorMsg","handleError","CompanyNameContext","createContext","CountriesContext","FormContext","FormContextWrapper","dirtyForms","setDirtyForms","isDirty","Object","values","some","Boolean","setDirty","useCallback","id","oldState","onbeforeunload","Provider","value","StateContext","DispatchContext","StoreProvider","state","dispatch","ErrorBoundary","React","constructor","props","super","this","errorInfo","componentDidCatch","setState","console","render","intl","injectIntl","topLevel","WrappedComponent","wrapper","locale","defaultLocale","translations","messages","displayName","withIntl","A","withAxios","withErrorBoundary","withFormContext","groupErrorsByFields","errors","reduce","memo","field","source","pointer","push","concatErrors","map","detail","join","handleApiResponse","reqPromise","successCallback","errorCallback","DEFAULT_THRESHOLDS","second","minute","hour","day","translateWithFormatMsg","formatMessage","opts","phraseEnabled","translateWithNamespace","namespace","startsWith","numberToCurrency","formatNumber","number","options","style","currency","defaultOptions","year","month","dateToString","formatDate","date","assign","dateInDbFormat","toISOString","substr","relativeOrFormatDate","todayInStr","Date","search","yesterdayInStr","getTime","timeToDistance","formatRelativeTime","unit","from","to","thresholds","undefined","now","resolvedThresholds","secs","Math","abs","round","mins","hours","SECS_PER_MIN","days","SECS_PER_HOUR","fromDate","toDate","years","getFullYear","months","getMonth","weeks","SECS_PER_DAY","selectUnit","generateLink","href","text","customRelativeDate","elasticDateFormat","formatTime","dateString","showTime","time","distance","ceil","useIntl","bind","formatCurrency","timeAgo","formattedDate","formatRelativeDate","__REACT_ON_RAILS_EVENT_HANDLERS_RAN_ONCE__","ReactOnRails","require","reactHandlerAdded","addEventListener","reactOnRailsPageLoaded","Wrapper","styled","div","blue","Quote","Name","fontSizeL","CUSTOMER_QUOTES","translationKey","name","CustomerQuote","array","floor","random","length","StyledButton","button","FormWrapper","ImageWrapper","TextWrapper","PageWrapper","Flex","mobileBreakpoint","title","subtitle","goHiringUrl","notificationProps","rel","target","src","Logo","alt","defaultProps","NoSession","allowCookiesArticleUrl","clientUrl","host","dangerouslySetInnerHTML","__html","marginTop","justifyContent","hostname","StyledCaptchaWrapper","StyledCaptcha","Captcha","forwardRef","ref","setCaptchaToken","setCaptchaError","captchaError","widgetRef","useRef","container","doneCallback","solution","current","reset","useImperativeHandle","WidgetInstance","startMode","language","process","ResetPassword","a","SignIn","signUpUrl","resetPasswordUrl","signupEnabled","captchaToken","captchaRef","onSubmit","signIn","handleSubmit","customMessage","label","required","position","type","onClick","gap","SIGN_IN_URL","SignUp","privacyPolicyUrl","signInUrl","conditionsOfUseUrl","submitted","setSubmitted","titleKey","subtitleKey","signUp","placeholder","validate","passwordConfirmation","password","termsLink","privacyLink","register","RequestResetPassword","showNotification","setShowNotification","requestResetPassword","submitting","kind","alignItems","disabled","e","preventDefault","activationToken","userEmail","submitButtonId","resetPassword","removeEmptyKeys","token"],"sourceRoot":""}